{"version":3,"file":"mocks.mjs","sources":["../src/mocks.ts"],"sourcesContent":["type StubGlobal = (name: PropertyKey, value: unknown) => void;\n\ninterface GlobalMockParams {\n  fn: <T extends (...args: never[]) => unknown>(implementation?: T) => T;\n  stubGlobal?: StubGlobal;\n}\n\nconst defaultStubGlobal: StubGlobal = (name, value) => {\n  Object.defineProperty(globalThis, name, {\n    value,\n    writable: true,\n    enumerable: true,\n    configurable: true,\n  });\n};\n\nexport function mockMatchMedia({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n  stubGlobal(\n    'matchMedia',\n    fn<Window['matchMedia']>((query) => {\n      const matches = /^\\(min-width: (\\d+)px\\)$/u.exec(query);\n      const minWidth = matches != null ? Number(matches[1]) : undefined;\n      return {\n        matches: minWidth != null ? window.innerWidth >= minWidth : false,\n        media: query,\n        onchange: null,\n        addListener: fn(),\n        removeListener: fn(),\n        addEventListener: fn(),\n        removeEventListener: fn(),\n        dispatchEvent: fn(),\n      };\n    }),\n  );\n}\n\nexport function mockResizeObserver({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n  stubGlobal(\n    'ResizeObserver',\n    fn(\n      (): ResizeObserver => ({\n        observe: fn(),\n        unobserve: fn(),\n        disconnect: fn(),\n      }),\n    ),\n  );\n}\n\nexport function mockRequestAnimationFrame() {\n  global.requestAnimationFrame = (callback: (time: number) => void): number => {\n    callback(performance.now());\n    return 0;\n  };\n}\n"],"names":["defaultStubGlobal","name","value","Object","defineProperty","globalThis","writable","enumerable","configurable","mockMatchMedia","fn","stubGlobal","query","matches","exec","minWidth","Number","undefined","window","innerWidth","media","onchange","addListener","removeListener","addEventListener","removeEventListener","dispatchEvent","mockResizeObserver","observe","unobserve","disconnect","mockRequestAnimationFrame","global","requestAnimationFrame","callback","performance","now"],"mappings":"AAOA,MAAMA,iBAAiB,GAAeA,CAACC,IAAI,EAAEC,KAAK,KAAI;AACpDC,EAAAA,MAAM,CAACC,cAAc,CAACC,UAAU,EAAEJ,IAAI,EAAE;IACtCC,KAAK;AACLI,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE;AACf,GAAA,CAAC;AACJ,CAAC;AAEK,SAAUC,cAAcA,CAAC;EAAEC,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACrFW,EAAAA,UAAU,CACR,YAAY,EACZD,EAAE,CAAwBE,KAAK,IAAI;AACjC,IAAA,MAAMC,OAAO,GAAG,2BAA2B,CAACC,IAAI,CAACF,KAAK,CAAC;AACvD,IAAA,MAAMG,QAAQ,GAAGF,OAAO,IAAI,IAAI,GAAGG,MAAM,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAGI,SAAS;IACjE,OAAO;MACLJ,OAAO,EAAEE,QAAQ,IAAI,IAAI,GAAGG,MAAM,CAACC,UAAU,IAAIJ,QAAQ,GAAG,KAAK;AACjEK,MAAAA,KAAK,EAAER,KAAK;AACZS,MAAAA,QAAQ,EAAE,IAAI;MACdC,WAAW,EAAEZ,EAAE,EAAE;MACjBa,cAAc,EAAEb,EAAE,EAAE;MACpBc,gBAAgB,EAAEd,EAAE,EAAE;MACtBe,mBAAmB,EAAEf,EAAE,EAAE;MACzBgB,aAAa,EAAEhB,EAAE;KAClB;AACH,EAAA,CAAC,CAAC,CACH;AACH;AAEM,SAAUiB,kBAAkBA,CAAC;EAAEjB,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACzFW,EAAAA,UAAU,CACR,gBAAgB,EAChBD,EAAE,CACA,OAAuB;IACrBkB,OAAO,EAAElB,EAAE,EAAE;IACbmB,SAAS,EAAEnB,EAAE,EAAE;IACfoB,UAAU,EAAEpB,EAAE;GACf,CAAC,CACH,CACF;AACH;SAEgBqB,yBAAyBA,GAAA;AACvCC,EAAAA,MAAM,CAACC,qBAAqB,GAAIC,QAAgC,IAAY;AAC1EA,IAAAA,QAAQ,CAACC,WAAW,CAACC,GAAG,EAAE,CAAC;AAC3B,IAAA,OAAO,CAAC;EACV,CAAC;AACH;;;;"}