├── .gitignore ├── LICENSE ├── README.md ├── demo ├── .env ├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── public │ ├── 404.html │ ├── CNAME │ ├── favicon │ │ ├── green-grid-144-168-192-180x180.png │ │ ├── green-grid-144-168-192-512x512.png │ │ ├── green-grid-144-168-192.svg │ │ └── site.webmanifest │ └── index.html ├── src │ ├── App.test.tsx │ ├── App.tsx │ ├── index.tsx │ ├── react-app-env.d.ts │ ├── setupTests.ts │ ├── stitches.config.ts │ └── ui │ │ ├── DarkModeButton.tsx │ │ └── Link.tsx └── tsconfig.json ├── package.json ├── src ├── __mocks__ │ ├── maxTouchPointsOne.mock.ts │ ├── maxTouchPointsUndefined.mock.ts │ ├── maxTouchPointsZero.mock.ts │ ├── mqAllFalse.mock.ts │ ├── mqHybridChromebook.mock.ts │ ├── mqHybridPrimaryInputMouse.mock.ts │ ├── mqHybridPrimaryInputTouch.mock.ts │ ├── mqMatchMediaUndefined.mock.ts │ ├── mqMouseOnly.mock.ts │ ├── mqSamsungGalaxyNote.mock.ts │ ├── mqTouchOnly.mock.ts │ ├── onTouchStartInWindowFalse.mock.ts │ ├── onTouchStartInWindowTrue.mock.ts │ ├── passiveEventsFalse.mock.ts │ ├── passiveEventsTrue.mock.ts │ ├── pointerEventInWindowFalse.mock.ts │ ├── pointerEventInWindowTrue.mock.ts │ ├── screen414x896.mock.ts │ ├── screen768x1024.mock.ts │ ├── touchEventInWindowFalse.mock.ts │ ├── touchEventInWindowTrue.mock.ts │ ├── userAgentFirefoxWindows.mock.ts │ ├── userAgentIPad.mock.ts │ ├── userAgentIPhone.mock.ts │ └── userAgentMac.mock.ts ├── __tests__ │ ├── edgeCasesAndLegacyDevices │ │ ├── firefoxWindowsHybrid.test.ts │ │ ├── hybridChrombook.test.ts │ │ ├── hybridDesktopNoOnTouchStartInWindow.test.ts │ │ ├── iPad.test.ts │ │ ├── iPadRequestDesktopSite.test.ts │ │ ├── iPhone.test.ts │ │ ├── iPhoneRequestDesktopSite.test.ts │ │ ├── legacyDesktopComputer.test.ts │ │ ├── legacyTouchDevice.test.ts │ │ ├── microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputMouse.test.ts │ │ ├── microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputTouch.test.ts │ │ ├── mouseOnlyTouchEventInWindow.test.ts │ │ ├── noWindow.test.ts │ │ ├── samsungGalaxyNote.test.ts │ │ ├── touchOnlyNoPointerEvents.test.ts │ │ └── windowsComputerInTabletMode.test.ts │ ├── modernDeviceWithFullSupportForApis │ │ ├── hybridPrimaryInputMouse.test.ts │ │ ├── hybridPrimaryInputTouch.test.ts │ │ ├── mouseOnly.test.ts │ │ └── touchOnly.test.ts │ └── passiveEvents │ │ ├── noPassiveEventSupport.test.ts │ │ └── passiveEventSupport.test.ts └── index.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | coverage 4 | *gitigx* 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/README.md -------------------------------------------------------------------------------- /demo/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/.gitignore -------------------------------------------------------------------------------- /demo/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/LICENSE -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/README.md -------------------------------------------------------------------------------- /demo/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/package-lock.json -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/package.json -------------------------------------------------------------------------------- /demo/public/404.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/404.html -------------------------------------------------------------------------------- /demo/public/CNAME: -------------------------------------------------------------------------------- 1 | detect-it.rafgraph.dev 2 | -------------------------------------------------------------------------------- /demo/public/favicon/green-grid-144-168-192-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/favicon/green-grid-144-168-192-180x180.png -------------------------------------------------------------------------------- /demo/public/favicon/green-grid-144-168-192-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/favicon/green-grid-144-168-192-512x512.png -------------------------------------------------------------------------------- /demo/public/favicon/green-grid-144-168-192.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/favicon/green-grid-144-168-192.svg -------------------------------------------------------------------------------- /demo/public/favicon/site.webmanifest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/favicon/site.webmanifest -------------------------------------------------------------------------------- /demo/public/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/public/index.html -------------------------------------------------------------------------------- /demo/src/App.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/App.test.tsx -------------------------------------------------------------------------------- /demo/src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/App.tsx -------------------------------------------------------------------------------- /demo/src/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/index.tsx -------------------------------------------------------------------------------- /demo/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /demo/src/setupTests.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/setupTests.ts -------------------------------------------------------------------------------- /demo/src/stitches.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/stitches.config.ts -------------------------------------------------------------------------------- /demo/src/ui/DarkModeButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/ui/DarkModeButton.tsx -------------------------------------------------------------------------------- /demo/src/ui/Link.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/src/ui/Link.tsx -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/demo/tsconfig.json -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/package.json -------------------------------------------------------------------------------- /src/__mocks__/maxTouchPointsOne.mock.ts: -------------------------------------------------------------------------------- 1 | Object.defineProperty(window.navigator, 'maxTouchPoints', { 2 | value: 1, 3 | }); 4 | -------------------------------------------------------------------------------- /src/__mocks__/maxTouchPointsUndefined.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/maxTouchPointsUndefined.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/maxTouchPointsZero.mock.ts: -------------------------------------------------------------------------------- 1 | Object.defineProperty(window.navigator, 'maxTouchPoints', { 2 | value: 0, 3 | }); 4 | -------------------------------------------------------------------------------- /src/__mocks__/mqAllFalse.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqAllFalse.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqHybridChromebook.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqHybridChromebook.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqHybridPrimaryInputMouse.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqHybridPrimaryInputMouse.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqHybridPrimaryInputTouch.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqHybridPrimaryInputTouch.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqMatchMediaUndefined.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqMatchMediaUndefined.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqMouseOnly.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqMouseOnly.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqSamsungGalaxyNote.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqSamsungGalaxyNote.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/mqTouchOnly.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/mqTouchOnly.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/onTouchStartInWindowFalse.mock.ts: -------------------------------------------------------------------------------- 1 | delete window.ontouchstart; 2 | -------------------------------------------------------------------------------- /src/__mocks__/onTouchStartInWindowTrue.mock.ts: -------------------------------------------------------------------------------- 1 | Object.defineProperty(window, 'ontouchstart', { 2 | value: jest.fn(), 3 | }); 4 | -------------------------------------------------------------------------------- /src/__mocks__/passiveEventsFalse.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/passiveEventsFalse.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/passiveEventsTrue.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/passiveEventsTrue.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/pointerEventInWindowFalse.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/pointerEventInWindowFalse.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/pointerEventInWindowTrue.mock.ts: -------------------------------------------------------------------------------- 1 | Object.defineProperty(window, 'PointerEvent', { 2 | value: jest.fn(), 3 | }); 4 | -------------------------------------------------------------------------------- /src/__mocks__/screen414x896.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/screen414x896.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/screen768x1024.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/screen768x1024.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/touchEventInWindowFalse.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/touchEventInWindowFalse.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/touchEventInWindowTrue.mock.ts: -------------------------------------------------------------------------------- 1 | Object.defineProperty(window, 'TouchEvent', { 2 | value: jest.fn(), 3 | }); 4 | -------------------------------------------------------------------------------- /src/__mocks__/userAgentFirefoxWindows.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/userAgentFirefoxWindows.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/userAgentIPad.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/userAgentIPad.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/userAgentIPhone.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/userAgentIPhone.mock.ts -------------------------------------------------------------------------------- /src/__mocks__/userAgentMac.mock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__mocks__/userAgentMac.mock.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/firefoxWindowsHybrid.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/firefoxWindowsHybrid.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/hybridChrombook.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/hybridChrombook.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/hybridDesktopNoOnTouchStartInWindow.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/hybridDesktopNoOnTouchStartInWindow.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/iPad.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/iPad.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/iPadRequestDesktopSite.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/iPadRequestDesktopSite.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/iPhone.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/iPhone.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/iPhoneRequestDesktopSite.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/iPhoneRequestDesktopSite.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/legacyDesktopComputer.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/legacyDesktopComputer.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/legacyTouchDevice.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/legacyTouchDevice.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputMouse.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputMouse.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputTouch.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/microsoftHybridWithPointerEventsButNoTouchEventsPrimaryInputTouch.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/mouseOnlyTouchEventInWindow.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/mouseOnlyTouchEventInWindow.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/noWindow.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/noWindow.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/samsungGalaxyNote.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/samsungGalaxyNote.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/touchOnlyNoPointerEvents.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/touchOnlyNoPointerEvents.test.ts -------------------------------------------------------------------------------- /src/__tests__/edgeCasesAndLegacyDevices/windowsComputerInTabletMode.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/edgeCasesAndLegacyDevices/windowsComputerInTabletMode.test.ts -------------------------------------------------------------------------------- /src/__tests__/modernDeviceWithFullSupportForApis/hybridPrimaryInputMouse.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/modernDeviceWithFullSupportForApis/hybridPrimaryInputMouse.test.ts -------------------------------------------------------------------------------- /src/__tests__/modernDeviceWithFullSupportForApis/hybridPrimaryInputTouch.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/modernDeviceWithFullSupportForApis/hybridPrimaryInputTouch.test.ts -------------------------------------------------------------------------------- /src/__tests__/modernDeviceWithFullSupportForApis/mouseOnly.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/modernDeviceWithFullSupportForApis/mouseOnly.test.ts -------------------------------------------------------------------------------- /src/__tests__/modernDeviceWithFullSupportForApis/touchOnly.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/modernDeviceWithFullSupportForApis/touchOnly.test.ts -------------------------------------------------------------------------------- /src/__tests__/passiveEvents/noPassiveEventSupport.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/passiveEvents/noPassiveEventSupport.test.ts -------------------------------------------------------------------------------- /src/__tests__/passiveEvents/passiveEventSupport.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/__tests__/passiveEvents/passiveEventSupport.test.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/src/index.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafgraph/detect-it/HEAD/tsconfig.json --------------------------------------------------------------------------------