From 8002e76191af7c8e7b7c429ae8acbdc2cec8ec76 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 17 Mar 2026 18:48:49 +0100 Subject: [PATCH 1/3] Remove skipLibCheck from tsconfig files --- packages/cheatsheet-local/tsconfig.json | 3 - packages/cheatsheet/package.json | 3 +- .../src/lib/utils/useIsHighlighted.ts | 30 ++- packages/cheatsheet/tsconfig.json | 3 - packages/cursorless-org/tsconfig.json | 6 +- pnpm-lock.yaml | 210 ------------------ 6 files changed, 24 insertions(+), 231 deletions(-) diff --git a/packages/cheatsheet-local/tsconfig.json b/packages/cheatsheet-local/tsconfig.json index dde103acad..13f9279bff 100644 --- a/packages/cheatsheet-local/tsconfig.json +++ b/packages/cheatsheet-local/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "../../tsconfig.web.json", - "compilerOptions": { - "skipLibCheck": true - }, "include": [ "src/**/*.ts", "src/**/*.tsx", diff --git a/packages/cheatsheet/package.json b/packages/cheatsheet/package.json index 3611f73e41..4438cd6ff4 100644 --- a/packages/cheatsheet/package.json +++ b/packages/cheatsheet/package.json @@ -19,8 +19,7 @@ "dependencies": { "@cursorless/common": "workspace:*", "preact": "^10.29.0", - "react-bootstrap-icons": "^1.11.6", - "react-use": "^17.6.0" + "react-bootstrap-icons": "^1.11.6" }, "devDependencies": { "@types/jest": "^30.0.0", diff --git a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts index 4df37467c5..4c29a38b18 100644 --- a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts +++ b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts @@ -1,15 +1,29 @@ -import { useHash } from "react-use"; - -// Check if window is defined (so if in the browser or in node.js). -const isBrowser = typeof window !== "undefined"; +import { useCallback, useEffect, useState } from "preact/hooks"; /** * Returns `true` if the URL hash is equal to the given `id` * @param id The id to match the hash against * @returns Boolean indicating whether the hash matches the given id */ -export default function useIsHighlighted(id: string) { - const [hash, _] = isBrowser ? useHash() : ["", null]; - - return hash.length > 1 && hash.substring(1) === id; +export default function useIsHighlighted(id: string): boolean { + const hash = useHash(); + return hash === `#${id}`; } + +const useHash = () => { + const [hash, setHash] = useState(() => window.location.hash); + + const onHashChange = useCallback(() => { + setHash(window.location.hash); + }, []); + + useEffect(() => { + window.addEventListener("hashchange", onHashChange); + + return () => { + window.removeEventListener("hashchange", onHashChange); + }; + }, []); + + return hash; +}; diff --git a/packages/cheatsheet/tsconfig.json b/packages/cheatsheet/tsconfig.json index dde103acad..13f9279bff 100644 --- a/packages/cheatsheet/tsconfig.json +++ b/packages/cheatsheet/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "../../tsconfig.web.json", - "compilerOptions": { - "skipLibCheck": true - }, "include": [ "src/**/*.ts", "src/**/*.tsx", diff --git a/packages/cursorless-org/tsconfig.json b/packages/cursorless-org/tsconfig.json index 4e63517cbd..13f9279bff 100644 --- a/packages/cursorless-org/tsconfig.json +++ b/packages/cursorless-org/tsconfig.json @@ -1,13 +1,9 @@ { "extends": "../../tsconfig.web.json", - "compilerOptions": { - "skipLibCheck": true - }, "include": [ "src/**/*.ts", "src/**/*.tsx", "src/**/*.json", "../../typings/**/*.d.ts" - ], - "exclude": ["node_modules"] + ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e2a09a62c..875305c490 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,9 +95,6 @@ importers: react-bootstrap-icons: specifier: ^1.11.6 version: 1.11.6(react@19.2.4) - react-use: - specifier: ^17.6.0 - version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) devDependencies: '@types/jest': specifier: ^30.0.0 @@ -4573,9 +4570,6 @@ packages: '@types/jest@30.0.0': resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} - '@types/js-cookie@2.2.7': - resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} - '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -4943,9 +4937,6 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - '@xobotyi/scrollbar-width@1.9.5': - resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} - '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -5759,9 +5750,6 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - copy-webpack-plugin@11.0.0: resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -5842,9 +5830,6 @@ packages: peerDependencies: postcss: ^8.4 - css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - css-loader@6.11.0: resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} @@ -5894,10 +5879,6 @@ packages: css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -6297,9 +6278,6 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} @@ -6611,9 +6589,6 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-shallow-equal@1.0.0: - resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -6628,9 +6603,6 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastest-stable-stringify@2.0.2: - resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} - fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -7189,9 +7161,6 @@ packages: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} - hyphenate-style-name@1.1.0: - resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -7294,9 +7263,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - inline-style-prefixer@7.0.1: - resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -7800,9 +7766,6 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} - js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -8194,9 +8157,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -8530,12 +8490,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nano-css@5.6.2: - resolution: {integrity: sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==} - peerDependencies: - react: '*' - react-dom: '*' - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -9650,18 +9604,6 @@ packages: peerDependencies: react: '>=15' - react-universal-interface@0.6.2: - resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} - peerDependencies: - react: '*' - tslib: '*' - - react-use@17.6.0: - resolution: {integrity: sha512-OmedEScUMKFfzn1Ir8dBxiLLSOzhKe/dPZwVxcujweSj45aNM7BEGPb9BEVIgVEqEXx6f3/TsXzwIktNgUR02g==} - peerDependencies: - react: '*' - react-dom: '*' - react@19.2.4: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} @@ -9837,9 +9779,6 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -9915,9 +9854,6 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - rtl-css-js@1.16.1: - resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} - rtlcss@4.3.0: resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} @@ -10024,10 +9960,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} @@ -10087,10 +10019,6 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - set-harmonic-interval@1.0.1: - resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} - engines: {node: '>=6.9'} - set-proto@1.0.0: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} @@ -10232,10 +10160,6 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -10295,9 +10219,6 @@ packages: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} - stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} - stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -10305,15 +10226,6 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stacktrace-gps@3.1.2: - resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} - - stacktrace-js@2.0.2: - resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} - stacktracey@2.2.0: resolution: {integrity: sha512-ETyQEz+CzXiLjEbyJqpbp+/T79RQD/6wqFucRBIlVNZfYq2Ay7wbretD4cxpbymZlaPWx58aIhPEY1Cr8DlVvg==} @@ -10478,9 +10390,6 @@ packages: engines: {node: '>=20.19.0'} hasBin: true - stylis@4.3.6: - resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -10652,10 +10561,6 @@ packages: peerDependencies: tslib: ^2 - throttle-debounce@3.0.1: - resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} - engines: {node: '>=10'} - thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -10696,9 +10601,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -10755,9 +10657,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-easing@0.2.0: - resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} - ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -16391,8 +16290,6 @@ snapshots: expect: 30.3.0 pretty-format: 30.3.0 - '@types/js-cookie@2.2.7': {} - '@types/js-yaml@4.0.9': {} '@types/jsdom@21.1.7': @@ -16787,8 +16684,6 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@xobotyi/scrollbar-width@1.9.5': {} - '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -17671,10 +17566,6 @@ snapshots: cookie@0.7.2: {} - copy-to-clipboard@3.3.3: - dependencies: - toggle-selection: 1.0.6 - copy-webpack-plugin@11.0.0(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: fast-glob: 3.3.3 @@ -17750,10 +17641,6 @@ snapshots: postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - css-in-js-utils@3.1.0: - dependencies: - hyphenate-style-name: 1.1.0 - css-loader@6.11.0(@rspack/core@1.7.9)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: icss-utils: 5.1.0(postcss@8.5.8) @@ -17801,11 +17688,6 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - css-tree@2.2.1: dependencies: mdn-data: 2.0.28 @@ -18221,10 +18103,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -18723,8 +18601,6 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-shallow-equal@1.0.0: {} - fast-uri@3.1.0: {} fast-xml-builder@1.1.4: @@ -18739,8 +18615,6 @@ snapshots: fastest-levenshtein@1.0.16: {} - fastest-stable-stringify@2.0.2: {} - fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -19446,8 +19320,6 @@ snapshots: hyperdyperid@1.2.0: {} - hyphenate-style-name@1.1.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -19521,10 +19393,6 @@ snapshots: inline-style-parser@0.2.7: {} - inline-style-prefixer@7.0.1: - dependencies: - css-in-js-utils: 3.1.0 - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -20172,8 +20040,6 @@ snapshots: joycon@3.1.1: {} - js-cookie@2.2.1: {} - js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -20687,8 +20553,6 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdn-data@2.0.14: {} - mdn-data@2.0.28: {} mdn-data@2.0.30: {} @@ -21215,19 +21079,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-css@5.6.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - css-tree: 1.1.3 - csstype: 3.2.3 - fastest-stable-stringify: 2.0.2 - inline-style-prefixer: 7.0.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - rtl-css-js: 1.16.1 - stacktrace-js: 2.0.2 - stylis: 4.3.6 - nanoid@3.3.11: {} napi-postinstall@0.3.4: {} @@ -22396,30 +22247,6 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-universal-interface@0.6.2(react@19.2.4)(tslib@2.8.1): - dependencies: - react: 19.2.4 - tslib: 2.8.1 - - react-use@17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): - dependencies: - '@types/js-cookie': 2.2.7 - '@xobotyi/scrollbar-width': 1.9.5 - copy-to-clipboard: 3.3.3 - fast-deep-equal: 3.1.3 - fast-shallow-equal: 1.0.0 - js-cookie: 2.2.1 - nano-css: 5.6.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-universal-interface: 0.6.2(react@19.2.4)(tslib@2.8.1) - resize-observer-polyfill: 1.5.1 - screenfull: 5.2.0 - set-harmonic-interval: 1.0.1 - throttle-debounce: 3.0.1 - ts-easing: 0.2.0 - tslib: 2.8.1 - react@19.2.4: {} read-cmd-shim@4.0.0: {} @@ -22676,8 +22503,6 @@ snapshots: requires-port@1.0.0: {} - resize-observer-polyfill@1.5.1: {} - resolve-alpn@1.2.1: {} resolve-cwd@3.0.0: @@ -22781,10 +22606,6 @@ snapshots: rrweb-cssom@0.8.0: {} - rtl-css-js@1.16.1: - dependencies: - '@babel/runtime': 7.29.2 - rtlcss@4.3.0: dependencies: escalade: 3.2.0 @@ -22890,8 +22711,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.18.0) ajv-keywords: 5.1.0(ajv@8.18.0) - screenfull@5.2.0: {} - search-insights@2.17.3: {} section-matter@1.0.0: @@ -22987,8 +22806,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - set-harmonic-interval@1.0.1: {} - set-proto@1.0.0: dependencies: dunder-proto: 1.0.1 @@ -23153,8 +22970,6 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.6: {} - source-map@0.6.1: {} source-map@0.7.6: {} @@ -23218,29 +23033,12 @@ snapshots: stable-hash-x@0.2.0: {} - stack-generator@2.0.10: - dependencies: - stackframe: 1.3.4 - stack-trace@0.0.10: {} stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - stackframe@1.3.4: {} - - stacktrace-gps@3.1.2: - dependencies: - source-map: 0.5.6 - stackframe: 1.3.4 - - stacktrace-js@2.0.2: - dependencies: - error-stack-parser: 2.1.4 - stack-generator: 2.0.10 - stacktrace-gps: 3.1.2 - stacktracey@2.2.0: dependencies: as-table: 1.0.55 @@ -23450,8 +23248,6 @@ snapshots: - supports-color - typescript - stylis@4.3.6: {} - sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -23617,8 +23413,6 @@ snapshots: dependencies: tslib: 2.8.1 - throttle-debounce@3.0.1: {} - thunky@1.1.0: {} tiktok-video-element@0.1.2: {} @@ -23650,8 +23444,6 @@ snapshots: dependencies: is-number: 7.0.0 - toggle-selection@1.0.6: {} - toidentifier@1.0.1: {} totalist@3.0.1: {} @@ -23695,8 +23487,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-easing@0.2.0: {} - ts-interface-checker@0.1.13: {} ts-jest@29.4.6(@babel/core@7.29.0)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.29.0))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.3.0(@types/node@24.12.0)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.12.0)(typescript@5.9.3)))(typescript@5.9.3): From 18739e81b95545ab0984d695c664a77d3e512a12 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 17 Mar 2026 18:54:49 +0100 Subject: [PATCH 2/3] Restored check for window --- packages/cheatsheet/src/lib/utils/useIsHighlighted.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts index 4c29a38b18..ff01722786 100644 --- a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts +++ b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts @@ -1,11 +1,17 @@ import { useCallback, useEffect, useState } from "preact/hooks"; +// Check if window is defined (so if in the browser or in node.js). +const isBrowser = typeof window !== "undefined"; + /** * Returns `true` if the URL hash is equal to the given `id` * @param id The id to match the hash against * @returns Boolean indicating whether the hash matches the given id */ export default function useIsHighlighted(id: string): boolean { + if (!isBrowser) { + return false; + } const hash = useHash(); return hash === `#${id}`; } From a8ec8b31737df2eeaa8d1152706f78721862123e Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 17 Mar 2026 18:55:22 +0100 Subject: [PATCH 3/3] Clean up --- packages/cheatsheet/src/lib/utils/useIsHighlighted.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts index ff01722786..a849ecba3f 100644 --- a/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts +++ b/packages/cheatsheet/src/lib/utils/useIsHighlighted.ts @@ -9,11 +9,11 @@ const isBrowser = typeof window !== "undefined"; * @returns Boolean indicating whether the hash matches the given id */ export default function useIsHighlighted(id: string): boolean { - if (!isBrowser) { - return false; + if (isBrowser) { + const hash = useHash(); + return hash === `#${id}`; } - const hash = useHash(); - return hash === `#${id}`; + return false; } const useHash = () => {