/**
 * Required setup adapted from https://github.com/radix-ui/primitives/issues/856#issuecomment-928704064
 *
 * Implements a custom PointerEvent that can then be used to trigger the radix dropdown.
 * This is required as JSdom has not implemented the PointerEvent (see https://github.com/testing-library/react-testing-library/issues/838#issuecomment-735259406)
 *
 * Furthermore, ResizeObserver and DomRect are both not available in JSdom (see https://github.com/radix-ui/primitives/issues/856)
 *
 * Effects of this setup file:
 * - sets PointerEvent to window
 * - sets ResizeObserver to window
 * - sets DOMRect to window
 *
 * Needed to interact with dropdown components, with the `clickDropdown` helper.
 */

class PointerEvent extends Event {
  constructor(type, props) {
    super(type, props)
    if (props.button != null) {
      this.button = props.button
    }
    if (props.ctrlKey != null) {
      this.ctrlKey = props.ctrlKey
    }
  }
}

window.PointerEvent = PointerEvent
window.HTMLElement.prototype.scrollIntoView = function () {}

// // https://github.com/radix-ui/primitives/issues/420#issuecomment-771615182
window.ResizeObserver = class ResizeObserver {
  constructor(cb) {
    this.cb = cb
  }
  observe() {}
  unobserve() {}
  disconnect() {}
}
