diff --git a/amnet-web/package-lock.json b/amnet-web/package-lock.json index 0ec3a94..ff6847a 100644 --- a/amnet-web/package-lock.json +++ b/amnet-web/package-lock.json @@ -20,6 +20,7 @@ "amnet-shared": "file:../amnet-shared", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "core-js": "^3.39.0", "detectincognitojs": "^1.3.5", "dexie": "^4.0.8", "dexie-react-hooks": "^1.1.7", @@ -2682,6 +2683,17 @@ "dev": true, "license": "MIT" }, + "node_modules/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", diff --git a/amnet-web/package.json b/amnet-web/package.json index 31ae379..d6b06f3 100644 --- a/amnet-web/package.json +++ b/amnet-web/package.json @@ -22,6 +22,7 @@ "amnet-shared": "file:../amnet-shared", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "core-js": "^3.39.0", "detectincognitojs": "^1.3.5", "dexie": "^4.0.8", "dexie-react-hooks": "^1.1.7", diff --git a/amnet-web/src/hooks/use-media-query.tsx b/amnet-web/src/hooks/use-media-query.tsx index 4b3cbab..a6e4534 100644 --- a/amnet-web/src/hooks/use-media-query.tsx +++ b/amnet-web/src/hooks/use-media-query.tsx @@ -1,19 +1,31 @@ -import * as React from "react" +import * as React from "react"; export function useMediaQuery(query: string) { - const [value, setValue] = React.useState(false) + const [value, setValue] = React.useState(false); React.useEffect(() => { function onChange(event: MediaQueryListEvent) { - setValue(event.matches) + setValue(event.matches); } - const result = matchMedia(query) - result.addEventListener("change", onChange) - setValue(result.matches) + const result = matchMedia(query); - return () => result.removeEventListener("change", onChange) - }, [query]) + // addEventListener isn't available on older versions of safari + if (result.addEventListener) { + result.addEventListener("change", onChange); + } else { + result.addListener(onChange); + } + setValue(result.matches); - return value + return () => { + if (result.removeEventListener) { + result.removeEventListener("change", onChange); + } else { + result.removeListener(onChange); + } + }; + }, [query]); + + return value; } \ No newline at end of file diff --git a/amnet-web/src/main.tsx b/amnet-web/src/main.tsx index 07b5fcd..917499c 100644 --- a/amnet-web/src/main.tsx +++ b/amnet-web/src/main.tsx @@ -1,5 +1,10 @@ import './index.css' +// import polyfills from core-js for older browsers +import 'core-js/actual/promise'; +import 'core-js/actual/symbol'; +import 'core-js/actual/object/assign'; + import {StrictMode} from "react"; import {createRoot} from "react-dom/client"; import {createHashRouter, Navigate, RouterProvider} from "react-router-dom"; diff --git a/amnet-web/tsconfig.app.json b/amnet-web/tsconfig.app.json index ad9aaff..5efd6e9 100644 --- a/amnet-web/tsconfig.app.json +++ b/amnet-web/tsconfig.app.json @@ -1,13 +1,13 @@ { "compilerOptions": { - "target": "ES2019", + "target": "ES2021", "useDefineForClassFields": true, "lib": [ "ES2021", "DOM", "DOM.Iterable" ], - "module": "ES2021", + "module": "ES2020", "skipLibCheck": true, "baseUrl": ".", "paths": { diff --git a/amnet-web/vite.config.ts b/amnet-web/vite.config.ts index 053a0ca..e0bca1c 100644 --- a/amnet-web/vite.config.ts +++ b/amnet-web/vite.config.ts @@ -11,6 +11,7 @@ export default defineConfig({ }, }, build: { + target: "ES2018", rollupOptions: { output: { manualChunks(id: string) { @@ -21,6 +22,10 @@ export default defineConfig({ if (id.includes('react')) { return 'react'; } + + if (id.includes('core-js')) { + return "polyfills"; + } } } }