// modified version of: https://github.com/modosc/global-jsdom/blob/d1dd3cdeeeddd4d0653496a728e0f81e18776654/packages/global-jsdom/esm/index.mjs // @ts-ignore import JSDOM from 'jsdom' const html = '' const jsdom = new JSDOM.JSDOM(html, { // set a default url if we don't get one - otherwise things explode when we // copy localstorage keys url: 'http://localhost:3000', // enable pretendtobevisual by default since react needs // window.requestanimationframe, see https://github.com/jsdom/jsdom#pretending-to-be-a-visual-browser pretendToBeVisual: true, }) const { window } = jsdom const { document } = window const KEYS = Object.getOwnPropertyNames(window).filter((k) => !k.startsWith('_') && !(k in globalThis)) // @ts-ignore KEYS.forEach((key) => (globalThis[key] = window[key])) globalThis.document = document globalThis.window = window window.console = globalThis.console ElementInternals.prototype.setFormValue = () => {} ElementInternals.prototype.setValidity = () => {} // since cant modify the constructor we instantiate states in a getter Object.defineProperty(ElementInternals.prototype, 'states', { get() { if (!this._states) this._states = new Set() return this._states }, })