commit 9d4801e388ea0446609b3ec2c5b43836f69c31e4 Author: monoid Date: Mon Feb 3 02:17:10 2025 +0900 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49053f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Config files +.webextrc +.webextrc.* diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..253ea01 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright (c) 2025 - 2026, monoid + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c85ea29 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Style Copy Browser Extension + +This is a browser extension that allows you to copy the styles of any element on a webpage and paste them into your own CSS. + +This is a work in progress and is not yet available for download. + +## How to use + +Open dev tools and click on an element. Sidebar will open with the styles of the element. Click on the copy button to copy the styles. + +## Motivation + +I wanted to create a tool that would allow me to easily copy the styles of an element on a webpage and paste them into my own CSS. +other tools 'divMagic' and 'CSS Peeper' are great but they are not open source and I wanted to create something that was open source and free to use. + +## Tech Stack + +- React +- TypeScript +- WebExtensions API +- Vite + +## Development + +1. Clone the repository +2. Run `pnpm install` +3. Run `pnpm run dev` to start the development server +4. browser will open with the extension installed diff --git a/package.json b/package.json new file mode 100644 index 0000000..d70b400 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "style-copy-extension", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9", + "@types/webextension-polyfill": "^0.10.0", + "@vitejs/plugin-react": "^4.2.1", + "typescript": "~5.6.3", + "vite": "^5.0.0", + "vite-plugin-web-extension": "^4.0.0", + "webextension-polyfill": "^0.10.0" + }, + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..389ed5e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2766 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.0.26 + version: 18.3.18 + '@types/react-dom': + specifier: ^18.0.9 + version: 18.3.5(@types/react@18.3.18) + '@types/webextension-polyfill': + specifier: ^0.10.0 + version: 0.10.7 + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.3.4(vite@5.4.14(@types/node@22.13.0)) + typescript: + specifier: ~5.6.3 + version: 5.6.3 + vite: + specifier: ^5.0.0 + version: 5.4.14(@types/node@22.13.0) + vite-plugin-web-extension: + specifier: ^4.0.0 + version: 4.4.3(@types/node@22.13.0) + webextension-polyfill: + specifier: ^0.10.0 + version: 0.10.0 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.7': + resolution: {integrity: sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.7': + resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.7': + resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.7': + resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.7': + resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} + engines: {node: '>=6.9.0'} + + '@devicefarmer/adbkit-logcat@2.1.3': + resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==} + engines: {node: '>= 4'} + + '@devicefarmer/adbkit-monkey@1.2.1': + resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==} + engines: {node: '>= 0.10.4'} + + '@devicefarmer/adbkit@3.2.6': + resolution: {integrity: sha512-8lO1hSeTgtxcOHhp4tTWq/JaOysp5KNbbyFoxNEBnwkCDZu/Bji3ZfOaG++Riv9jN6c9bgdLBOZqJTC5VJPRKQ==} + engines: {node: '>= 0.10.4'} + hasBin: true + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + + '@rollup/rollup-android-arm-eabi@4.34.0': + resolution: {integrity: sha512-Eeao7ewDq79jVEsrtWIj5RNqB8p2knlm9fhR6uJ2gqP7UfbLrTrxevudVrEPDM7Wkpn/HpRC2QfazH7MXLz3vQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.0': + resolution: {integrity: sha512-yVh0Kf1f0Fq4tWNf6mWcbQBCLDpDrDEl88lzPgKhrgTcDrTtlmun92ywEF9dCjmYO3EFiSuJeeo9cYRxl2FswA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.0': + resolution: {integrity: sha512-gCs0ErAZ9s0Osejpc3qahTsqIPUDjSKIyxK/0BGKvL+Tn0n3Kwvj8BrCv7Y5sR1Ypz1K2qz9Ny0VvkVyoXBVUQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.0': + resolution: {integrity: sha512-aIB5Anc8hngk15t3GUkiO4pv42ykXHfmpXGS+CzM9CTyiWyT8HIS5ygRAy7KcFb/wiw4Br+vh1byqcHRTfq2tQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.34.0': + resolution: {integrity: sha512-kpdsUdMlVJMRMaOf/tIvxk8TQdzHhY47imwmASOuMajg/GXpw8GKNd8LNwIHE5Yd1onehNpcUB9jHY6wgw9nHQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.0': + resolution: {integrity: sha512-D0RDyHygOBCQiqookcPevrvgEarN0CttBecG4chOeIYCNtlKHmf5oi5kAVpXV7qs0Xh/WO2RnxeicZPtT50V0g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.0': + resolution: {integrity: sha512-mCIw8j5LPDXmCOW8mfMZwT6F/Kza03EnSr4wGYEswrEfjTfVsFOxvgYfuRMxTuUF/XmRb9WSMD5GhCWDe2iNrg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.34.0': + resolution: {integrity: sha512-AwwldAu4aCJPob7zmjuDUMvvuatgs8B/QiVB0KwkUarAcPB3W+ToOT+18TQwY4z09Al7G0BvCcmLRop5zBLTag==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.34.0': + resolution: {integrity: sha512-e7kDUGVP+xw05pV65ZKb0zulRploU3gTu6qH1qL58PrULDGxULIS0OSDQJLH7WiFnpd3ZKUU4VM3u/Z7Zw+e7Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.0': + resolution: {integrity: sha512-SXYJw3zpwHgaBqTXeAZ31qfW/v50wq4HhNVvKFhRr5MnptRX2Af4KebLWR1wpxGJtLgfS2hEPuALRIY3LPAAcA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.0': + resolution: {integrity: sha512-e5XiCinINCI4RdyU3sFyBH4zzz7LiQRvHqDtRe9Dt8o/8hTBaYpdPimayF00eY2qy5j4PaaWK0azRgUench6WQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.0': + resolution: {integrity: sha512-3SWN3e0bAsm9ToprLFBSro8nJe6YN+5xmB11N4FfNf92wvLye/+Rh5JGQtKOpwLKt6e61R1RBc9g+luLJsc23A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.34.0': + resolution: {integrity: sha512-B1Oqt3GLh7qmhvfnc2WQla4NuHlcxAD5LyueUi5WtMc76ZWY+6qDtQYqnxARx9r+7mDGfamD+8kTJO0pKUJeJA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.34.0': + resolution: {integrity: sha512-UfUCo0h/uj48Jq2lnhX0AOhZPSTAq3Eostas+XZ+GGk22pI+Op1Y6cxQ1JkUuKYu2iU+mXj1QjPrZm9nNWV9rg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.0': + resolution: {integrity: sha512-chZLTUIPbgcpm+Z7ALmomXW8Zh+wE2icrG+K6nt/HenPLmtwCajhQC5flNSk1Xy5EDMt/QAOz2MhzfOfJOLSiA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.0': + resolution: {integrity: sha512-jo0UolK70O28BifvEsFD/8r25shFezl0aUk2t0VJzREWHkq19e+pcLu4kX5HiVXNz5qqkD+aAq04Ct8rkxgbyQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.0': + resolution: {integrity: sha512-Vmg0NhAap2S54JojJchiu5An54qa6t/oKT7LmDaWggpIcaiL8WcWHEN6OQrfTdL6mQ2GFyH7j2T5/3YPEDOOGA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.34.0': + resolution: {integrity: sha512-CV2aqhDDOsABKHKhNcs1SZFryffQf8vK2XrxP6lxC99ELZAdvsDgPklIBfd65R8R+qvOm1SmLaZ/Fdq961+m7A==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.0': + resolution: {integrity: sha512-g2ASy1QwHP88y5KWvblUolJz9rN+i4ZOsYzkEwcNfaNooxNUXG+ON6F5xFo0NIItpHqxcdAyls05VXpBnludGw==} + cpu: [x64] + os: [win32] + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/node@22.13.0': + resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + + '@types/webextension-polyfill@0.10.7': + resolution: {integrity: sha512-10ql7A0qzBmFB+F+qAke/nP1PIonS0TXZAOMVOxEUsm+lGSW6uwVcISFNa0I4Oyj0884TZVWGGMIWeXOVSNFHw==} + + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + array-differ@4.0.0: + resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + array-union@3.0.1: + resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} + engines: {node: '>=12'} + + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bunyan@1.8.15: + resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} + engines: {'0': node >=0.10.0} + hasBin: true + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-lite@1.0.30001696: + resolution: {integrity: sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + chrome-launcher@1.1.0: + resolution: {integrity: sha512-rJYWeEAERwWIr3c3mEVXwNiODPEdMRlRxHc47B1qHPOolHZnkj7rMv1QSUfPoG6MgatWj5AxSpnKKR4QEwEQIQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + commander@2.9.0: + resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==} + engines: {node: '>= 0.6.x'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + + dtrace-provider@0.8.8: + resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} + engines: {node: '>=0.10'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.90: + resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + firefox-profile@4.6.0: + resolution: {integrity: sha512-I9rAm1w8U3CdhgO4EzTJsCvgcbvynZn9lOySkZf78wUdUIQH2w9QOKf3pAX+THt2XMSSR3kJSuM8P7bYux9j8g==} + hasBin: true + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@9.0.1: + resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==} + engines: {node: '>=10'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fx-runner@1.4.0: + resolution: {integrity: sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg==} + hasBin: true + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + deprecated: Glob versions prior to v9 are no longer supported + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graceful-readlink@1.0.1: + resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} + + growly@1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + + has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + is-absolute@0.1.7: + resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==} + engines: {node: '>=0.10.0'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} + + is-relative@0.1.3: + resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} + engines: {node: '>=0.10.0'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@1.1.2: + resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lighthouse-logger@2.0.1: + resolution: {integrity: sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + linkedom@0.14.26: + resolution: {integrity: sha512-mK6TrydfFA7phrnp+1j57ycBwFI5bGSW6YXlw9acHoqF+mP/y+FooEYYyniOt5Ot57FSKB3iwmnuQ1UUyNLm5A==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multimatch@6.0.0: + resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.22.0: + resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-notifier@10.0.1: + resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + os-shim@0.1.3: + resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} + engines: {node: '>= 0.4.0'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + engines: {node: ^10 || ^12 || >=14} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-toolbox@0.21.0: + resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} + engines: {node: '>=6'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + registry-auth-token@5.0.3: + resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.34.0: + resolution: {integrity: sha512-+4C/cgJ9w6sudisA0nZz0+O7lTP9a3CzNLsoDwaRumM8QHwghUsu6tqHXiTmNUp/rqNiM14++7dkzHDyCRs0Jg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.0: + resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==} + engines: {node: '>=10'} + hasBin: true + + set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + shell-quote@1.7.3: + resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} + + shellwords@0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spawn-sync@1.0.15: + resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==} + + split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@5.0.0: + resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + uhyphen@0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + + universalify@1.0.0: + resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} + engines: {node: '>= 10.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vite-plugin-web-extension@4.4.3: + resolution: {integrity: sha512-xOQR4o5bfxnZDlVxDYoK/aZO9Tt92CItaGybrKC41rl218Of5fsLDQDYR95rQd2wg8DnT8R9CEheQ++lmP+Euw==} + engines: {node: '>=16'} + + vite@5.4.14: + resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + web-ext-option-types@8.3.1: + resolution: {integrity: sha512-mKG1fplVXMKYaEeSs35v/x9YIx7FJJDCBQNoLoMvUXeFck0rNC2qnHsYaRnVXXd1XL7o/hz+5+T7YqpTVyEK3w==} + + web-ext-run@0.2.2: + resolution: {integrity: sha512-GD59q5/1wYQJXTHrljMZaBa3cCz+Jj3FMDLYgKyAa34TPcHSuMaGqp7TcLJ66PCe43C3hmbEAZd8QCpAB34eiw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + when@3.7.7: + resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} + + which@1.2.4: + resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + winreg@0.0.12: + resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + + zip-dir@2.0.0: + resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.5': {} + + '@babel/core@7.26.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) + '@babel/helpers': 7.26.7 + '@babel/parser': 7.26.7 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.5': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.7': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.7 + + '@babel/parser@7.26.7': + dependencies: + '@babel/types': 7.26.7 + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/runtime@7.24.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + + '@babel/traverse@7.26.7': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.7 + '@babel/template': 7.25.9 + '@babel/types': 7.26.7 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.7': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@devicefarmer/adbkit-logcat@2.1.3': {} + + '@devicefarmer/adbkit-monkey@1.2.1': {} + + '@devicefarmer/adbkit@3.2.6': + dependencies: + '@devicefarmer/adbkit-logcat': 2.1.3 + '@devicefarmer/adbkit-monkey': 1.2.1 + bluebird: 3.7.2 + commander: 9.5.0 + debug: 4.3.7 + node-forge: 1.3.1 + split: 1.0.1 + transitivePeerDependencies: + - supports-color + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@rollup/rollup-android-arm-eabi@4.34.0': + optional: true + + '@rollup/rollup-android-arm64@4.34.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.0': + optional: true + + '@rollup/rollup-darwin-x64@4.34.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.0': + optional: true + + '@sindresorhus/is@5.6.0': {} + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.7 + + '@types/estree@1.0.6': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/minimatch@3.0.5': {} + + '@types/node@22.13.0': + dependencies: + undici-types: 6.20.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.5(@types/react@18.3.18)': + dependencies: + '@types/react': 18.3.18 + + '@types/react@18.3.18': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/webextension-polyfill@0.10.7': {} + + '@vitejs/plugin-react@4.3.4(vite@5.4.14(@types/node@22.13.0))': + dependencies: + '@babel/core': 7.26.7 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.14(@types/node@22.13.0) + transitivePeerDependencies: + - supports-color + + adm-zip@0.5.16: {} + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + array-differ@4.0.0: {} + + array-union@3.0.1: {} + + async-lock@1.4.1: {} + + async@3.2.6: {} + + at-least-node@1.0.0: {} + + balanced-match@1.0.2: {} + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.4.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001696 + electron-to-chromium: 1.5.90 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + buffer-from@1.1.2: {} + + bunyan@1.8.15: + optionalDependencies: + dtrace-provider: 0.8.8 + moment: 2.30.1 + mv: 2.1.1 + safe-json-stringify: 1.2.0 + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + + camelcase@7.0.1: {} + + caniuse-lite@1.0.30001696: {} + + chalk@5.4.1: {} + + charenc@0.0.2: {} + + chrome-launcher@1.1.0: + dependencies: + '@types/node': 22.13.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 2.0.1 + transitivePeerDependencies: + - supports-color + + ci-info@3.9.0: {} + + cli-boxes@3.0.0: {} + + commander@2.9.0: + dependencies: + graceful-readlink: 1.0.1 + + commander@9.5.0: {} + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@6.0.0: + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + + convert-source-map@2.0.0: {} + + core-util-is@1.0.3: {} + + crypt@0.0.2: {} + + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-what@6.1.0: {} + + cssom@0.5.0: {} + + csstype@3.1.3: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-extend@0.6.0: {} + + defer-to-connect@2.0.1: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@6.0.1: + dependencies: + is-obj: 2.0.0 + + dtrace-provider@0.8.8: + dependencies: + nan: 2.22.0 + optional: true + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.90: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es6-error@4.1.1: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escape-goat@4.0.0: {} + + escape-string-regexp@4.0.0: {} + + fast-deep-equal@3.1.3: {} + + fast-uri@3.0.6: {} + + firefox-profile@4.6.0: + dependencies: + adm-zip: 0.5.16 + fs-extra: 9.0.1 + ini: 2.0.0 + minimist: 1.2.8 + xml2js: 0.5.0 + + form-data-encoder@2.1.4: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@9.0.1: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 1.0.0 + + fsevents@2.3.3: + optional: true + + fx-runner@1.4.0: + dependencies: + commander: 2.9.0 + shell-quote: 1.7.3 + spawn-sync: 1.0.15 + when: 3.7.7 + which: 1.2.4 + winreg: 0.0.12 + + gensync@1.0.0-beta.2: {} + + get-stream@6.0.1: {} + + glob-to-regexp@0.4.1: {} + + glob@6.0.4: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + optional: true + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + globals@11.12.0: {} + + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + graceful-readlink@1.0.1: {} + + growly@1.3.0: {} + + has-yarn@3.0.0: {} + + html-escaper@3.0.3: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-cache-semantics@4.1.1: {} + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + immediate@3.0.6: {} + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + optional: true + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + is-absolute@0.1.7: + dependencies: + is-relative: 0.1.3 + + is-arrayish@0.2.1: {} + + is-buffer@1.1.6: {} + + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + + is-docker@2.2.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + is-npm@6.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-primitive@3.0.1: {} + + is-relative@0.1.3: {} + + is-typedarray@1.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-yarn-global@0.4.1: {} + + isarray@1.0.0: {} + + isexe@1.1.2: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@3.0.2: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + latest-version@7.0.0: + dependencies: + package-json: 8.1.1 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lighthouse-logger@2.0.1: + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + + lines-and-columns@2.0.4: {} + + linkedom@0.14.26: + dependencies: + css-select: 5.1.0 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 8.0.2 + uhyphen: 0.2.0 + + lodash.uniq@4.5.0: {} + + lodash.uniqby@4.7.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lowercase-keys@3.0.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + make-error@1.3.6: {} + + marky@1.2.5: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + optional: true + + mkdirp@3.0.1: {} + + moment@2.30.1: + optional: true + + ms@2.0.0: {} + + ms@2.1.3: {} + + multimatch@6.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 4.0.0 + array-union: 3.0.1 + minimatch: 3.1.2 + + mv@2.1.1: + dependencies: + mkdirp: 0.5.6 + ncp: 2.0.0 + rimraf: 2.4.5 + optional: true + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.22.0: + optional: true + + nanoid@3.3.8: {} + + ncp@2.0.0: + optional: true + + node-forge@1.3.1: {} + + node-notifier@10.0.1: + dependencies: + growly: 1.3.0 + is-wsl: 2.2.0 + semver: 7.7.0 + shellwords: 0.1.1 + uuid: 8.3.2 + which: 2.0.2 + + node-releases@2.0.19: {} + + normalize-url@8.0.1: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + optional: true + + os-shim@0.1.3: {} + + p-cancelable@3.0.0: {} + + package-json@8.1.1: + dependencies: + got: 12.6.1 + registry-auth-token: 5.0.3 + registry-url: 6.0.1 + semver: 7.7.0 + + pako@1.0.11: {} + + parse-json@7.1.1: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.2 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + + path-is-absolute@1.0.1: + optional: true + + picocolors@1.1.1: {} + + postcss@8.5.1: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + process-nextick-args@2.0.1: {} + + promise-toolbox@0.21.0: + dependencies: + make-error: 1.3.6 + + proto-list@1.2.4: {} + + pupa@3.1.0: + dependencies: + escape-goat: 4.0.0 + + quick-lru@5.1.1: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + regenerator-runtime@0.14.1: {} + + registry-auth-token@5.0.3: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + require-from-string@2.0.2: {} + + resolve-alpn@1.2.1: {} + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + rimraf@2.4.5: + dependencies: + glob: 6.0.4 + optional: true + + rollup@4.34.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.0 + '@rollup/rollup-android-arm64': 4.34.0 + '@rollup/rollup-darwin-arm64': 4.34.0 + '@rollup/rollup-darwin-x64': 4.34.0 + '@rollup/rollup-freebsd-arm64': 4.34.0 + '@rollup/rollup-freebsd-x64': 4.34.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.0 + '@rollup/rollup-linux-arm-musleabihf': 4.34.0 + '@rollup/rollup-linux-arm64-gnu': 4.34.0 + '@rollup/rollup-linux-arm64-musl': 4.34.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.0 + '@rollup/rollup-linux-riscv64-gnu': 4.34.0 + '@rollup/rollup-linux-s390x-gnu': 4.34.0 + '@rollup/rollup-linux-x64-gnu': 4.34.0 + '@rollup/rollup-linux-x64-musl': 4.34.0 + '@rollup/rollup-win32-arm64-msvc': 4.34.0 + '@rollup/rollup-win32-ia32-msvc': 4.34.0 + '@rollup/rollup-win32-x64-msvc': 4.34.0 + fsevents: 2.3.3 + + safe-buffer@5.1.2: {} + + safe-json-stringify@1.2.0: + optional: true + + sax@1.4.1: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver-diff@4.0.0: + dependencies: + semver: 7.7.0 + + semver@6.3.1: {} + + semver@7.7.0: {} + + set-value@4.1.0: + dependencies: + is-plain-object: 2.0.4 + is-primitive: 3.0.1 + + setimmediate@1.0.5: {} + + shell-quote@1.7.3: {} + + shellwords@0.1.1: {} + + signal-exit@3.0.7: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + spawn-sync@1.0.15: + dependencies: + concat-stream: 1.6.2 + os-shim: 0.1.3 + + split@1.0.1: + dependencies: + through: 2.3.8 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@5.0.0: {} + + strip-json-comments@2.0.1: {} + + strip-json-comments@5.0.1: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tmp@0.2.3: {} + + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + + type-fest@3.13.1: {} + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typedarray@0.0.6: {} + + typescript@5.6.3: {} + + uhyphen@0.2.0: {} + + undici-types@6.20.0: {} + + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + + universalify@1.0.0: {} + + universalify@2.0.1: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@6.0.2: + dependencies: + boxen: 7.1.1 + chalk: 5.4.1 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.7.0 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + vite-plugin-web-extension@4.4.3(@types/node@22.13.0): + dependencies: + ajv: 8.17.1 + async-lock: 1.4.1 + fs-extra: 10.1.0 + json5: 2.2.3 + linkedom: 0.14.26 + lodash.uniq: 4.5.0 + lodash.uniqby: 4.7.0 + md5: 2.3.0 + vite: 5.4.14(@types/node@22.13.0) + web-ext-option-types: 8.3.1 + web-ext-run: 0.2.2 + webextension-polyfill: 0.10.0 + yaml: 2.7.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - utf-8-validate + + vite@5.4.14(@types/node@22.13.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.1 + rollup: 4.34.0 + optionalDependencies: + '@types/node': 22.13.0 + fsevents: 2.3.3 + + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + web-ext-option-types@8.3.1: {} + + web-ext-run@0.2.2: + dependencies: + '@babel/runtime': 7.24.7 + '@devicefarmer/adbkit': 3.2.6 + bunyan: 1.8.15 + chrome-launcher: 1.1.0 + debounce: 1.2.1 + es6-error: 4.1.1 + firefox-profile: 4.6.0 + fs-extra: 11.2.0 + fx-runner: 1.4.0 + mkdirp: 3.0.1 + multimatch: 6.0.0 + mz: 2.7.0 + node-notifier: 10.0.1 + parse-json: 7.1.1 + promise-toolbox: 0.21.0 + set-value: 4.1.0 + source-map-support: 0.5.21 + strip-bom: 5.0.0 + strip-json-comments: 5.0.1 + tmp: 0.2.3 + update-notifier: 6.0.2 + watchpack: 2.4.1 + ws: 8.18.0 + zip-dir: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + webextension-polyfill@0.10.0: {} + + when@3.7.7: {} + + which@1.2.4: + dependencies: + is-absolute: 0.1.7 + isexe: 1.1.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + winreg@0.0.12: {} + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: + optional: true + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@8.18.0: {} + + xdg-basedir@5.1.0: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + yallist@3.1.1: {} + + yaml@2.7.0: {} + + zip-dir@2.0.0: + dependencies: + async: 3.2.6 + jszip: 3.10.1 diff --git a/public/icon-with-shadow.svg b/public/icon-with-shadow.svg new file mode 100644 index 0000000..9a36a6f --- /dev/null +++ b/public/icon-with-shadow.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icon/128.png b/public/icon/128.png new file mode 100644 index 0000000..53e9353 Binary files /dev/null and b/public/icon/128.png differ diff --git a/public/icon/16.png b/public/icon/16.png new file mode 100644 index 0000000..3fe3674 Binary files /dev/null and b/public/icon/16.png differ diff --git a/public/icon/32.png b/public/icon/32.png new file mode 100644 index 0000000..d1063e5 Binary files /dev/null and b/public/icon/32.png differ diff --git a/public/icon/48.png b/public/icon/48.png new file mode 100644 index 0000000..6c5e5e1 Binary files /dev/null and b/public/icon/48.png differ diff --git a/public/icon/96.png b/public/icon/96.png new file mode 100644 index 0000000..c71c80e Binary files /dev/null and b/public/icon/96.png differ diff --git a/src/background.ts b/src/background.ts new file mode 100644 index 0000000..9b58f83 --- /dev/null +++ b/src/background.ts @@ -0,0 +1,33 @@ +import browser from "webextension-polyfill"; + +console.log("Hello from the background!"); + +browser.runtime.onInstalled.addListener((details) => { + console.log("Extension installed:", details); + console.log("undefined",document); +}); + +browser.runtime.onMessage.addListener((message, sender, sendResponse) => { + console.log("Got message", message); + if (message.type === "fetch") { + return ( async () => { + const response = await fetch(message.url); + if (!response.ok) { + console.error(`Failed to fetch: ${response.statusText}`); + throw new Error(`Failed to fetch: ${response.statusText}`); + } + if ( message.resType === "text" ) { + const text = await response.text(); + return text; + } + else if ( message.resType === "json" ) { + const json = await response.json(); + return json; + } + else if ( message.resType === "array" ) { + const array = await response.arrayBuffer(); + return array; + } + })(); + } +}); \ No newline at end of file diff --git a/src/content.ts b/src/content.ts new file mode 100644 index 0000000..24dd8a2 --- /dev/null +++ b/src/content.ts @@ -0,0 +1,54 @@ +import { cloneWithStyle, getInheritedStyle, styleFromCSSStyleRule } from "./lib/extract"; +import browser from "webextension-polyfill"; + +console.log("Hello from content!"); + +browser.runtime.onMessage.addListener((event, sender, sendResponse) => { + console.log("Got message", event); + if (event.type != "cloneWithStyle") { + return; + } + console.log("Cloning with style"); + const { elementSelector, id } = event; + try { + const element = document.querySelector(elementSelector) as HTMLElement; + if (!element) { + console.error("Element not found"); + return; + } + return cloneWithStyle(element).then((vnode) => { + const inheritedStyle = getInheritedStyle(element); + const ret = { + type: "cloneWithStyleResult", + vnode, + inheritedStyle, + id + }; + console.log("Sending response", ret); + return (ret); + }); + } + catch (e) { + console.error("Error cloning with style", e); + } +}); + +// const functionCallTable = { +// cloneWithStyle, +// styleFromCSSStyleRule +// } as any; +// window.addEventListener("message", async (event) => { +// if (event.source !== window) { +// return; +// } +// if (event.data.type !== "functionCall") { +// return; +// } +// const { functionName, args, id } = event.data; +// if (!functionCallTable[functionName]) { +// console.error(`Function ${functionName} not found`); +// return; +// } +// const result = await functionCallTable[functionName](...args); +// window.postMessage({ type: "functionCallResult", result, id }, "*"); +// }); \ No newline at end of file diff --git a/src/devtools.html b/src/devtools.html new file mode 100644 index 0000000..5515750 --- /dev/null +++ b/src/devtools.html @@ -0,0 +1,13 @@ + + + + + + DevTools + + +
+ test + + + \ No newline at end of file diff --git a/src/devtools.ts b/src/devtools.ts new file mode 100644 index 0000000..9781995 --- /dev/null +++ b/src/devtools.ts @@ -0,0 +1,7 @@ +import browser from "webextension-polyfill"; + + +console.log("Hello from devtools!"); +browser.devtools.panels.elements.createSidebarPane("My Sidebar").then((sidebar) => { + sidebar.setPage("src/sidebar.html"); +}); \ No newline at end of file diff --git a/src/lib/CSSPropertiesDefaultValue.ts b/src/lib/CSSPropertiesDefaultValue.ts new file mode 100644 index 0000000..90ebdfe --- /dev/null +++ b/src/lib/CSSPropertiesDefaultValue.ts @@ -0,0 +1,388 @@ +// Chrome default css properties +// TODO: Firefox, Edge, Safari, Opera, etc. +export const cssPropertiesDefault = { + "accent-color": "auto", + "align-content": "normal", + "align-items": "normal", + "align-self": "auto", + "alignment-baseline": "auto", + "anchor-name": "none", + "anchor-scope": "none", + "animation-composition": "replace", + "animation-delay": "0s", + "animation-direction": "normal", + "animation-duration": "0s", + "animation-fill-mode": "none", + "animation-iteration-count": "1", + "animation-name": "none", + "animation-play-state": "running", + "animation-range-end": "normal", + "animation-range-start": "normal", + "animation-timeline": "auto", + "animation-timing-function": "ease", + "app-region": "none", + "appearance": "none", + "backdrop-filter": "none", + "backface-visibility": "visible", + "background-attachment": "scroll", + "background-blend-mode": "normal", + "background-clip": "border-box", + "background-color": "rgba(0, 0, 0, 0)", + "background-image": "none", + "background-origin": "padding-box", + "background-position": "0% 0%", + "background-repeat": "repeat", + "background-size": "auto", + "baseline-shift": "0px", + "baseline-source": "auto", + "block-size": "0px", + "border-block-end-color": "rgb(0, 0, 0)", + "border-block-end-style": "none", + "border-block-end-width": "0px", + "border-block-start-color": "rgb(0, 0, 0)", + "border-block-start-style": "none", + "border-block-start-width": "0px", + "border-bottom-color": "rgb(0, 0, 0)", + "border-bottom-left-radius": "0px", + "border-bottom-right-radius": "0px", + "border-bottom-style": "none", + "border-bottom-width": "0px", + "border-collapse": "separate", + "border-end-end-radius": "0px", + "border-end-start-radius": "0px", + "border-image-outset": "0", + "border-image-repeat": "stretch", + "border-image-slice": "100%", + "border-image-source": "none", + "border-image-width": "1", + "border-inline-end-color": "rgb(0, 0, 0)", + "border-inline-end-style": "none", + "border-inline-end-width": "0px", + "border-inline-start-color": "rgb(0, 0, 0)", + "border-inline-start-style": "none", + "border-inline-start-width": "0px", + "border-left-color": "rgb(0, 0, 0)", + "border-left-style": "none", + "border-left-width": "0px", + "border-right-color": "rgb(0, 0, 0)", + "border-right-style": "none", + "border-right-width": "0px", + "border-start-end-radius": "0px", + "border-start-start-radius": "0px", + "border-top-color": "rgb(0, 0, 0)", + "border-top-left-radius": "0px", + "border-top-right-radius": "0px", + "border-top-style": "none", + "border-top-width": "0px", + "bottom": "auto", + "box-decoration-break": "slice", + "box-shadow": "none", + "box-sizing": "content-box", + "break-after": "auto", + "break-before": "auto", + "break-inside": "auto", + "buffered-rendering": "auto", + "caption-side": "top", + "caret-color": "rgb(0, 0, 0)", + "clear": "none", + "clip": "auto", + "clip-path": "none", + "clip-rule": "nonzero", + "color": "rgb(0, 0, 0)", + "color-interpolation": "srgb", + "color-interpolation-filters": "linearrgb", + "color-rendering": "auto", + "column-count": "auto", + "column-gap": "normal", + "column-rule-color": "rgb(0, 0, 0)", + "column-rule-style": "none", + "column-rule-width": "0px", + "column-span": "none", + "column-width": "auto", + "contain-intrinsic-block-size": "none", + "contain-intrinsic-height": "none", + "contain-intrinsic-inline-size": "none", + "contain-intrinsic-size": "none", + "contain-intrinsic-width": "none", + "container-name": "none", + "container-type": "normal", + "content": "normal", + "cursor": "auto", + "cx": "0px", + "cy": "0px", + "d": "none", + "direction": "ltr", + "display": "block", + "dominant-baseline": "auto", + "empty-cells": "show", + "field-sizing": "fixed", + "fill": "rgb(0, 0, 0)", + "fill-opacity": "1", + "fill-rule": "nonzero", + "filter": "none", + "flex-basis": "auto", + "flex-direction": "row", + "flex-grow": "0", + "flex-shrink": "1", + "flex-wrap": "nowrap", + "float": "none", + "flood-color": "rgb(0, 0, 0)", + "flood-opacity": "1", + "font-family": "\"Malgun Gothic\"", + "font-kerning": "auto", + "font-optical-sizing": "auto", + "font-palette": "normal", + "font-size": "16px", + "font-size-adjust": "none", + "font-stretch": "100%", + "font-style": "normal", + "font-synthesis-small-caps": "auto", + "font-synthesis-style": "auto", + "font-synthesis-weight": "auto", + "font-variant": "normal", + "font-variant-alternates": "normal", + "font-variant-caps": "normal", + "font-variant-east-asian": "normal", + "font-variant-emoji": "normal", + "font-variant-ligatures": "normal", + "font-variant-numeric": "normal", + "font-variant-position": "normal", + "font-weight": "400", + "grid-auto-columns": "auto", + "grid-auto-flow": "row", + "grid-auto-rows": "auto", + "grid-column-end": "auto", + "grid-column-start": "auto", + "grid-row-end": "auto", + "grid-row-start": "auto", + "grid-template-areas": "none", + "grid-template-columns": "none", + "grid-template-rows": "none", + "height": "0px", + "hyphenate-character": "auto", + "hyphenate-limit-chars": "auto", + "hyphens": "manual", + "image-orientation": "from-image", + "image-rendering": "auto", + "initial-letter": "normal", + "inline-size": "1904px", + "inset-block-end": "auto", + "inset-block-start": "auto", + "inset-inline-end": "auto", + "inset-inline-start": "auto", + "interpolate-size": "numeric-only", + "isolation": "auto", + "justify-content": "normal", + "justify-items": "normal", + "justify-self": "auto", + "left": "auto", + "letter-spacing": "normal", + "lighting-color": "rgb(255, 255, 255)", + "line-break": "auto", + "line-height": "normal", + "list-style-image": "none", + "list-style-position": "outside", + "list-style-type": "disc", + "margin-block-end": "0px", + "margin-block-start": "0px", + "margin-bottom": "0px", + "margin-inline-end": "0px", + "margin-inline-start": "0px", + "margin-left": "0px", + "margin-right": "0px", + "margin-top": "0px", + "marker-end": "none", + "marker-mid": "none", + "marker-start": "none", + "mask-clip": "border-box", + "mask-composite": "add", + "mask-image": "none", + "mask-mode": "match-source", + "mask-origin": "border-box", + "mask-position": "0% 0%", + "mask-repeat": "repeat", + "mask-size": "auto", + "mask-type": "luminance", + "math-depth": "0", + "math-shift": "normal", + "math-style": "normal", + "max-block-size": "none", + "max-height": "none", + "max-inline-size": "none", + "max-width": "none", + "min-block-size": "0px", + "min-height": "0px", + "min-inline-size": "0px", + "min-width": "0px", + "mix-blend-mode": "normal", + "object-fit": "fill", + "object-position": "50% 50%", + "object-view-box": "none", + "offset-anchor": "auto", + "offset-distance": "0px", + "offset-path": "none", + "offset-position": "normal", + "offset-rotate": "auto 0deg", + "opacity": "1", + "order": "0", + "orphans": "2", + "outline-color": "rgb(0, 0, 0)", + "outline-offset": "0px", + "outline-style": "none", + "outline-width": "0px", + "overflow-anchor": "auto", + "overflow-clip-margin": "0px", + "overflow-wrap": "normal", + "overflow-x": "visible", + "overflow-y": "visible", + "overlay": "none", + "overscroll-behavior-block": "auto", + "overscroll-behavior-inline": "auto", + "padding-block-end": "0px", + "padding-block-start": "0px", + "padding-bottom": "0px", + "padding-inline-end": "0px", + "padding-inline-start": "0px", + "padding-left": "0px", + "padding-right": "0px", + "padding-top": "0px", + "paint-order": "normal", + "perspective": "none", + "perspective-origin": "952px 0px", + "pointer-events": "auto", + "position": "static", + "position-anchor": "auto", + "position-area": "none", + "position-try-fallbacks": "none", + "position-try-order": "normal", + "position-visibility": "always", + "r": "0px", + "resize": "none", + "right": "auto", + "rotate": "none", + "row-gap": "normal", + "ruby-align": "space-around", + "ruby-position": "over", + "rx": "auto", + "ry": "auto", + "scale": "none", + "scroll-behavior": "auto", + "scroll-margin-block-end": "0px", + "scroll-margin-block-start": "0px", + "scroll-margin-inline-end": "0px", + "scroll-margin-inline-start": "0px", + "scroll-padding-block-end": "auto", + "scroll-padding-block-start": "auto", + "scroll-padding-inline-end": "auto", + "scroll-padding-inline-start": "auto", + "scroll-timeline-axis": "block", + "scroll-timeline-name": "none", + "scrollbar-color": "auto", + "scrollbar-gutter": "auto", + "scrollbar-width": "auto", + "shape-image-threshold": "0", + "shape-margin": "0px", + "shape-outside": "none", + "shape-rendering": "auto", + "speak": "normal", + "stop-color": "rgb(0, 0, 0)", + "stop-opacity": "1", + "stroke": "none", + "stroke-dasharray": "none", + "stroke-dashoffset": "0px", + "stroke-linecap": "butt", + "stroke-linejoin": "miter", + "stroke-miterlimit": "4", + "stroke-opacity": "1", + "stroke-width": "1px", + "tab-size": "8", + "table-layout": "auto", + "text-align": "start", + "text-align-last": "auto", + "text-anchor": "start", + "text-decoration": "none solid rgb(0, 0, 0)", + "text-decoration-color": "rgb(0, 0, 0)", + "text-decoration-line": "none", + "text-decoration-skip-ink": "auto", + "text-decoration-style": "solid", + "text-emphasis-color": "rgb(0, 0, 0)", + "text-emphasis-position": "over", + "text-emphasis-style": "none", + "text-indent": "0px", + "text-overflow": "clip", + "text-rendering": "auto", + "text-shadow": "none", + "text-size-adjust": "auto", + "text-spacing-trim": "normal", + "text-transform": "none", + "text-underline-position": "auto", + "text-wrap-mode": "wrap", + "text-wrap-style": "auto", + "timeline-scope": "none", + "top": "auto", + "touch-action": "auto", + "transform": "none", + "transform-origin": "952px 0px", + "transform-style": "flat", + "transition-behavior": "normal", + "transition-delay": "0s", + "transition-duration": "0s", + "transition-property": "all", + "transition-timing-function": "ease", + "translate": "none", + "unicode-bidi": "isolate", + "user-select": "auto", + "vector-effect": "none", + "vertical-align": "baseline", + "view-timeline-axis": "block", + "view-timeline-inset": "auto", + "view-timeline-name": "none", + "view-transition-class": "none", + "view-transition-name": "none", + "visibility": "visible", + "white-space-collapse": "collapse", + "widows": "2", + "width": "1904px", + "will-change": "auto", + "word-break": "normal", + "word-spacing": "0px", + "writing-mode": "horizontal-tb", + "x": "0px", + "y": "0px", + "z-index": "auto", + "zoom": "1", + "-webkit-border-horizontal-spacing": "0px", + "-webkit-border-image": "none", + "-webkit-border-vertical-spacing": "0px", + "-webkit-box-align": "stretch", + "-webkit-box-decoration-break": "slice", + "-webkit-box-direction": "normal", + "-webkit-box-flex": "0", + "-webkit-box-ordinal-group": "1", + "-webkit-box-orient": "horizontal", + "-webkit-box-pack": "start", + "-webkit-box-reflect": "none", + "-webkit-font-smoothing": "auto", + "-webkit-line-break": "auto", + "-webkit-line-clamp": "none", + "-webkit-locale": "\"en\"", + "-webkit-mask-box-image": "none", + "-webkit-mask-box-image-outset": "0", + "-webkit-mask-box-image-repeat": "stretch", + "-webkit-mask-box-image-slice": "0 fill", + "-webkit-mask-box-image-source": "none", + "-webkit-mask-box-image-width": "auto", + "-webkit-print-color-adjust": "economy", + "-webkit-rtl-ordering": "logical", + "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0.18)", + "-webkit-text-combine": "none", + "-webkit-text-decorations-in-effect": "none", + "-webkit-text-fill-color": "rgb(0, 0, 0)", + "-webkit-text-orientation": "vertical-right", + "-webkit-text-security": "none", + "-webkit-text-stroke-color": "rgb(0, 0, 0)", + "-webkit-text-stroke-width": "0px", + "-webkit-user-drag": "auto", + "-webkit-user-modify": "read-only", + "-webkit-writing-mode": "horizontal-tb" +} \ No newline at end of file diff --git a/src/lib/extract.ts b/src/lib/extract.ts new file mode 100644 index 0000000..b1f88a4 --- /dev/null +++ b/src/lib/extract.ts @@ -0,0 +1,313 @@ +import browser from "webextension-polyfill"; + +// TODO: check if this is the correct way to calculate specificity. css parser might be better +function calculateSpecificity(selector: string): [number, number, number] { + // 결과를 저장할 Specificity 배열: [ID, Class/Attribute/Pseudo-class, Tag/Pseudo-element] + const specificity = [0, 0, 0] as [number, number, number]; + + // 정규식을 사용하여 선택자에서 ID, 클래스/속성/가상 클래스, 태그/가상 요소를 분리 + const regex = { + id: /#[\w-]+/g, // ID 선택자 + classAttrPseudo: /\.[\w-]+|\[[^\]]+\]|:[^\s>+~.#\[:]+/g, // 클래스, 속성 선택자, 가상 클래스 + tagPseudoElement: /^[a-z]+|::[\w-]+/gi // 태그 이름 또는 가상 요소 (::before, ::after 등) + }; + + // ID 선택자 개수 계산 + const idMatches = selector.match(regex.id); + if (idMatches) { + specificity[0] += idMatches.length; + } + + // 클래스, 속성 선택자 및 가상 클래스 개수 계산 + const classAttrPseudoMatches = selector.match(regex.classAttrPseudo); + if (classAttrPseudoMatches) { + specificity[1] += classAttrPseudoMatches.length; + } + + // 태그 및 가상 요소 개수 계산 + const tagPseudoElementMatches = selector.match(regex.tagPseudoElement); + if (tagPseudoElementMatches) { + specificity[2] += tagPseudoElementMatches.length; + } + + return specificity; +} + +async function getCssRules(sheet: CSSStyleSheet) { + try { + return sheet.cssRules; + } catch (error) { + return null; + } +} + +async function getCssRulesCORS(sheet: CSSStyleSheet) { + const r = await getCssRules(sheet); + if (r) { + return r; + } + try { + // TODO: refactor this to extract the fetch function + const text = await browser.runtime.sendMessage({ type: "fetch", url: sheet.href, resType: "text" }); + console.log("Fetched CSS", text.slice(0, 100)); + const styleElem = document.createElement("style"); + styleElem.textContent = text; + // TODO: check if this is the correct way. + // 스타일을 넣지 않으면 sheet가 생성되지 않음. + // 브라우저 엔진 말고 파싱 라이브러리 사용해서 성능 테스트 필요 + document.head.appendChild(styleElem); + const rules = styleElem.sheet?.cssRules; + document.head.removeChild(styleElem); + return rules; + } catch (error) { + console.error("Error fetching CSS", error); + return null; + } +} + +class StyleStore { + private store = new Map(); + public add(rule: CSSStyleRule, order = 0) { + this.store.set(rule.selectorText, { + rule, + specificity: calculateSpecificity(rule.selectorText) + }); + } + public get(selector: string) { + return this.store.get(selector); + } + public getAll() { + return this.store; + } + static async fromDocument() { + const store = new StyleStore(); + const sheets = document.styleSheets; + for (let i = 0; i < sheets.length; i++) { + let sheet = sheets[i]; + let rules = await getCssRulesCORS(sheet as CSSStyleSheet); + if (rules) { + for (let j = 0; j < rules.length; j++) { + const rule = rules[j]; + if (rule instanceof CSSStyleRule) { + const styleRule = rule; + store.add(styleRule); + } + else if (rule instanceof CSSMediaRule) { + const conditionText = rule.conditionText; + // assume all media rules are screen or bigger than 1024px + if (!conditionText || window.matchMedia(conditionText).matches) { + const mediaRules = rule.cssRules; + if (mediaRules) { + for (let k = 0; k < mediaRules.length; k++) { + const mediaStyleRule = mediaRules[k]; + if (mediaStyleRule instanceof CSSStyleRule) { + store.add(mediaStyleRule); + } + } + } + } + } + } + } + } + return store; + } +} + +let styleStore: StyleStore | null = null; +async function getStoreSingleton() { + if (!styleStore) { + styleStore = await StyleStore.fromDocument(); + } + return styleStore; +} + +async function getAllAppliedRuleOfElement(element: Element) { + const store = await getStoreSingleton(); + const rules = [] as { rule: CSSStyleRule, specificity: [number, number, number], selectorText: string }[]; + for (const [selector, { rule, specificity }] of store.getAll()) { + if (element.matches(selector)) { + rules.push({ + rule, + specificity, + selectorText: selector + }); + } + } + rules.sort((a, b) => { + if (a.specificity[0] !== b.specificity[0]) { + return a.specificity[0] - b.specificity[0]; + } else if (a.specificity[1] !== b.specificity[1]) { + return a.specificity[1] - b.specificity[1]; + } else { + return a.specificity[2] - b.specificity[2]; + } + }); + return rules; +} + +export type VElementNode = { + type: "element"; + tagName: string; + style: { [key: string]: string }; + children: VNode[]; +} + +export type VTextNode = { + type: "text"; + text: string; +} + +export type VNode = VElementNode | VTextNode; + +export function styleFromCSSStyleRule(rule: CSSStyleRule) { + const style = {} as { [key: string]: string }; + for (let i = 0; i < rule.style.length; i++) { + const property = rule.style.item(i); + style[property] = rule.style.getPropertyValue(property); + } + return style; +} + +import { cssPropertiesDefault } from "./CSSPropertiesDefaultValue"; + +export async function cloneWithStyle(element: HTMLElement): Promise { + const dom = { + type: "element", + tagName: element.tagName.toLowerCase(), + style: {} as { [key: string]: string }, + children: [] as VNode[] + } as VElementNode; + const rules = await getAllAppliedRuleOfElement(element); + // rules.reverse(); + // const computedStyle = getComputedStyle(element); + const cssInheritanceSet = new Set(cssInheritanceProperties); + for (const { rule } of rules) { + const style = styleFromCSSStyleRule(rule); + for (const property in style) { + const value = style[property]; + if (value === "initial" && (!cssInheritanceSet.has(property))) { + continue; + } + if (cssPropertiesDefault[property as keyof typeof cssPropertiesDefault] === value && (!cssInheritanceSet.has(property))) { + continue; + } + dom.style[property] = style[property]; + } + } + element.style.cssText.split(";") + .filter((property) => property.trim()) + .forEach((property) => { + const [key, value] = property.split(":"); + dom.style[key.trim()] = value.trim(); + }); + for (let i = 0; i < element.childNodes.length; i++) { + const child = element.childNodes[i]; + if (child.nodeType === Node.ELEMENT_NODE) { + dom.children.push(await cloneWithStyle(child as HTMLElement)); + } + else if (child.nodeType === Node.TEXT_NODE) { + const text = child.textContent?.trim(); + if (text) { + dom.children.push({ + type: "text", + text + }); + } + } + } + return dom; +} + +import { generatedProperties } from "./supportedCSSProperties"; + +const cssInheritanceProperties = (() => { + const inherit = generatedProperties.filter(p => p.inherited) + const longhands = new Set(); + for (const property of inherit) { + if (property.longhands) { + property.longhands.forEach(longhand => longhands.add(longhand)); + } + } + return inherit.filter(p => !longhands.has(p.name)) + .map(p => p.name) + .filter(p => !p.startsWith("-webkit-")); + // TODO: remove this filter after fixing the issue with -webkit- properties +})(); + +export function getInheritedStyle(element: HTMLElement) { + const style = {} as { [key: string]: string }; + const computedStyle = window.getComputedStyle(element); + for (const property of cssInheritanceProperties) { + style[property] = computedStyle.getPropertyValue(property); + } + return style; +} + + +// function getComputedStyleWithoutDefault(element) { +// const inheritedProperties = new Set([ +// "azimuth", +// "border-collapse", +// "border-spacing", +// "caption-side", +// "color", +// "cursor", +// "direction", +// "elevation", +// "empty-cells", +// "font-family", +// "font-size", +// "font-style", +// "font-variant", +// "font-weight", +// "font", +// "letter-spacing", +// "line-height", +// "list-style-image", +// "list-style-position", +// "list-style-type", +// "list-style", +// "orphans", +// "pitch-range", +// "pitch", +// "quotes", +// "richness", +// "speak-header", +// "speak-numeral", +// "speak-punctuation", +// "speak", +// "speech-rate", +// "stress", +// "text-align", +// "text-indent", +// "text-transform", +// "visibility", +// "voice-family", +// "volume", +// "white-space", +// "widows", +// "word-spacing", +// ]); +// const computedStyle = window.getComputedStyle(element); +// const parentComputedStyle = window.getComputedStyle(element.parentElement); +// const style = {}; +// // TODO: add element's style to style +// const defaultStyle = window.getComputedStyle(document.documentElement); +// for (let i = 0; i < computedStyle.length; i++) { +// const property = computedStyle[i]; +// if (inheritedProperties.has(property)) { +// if (computedStyle[property] !== parentComputedStyle[property]) { +// style[property] = computedStyle[property]; +// } +// } else { +// // if default value is not equal to computed value then add it to style +// // remove default value like 0px, 0em, 0%, none, normal, auto +// const value = computedStyle.getPropertyValue(property); +// if (value !== defaultStyle.getPropertyValue(property)) { +// style[property] = value; +// } +// } +// } +// return style; +// } \ No newline at end of file diff --git a/src/lib/supportedCSSProperties.ts b/src/lib/supportedCSSProperties.ts new file mode 100644 index 0000000..8a86697 --- /dev/null +++ b/src/lib/supportedCSSProperties.ts @@ -0,0 +1,6996 @@ +// Copyright 2025 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/* eslint-disable @stylistic/quotes, @stylistic/quote-props */ +export const generatedProperties = [ + { + "inherited": true, + "name": "-webkit-border-horizontal-spacing" + }, + { + "name": "-webkit-border-image" + }, + { + "inherited": true, + "name": "-webkit-border-vertical-spacing" + }, + { + "keywords": [ + "stretch", + "start", + "center", + "end", + "baseline" + ], + "name": "-webkit-box-align" + }, + { + "keywords": [ + "slice", + "clone" + ], + "name": "-webkit-box-decoration-break" + }, + { + "keywords": [ + "normal", + "reverse" + ], + "name": "-webkit-box-direction" + }, + { + "name": "-webkit-box-flex" + }, + { + "name": "-webkit-box-ordinal-group" + }, + { + "keywords": [ + "horizontal", + "vertical" + ], + "name": "-webkit-box-orient" + }, + { + "keywords": [ + "start", + "center", + "end", + "justify" + ], + "name": "-webkit-box-pack" + }, + { + "name": "-webkit-box-reflect" + }, + { + "longhands": [ + "break-after" + ], + "name": "-webkit-column-break-after" + }, + { + "longhands": [ + "break-before" + ], + "name": "-webkit-column-break-before" + }, + { + "longhands": [ + "break-inside" + ], + "name": "-webkit-column-break-inside" + }, + { + "inherited": true, + "name": "-webkit-font-smoothing" + }, + { + "inherited": true, + "keywords": [ + "auto", + "loose", + "normal", + "strict", + "after-white-space", + "anywhere" + ], + "name": "-webkit-line-break" + }, + { + "keywords": [ + "none" + ], + "name": "-webkit-line-clamp" + }, + { + "inherited": true, + "name": "-webkit-locale" + }, + { + "longhands": [ + "-webkit-mask-box-image-source", + "-webkit-mask-box-image-slice", + "-webkit-mask-box-image-width", + "-webkit-mask-box-image-outset", + "-webkit-mask-box-image-repeat" + ], + "name": "-webkit-mask-box-image" + }, + { + "name": "-webkit-mask-box-image-outset" + }, + { + "name": "-webkit-mask-box-image-repeat" + }, + { + "name": "-webkit-mask-box-image-slice" + }, + { + "name": "-webkit-mask-box-image-source" + }, + { + "name": "-webkit-mask-box-image-width" + }, + { + "name": "-webkit-mask-position-x" + }, + { + "name": "-webkit-mask-position-y" + }, + { + "name": "-webkit-perspective-origin-x" + }, + { + "name": "-webkit-perspective-origin-y" + }, + { + "inherited": true, + "keywords": [ + "economy", + "exact" + ], + "name": "-webkit-print-color-adjust" + }, + { + "inherited": true, + "keywords": [ + "logical", + "visual" + ], + "name": "-webkit-rtl-ordering" + }, + { + "inherited": true, + "name": "-webkit-ruby-position" + }, + { + "inherited": true, + "name": "-webkit-tap-highlight-color" + }, + { + "inherited": true, + "name": "-webkit-text-combine" + }, + { + "inherited": true, + "name": "-webkit-text-decorations-in-effect" + }, + { + "inherited": true, + "name": "-webkit-text-fill-color" + }, + { + "inherited": true, + "name": "-webkit-text-orientation" + }, + { + "inherited": true, + "keywords": [ + "none", + "disc", + "circle", + "square" + ], + "name": "-webkit-text-security" + }, + { + "inherited": true, + "longhands": [ + "-webkit-text-stroke-width", + "-webkit-text-stroke-color" + ], + "name": "-webkit-text-stroke" + }, + { + "inherited": true, + "name": "-webkit-text-stroke-color" + }, + { + "inherited": true, + "name": "-webkit-text-stroke-width" + }, + { + "name": "-webkit-transform-origin-x" + }, + { + "name": "-webkit-transform-origin-y" + }, + { + "name": "-webkit-transform-origin-z" + }, + { + "keywords": [ + "auto", + "none", + "element" + ], + "name": "-webkit-user-drag" + }, + { + "inherited": true, + "keywords": [ + "read-only", + "read-write", + "read-write-plaintext-only" + ], + "name": "-webkit-user-modify" + }, + { + "inherited": true, + "name": "-webkit-writing-mode" + }, + { + "inherited": true, + "keywords": [ + "auto", + "currentcolor" + ], + "name": "accent-color" + }, + { + "name": "additive-symbols" + }, + { + "name": "align-content" + }, + { + "name": "align-items" + }, + { + "name": "align-self" + }, + { + "keywords": [ + "auto", + "baseline", + "alphabetic", + "ideographic", + "middle", + "central", + "mathematical", + "before-edge", + "text-before-edge", + "after-edge", + "text-after-edge", + "hanging" + ], + "name": "alignment-baseline" + }, + { + "longhands": [ + "-webkit-border-horizontal-spacing", + "-webkit-border-vertical-spacing", + "-webkit-box-align", + "-webkit-box-decoration-break", + "-webkit-box-direction", + "-webkit-box-flex", + "-webkit-box-ordinal-group", + "-webkit-box-orient", + "-webkit-box-pack", + "-webkit-box-reflect", + "-webkit-font-smoothing", + "-webkit-line-break", + "-webkit-line-clamp", + "-webkit-locale", + "-webkit-mask-box-image-outset", + "-webkit-mask-box-image-repeat", + "-webkit-mask-box-image-slice", + "-webkit-mask-box-image-source", + "-webkit-mask-box-image-width", + "-webkit-mask-position-x", + "-webkit-mask-position-y", + "-webkit-print-color-adjust", + "-webkit-rtl-ordering", + "-webkit-ruby-position", + "-webkit-tap-highlight-color", + "-webkit-text-combine", + "-webkit-text-decorations-in-effect", + "-webkit-text-fill-color", + "-webkit-text-orientation", + "-webkit-text-security", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "-webkit-user-drag", + "-webkit-writing-mode", + "accent-color", + "additive-symbols", + "align-content", + "align-items", + "align-self", + "alignment-baseline", + "anchor-name", + "anchor-scope", + "animation-composition", + "animation-delay", + "animation-direction", + "animation-duration", + "animation-fill-mode", + "animation-iteration-count", + "animation-name", + "animation-play-state", + "animation-range-end", + "animation-range-start", + "animation-timeline", + "animation-timing-function", + "animation-trigger-exit-range-end", + "animation-trigger-exit-range-start", + "animation-trigger-range-end", + "animation-trigger-range-start", + "animation-trigger-timeline", + "animation-trigger-type", + "app-region", + "appearance", + "ascent-override", + "aspect-ratio", + "backdrop-filter", + "backface-visibility", + "background-attachment", + "background-blend-mode", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position-x", + "background-position-y", + "background-repeat", + "background-size", + "base-palette", + "baseline-shift", + "baseline-source", + "block-size", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-bottom-color", + "border-bottom-left-radius", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-collapse", + "border-end-end-radius", + "border-end-start-radius", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-left-color", + "border-left-style", + "border-left-width", + "border-right-color", + "border-right-style", + "border-right-width", + "border-start-end-radius", + "border-start-start-radius", + "border-top-color", + "border-top-left-radius", + "border-top-right-radius", + "border-top-style", + "border-top-width", + "bottom", + "box-decoration-break", + "box-shadow", + "box-sizing", + "break-after", + "break-before", + "break-inside", + "buffered-rendering", + "caption-side", + "caret-animation", + "caret-color", + "clear", + "clip", + "clip-path", + "clip-rule", + "color", + "color-interpolation", + "color-interpolation-filters", + "color-rendering", + "color-scheme", + "column-count", + "column-fill", + "column-gap", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", + "contain", + "contain-intrinsic-block-size", + "contain-intrinsic-height", + "contain-intrinsic-inline-size", + "contain-intrinsic-width", + "container-name", + "container-type", + "content", + "content-visibility", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "cx", + "cy", + "d", + "descent-override", + "display", + "dominant-baseline", + "dynamic-range-limit", + "empty-cells", + "fallback", + "field-sizing", + "fill", + "fill-opacity", + "fill-rule", + "filter", + "flex-basis", + "flex-direction", + "flex-grow", + "flex-shrink", + "flex-wrap", + "float", + "flood-color", + "flood-opacity", + "font-display", + "font-family", + "font-feature-settings", + "font-kerning", + "font-optical-sizing", + "font-palette", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-synthesis-small-caps", + "font-synthesis-style", + "font-synthesis-weight", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "font-weight", + "forced-color-adjust", + "grid-auto-columns", + "grid-auto-flow", + "grid-auto-rows", + "grid-column-end", + "grid-column-start", + "grid-row-end", + "grid-row-start", + "grid-template-areas", + "grid-template-columns", + "grid-template-rows", + "height", + "hyphenate-character", + "hyphenate-limit-chars", + "hyphens", + "image-orientation", + "image-rendering", + "inherits", + "initial-letter", + "initial-value", + "inline-size", + "inset-block-end", + "inset-block-start", + "inset-inline-end", + "inset-inline-start", + "interactivity", + "interest-target-hide-delay", + "interest-target-show-delay", + "interpolate-size", + "isolation", + "justify-content", + "justify-items", + "justify-self", + "left", + "letter-spacing", + "lighting-color", + "line-break", + "line-clamp", + "line-gap-override", + "line-height", + "list-style-image", + "list-style-position", + "list-style-type", + "margin-block-end", + "margin-block-start", + "margin-bottom", + "margin-inline-end", + "margin-inline-start", + "margin-left", + "margin-right", + "margin-top", + "marker-end", + "marker-mid", + "marker-start", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-repeat", + "mask-size", + "mask-type", + "masonry-auto-tracks", + "masonry-direction", + "masonry-fill", + "masonry-slack", + "masonry-template-tracks", + "masonry-track-end", + "masonry-track-start", + "math-depth", + "math-shift", + "math-style", + "max-block-size", + "max-height", + "max-inline-size", + "max-width", + "min-block-size", + "min-height", + "min-inline-size", + "min-width", + "mix-blend-mode", + "navigation", + "negative", + "object-fit", + "object-position", + "object-view-box", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-position", + "offset-rotate", + "opacity", + "order", + "origin-trial-test-property", + "orphans", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-wrap", + "overflow-x", + "overflow-y", + "overlay", + "override-colors", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "pad", + "padding-block-end", + "padding-block-start", + "padding-bottom", + "padding-inline-end", + "padding-inline-start", + "padding-left", + "padding-right", + "padding-top", + "page", + "page-orientation", + "paint-order", + "perspective", + "perspective-origin", + "pointer-events", + "position", + "position-anchor", + "position-area", + "position-try-fallbacks", + "position-try-order", + "position-visibility", + "prefix", + "quotes", + "r", + "range", + "reading-flow", + "resize", + "result", + "right", + "rotate", + "row-gap", + "ruby-align", + "ruby-position", + "rx", + "ry", + "scale", + "scroll-behavior", + "scroll-initial-target", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-marker-group", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scroll-start-block", + "scroll-start-inline", + "scroll-start-x", + "scroll-start-y", + "scroll-timeline-axis", + "scroll-timeline-name", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "shape-rendering", + "size", + "size-adjust", + "speak", + "speak-as", + "src", + "stop-color", + "stop-opacity", + "stroke", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "suffix", + "symbols", + "syntax", + "system", + "tab-size", + "table-layout", + "text-align", + "text-align-last", + "text-anchor", + "text-autospace", + "text-box-edge", + "text-box-trim", + "text-combine-upright", + "text-decoration-color", + "text-decoration-line", + "text-decoration-skip-ink", + "text-decoration-style", + "text-decoration-thickness", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-size-adjust", + "text-spacing-trim", + "text-transform", + "text-underline-offset", + "text-underline-position", + "text-wrap-mode", + "text-wrap-style", + "timeline-scope", + "top", + "touch-action", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "transition-behavior", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "translate", + "types", + "unicode-range", + "user-select", + "vector-effect", + "vertical-align", + "view-timeline-axis", + "view-timeline-inset", + "view-timeline-name", + "view-transition-capture-mode", + "view-transition-class", + "view-transition-group", + "view-transition-name", + "visibility", + "white-space-collapse", + "widows", + "width", + "will-change", + "word-break", + "word-spacing", + "writing-mode", + "x", + "y", + "z-index", + "zoom" + ], + "name": "all" + }, + { + "keywords": [ + "none" + ], + "name": "anchor-name" + }, + { + "keywords": [ + "none", + "all" + ], + "name": "anchor-scope" + }, + { + "longhands": [ + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "animation-timeline", + "animation-range-start", + "animation-range-end" + ], + "name": "animation" + }, + { + "keywords": [ + "replace", + "add", + "accumulate" + ], + "name": "animation-composition" + }, + { + "name": "animation-delay" + }, + { + "keywords": [ + "normal", + "reverse", + "alternate", + "alternate-reverse" + ], + "name": "animation-direction" + }, + { + "name": "animation-duration" + }, + { + "keywords": [ + "none", + "forwards", + "backwards", + "both" + ], + "name": "animation-fill-mode" + }, + { + "keywords": [ + "infinite" + ], + "name": "animation-iteration-count" + }, + { + "keywords": [ + "none" + ], + "name": "animation-name" + }, + { + "keywords": [ + "running", + "paused" + ], + "name": "animation-play-state" + }, + { + "longhands": [ + "animation-range-start", + "animation-range-end" + ], + "name": "animation-range" + }, + { + "name": "animation-range-end" + }, + { + "name": "animation-range-start" + }, + { + "keywords": [ + "none", + "auto" + ], + "name": "animation-timeline" + }, + { + "keywords": [ + "linear", + "ease", + "ease-in", + "ease-out", + "ease-in-out", + "jump-both", + "jump-end", + "jump-none", + "jump-start", + "step-start", + "step-end" + ], + "name": "animation-timing-function" + }, + { + "longhands": [ + "animation-trigger-exit-range-start", + "animation-trigger-exit-range-end" + ], + "name": "animation-trigger-exit-range" + }, + { + "name": "animation-trigger-exit-range-end" + }, + { + "name": "animation-trigger-exit-range-start" + }, + { + "longhands": [ + "animation-trigger-range-start", + "animation-trigger-range-end" + ], + "name": "animation-trigger-range" + }, + { + "name": "animation-trigger-range-end" + }, + { + "name": "animation-trigger-range-start" + }, + { + "keywords": [ + "none", + "auto" + ], + "name": "animation-trigger-timeline" + }, + { + "keywords": [ + "once", + "repeat", + "alternate", + "state" + ], + "name": "animation-trigger-type" + }, + { + "keywords": [ + "none", + "drag", + "no-drag" + ], + "name": "app-region" + }, + { + "name": "appearance" + }, + { + "name": "ascent-override" + }, + { + "keywords": [ + "auto" + ], + "name": "aspect-ratio" + }, + { + "keywords": [ + "none" + ], + "name": "backdrop-filter" + }, + { + "keywords": [ + "visible", + "hidden" + ], + "name": "backface-visibility" + }, + { + "longhands": [ + "background-image", + "background-position-x", + "background-position-y", + "background-size", + "background-repeat", + "background-attachment", + "background-origin", + "background-clip", + "background-color" + ], + "name": "background" + }, + { + "keywords": [ + "scroll", + "fixed", + "local" + ], + "name": "background-attachment" + }, + { + "keywords": [ + "normal", + "multiply", + "screen", + "overlay", + "darken", + "lighten", + "color-dodge", + "color-burn", + "hard-light", + "soft-light", + "difference", + "exclusion", + "hue", + "saturation", + "color", + "luminosity" + ], + "name": "background-blend-mode" + }, + { + "keywords": [ + "border-box", + "padding-box", + "content-box", + "text" + ], + "name": "background-clip" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "background-color" + }, + { + "keywords": [ + "auto", + "none" + ], + "name": "background-image" + }, + { + "keywords": [ + "border-box", + "padding-box", + "content-box" + ], + "name": "background-origin" + }, + { + "longhands": [ + "background-position-x", + "background-position-y" + ], + "name": "background-position" + }, + { + "name": "background-position-x" + }, + { + "name": "background-position-y" + }, + { + "name": "background-repeat" + }, + { + "keywords": [ + "auto", + "cover", + "contain" + ], + "name": "background-size" + }, + { + "name": "base-palette" + }, + { + "keywords": [ + "baseline", + "sub", + "super" + ], + "name": "baseline-shift" + }, + { + "keywords": [ + "auto", + "first", + "last" + ], + "name": "baseline-source" + }, + { + "keywords": [ + "auto" + ], + "name": "block-size" + }, + { + "longhands": [ + "border-top-color", + "border-top-style", + "border-top-width", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom-color", + "border-bottom-style", + "border-bottom-width", + "border-left-color", + "border-left-style", + "border-left-width", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat" + ], + "name": "border" + }, + { + "longhands": [ + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width" + ], + "name": "border-block" + }, + { + "longhands": [ + "border-block-start-color", + "border-block-end-color" + ], + "name": "border-block-color" + }, + { + "longhands": [ + "border-block-end-width", + "border-block-end-style", + "border-block-end-color" + ], + "name": "border-block-end" + }, + { + "name": "border-block-end-color" + }, + { + "name": "border-block-end-style" + }, + { + "name": "border-block-end-width" + }, + { + "longhands": [ + "border-block-start-width", + "border-block-start-style", + "border-block-start-color" + ], + "name": "border-block-start" + }, + { + "name": "border-block-start-color" + }, + { + "name": "border-block-start-style" + }, + { + "name": "border-block-start-width" + }, + { + "longhands": [ + "border-block-start-style", + "border-block-end-style" + ], + "name": "border-block-style" + }, + { + "longhands": [ + "border-block-start-width", + "border-block-end-width" + ], + "name": "border-block-width" + }, + { + "longhands": [ + "border-bottom-width", + "border-bottom-style", + "border-bottom-color" + ], + "name": "border-bottom" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "border-bottom-color" + }, + { + "name": "border-bottom-left-radius" + }, + { + "name": "border-bottom-right-radius" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "border-bottom-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "border-bottom-width" + }, + { + "inherited": true, + "keywords": [ + "separate", + "collapse" + ], + "name": "border-collapse" + }, + { + "longhands": [ + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color" + ], + "name": "border-color" + }, + { + "name": "border-end-end-radius" + }, + { + "name": "border-end-start-radius" + }, + { + "longhands": [ + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat" + ], + "name": "border-image" + }, + { + "name": "border-image-outset" + }, + { + "keywords": [ + "stretch", + "repeat", + "round", + "space" + ], + "name": "border-image-repeat" + }, + { + "name": "border-image-slice" + }, + { + "keywords": [ + "none" + ], + "name": "border-image-source" + }, + { + "keywords": [ + "auto" + ], + "name": "border-image-width" + }, + { + "longhands": [ + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width" + ], + "name": "border-inline" + }, + { + "longhands": [ + "border-inline-start-color", + "border-inline-end-color" + ], + "name": "border-inline-color" + }, + { + "longhands": [ + "border-inline-end-width", + "border-inline-end-style", + "border-inline-end-color" + ], + "name": "border-inline-end" + }, + { + "name": "border-inline-end-color" + }, + { + "name": "border-inline-end-style" + }, + { + "name": "border-inline-end-width" + }, + { + "longhands": [ + "border-inline-start-width", + "border-inline-start-style", + "border-inline-start-color" + ], + "name": "border-inline-start" + }, + { + "name": "border-inline-start-color" + }, + { + "name": "border-inline-start-style" + }, + { + "name": "border-inline-start-width" + }, + { + "longhands": [ + "border-inline-start-style", + "border-inline-end-style" + ], + "name": "border-inline-style" + }, + { + "longhands": [ + "border-inline-start-width", + "border-inline-end-width" + ], + "name": "border-inline-width" + }, + { + "longhands": [ + "border-left-width", + "border-left-style", + "border-left-color" + ], + "name": "border-left" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "border-left-color" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "border-left-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "border-left-width" + }, + { + "longhands": [ + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius" + ], + "name": "border-radius" + }, + { + "longhands": [ + "border-right-width", + "border-right-style", + "border-right-color" + ], + "name": "border-right" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "border-right-color" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "border-right-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "border-right-width" + }, + { + "inherited": true, + "longhands": [ + "-webkit-border-horizontal-spacing", + "-webkit-border-vertical-spacing" + ], + "name": "border-spacing" + }, + { + "name": "border-start-end-radius" + }, + { + "name": "border-start-start-radius" + }, + { + "keywords": [ + "none" + ], + "longhands": [ + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style" + ], + "name": "border-style" + }, + { + "longhands": [ + "border-top-width", + "border-top-style", + "border-top-color" + ], + "name": "border-top" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "border-top-color" + }, + { + "name": "border-top-left-radius" + }, + { + "name": "border-top-right-radius" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "border-top-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "border-top-width" + }, + { + "longhands": [ + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width" + ], + "name": "border-width" + }, + { + "keywords": [ + "auto" + ], + "name": "bottom" + }, + { + "keywords": [ + "slice", + "clone" + ], + "name": "box-decoration-break" + }, + { + "keywords": [ + "none" + ], + "name": "box-shadow" + }, + { + "keywords": [ + "content-box", + "border-box" + ], + "name": "box-sizing" + }, + { + "keywords": [ + "auto", + "avoid", + "avoid-column", + "avoid-page", + "column", + "left", + "page", + "recto", + "right", + "verso" + ], + "name": "break-after" + }, + { + "keywords": [ + "auto", + "avoid", + "avoid-column", + "avoid-page", + "column", + "left", + "page", + "recto", + "right", + "verso" + ], + "name": "break-before" + }, + { + "keywords": [ + "auto", + "avoid", + "avoid-column", + "avoid-page" + ], + "name": "break-inside" + }, + { + "keywords": [ + "auto", + "dynamic", + "static" + ], + "name": "buffered-rendering" + }, + { + "inherited": true, + "keywords": [ + "top", + "bottom" + ], + "name": "caption-side" + }, + { + "inherited": true, + "keywords": [ + "auto", + "manual" + ], + "name": "caret-animation" + }, + { + "inherited": true, + "keywords": [ + "auto", + "currentcolor" + ], + "name": "caret-color" + }, + { + "keywords": [ + "none", + "left", + "right", + "both", + "inline-start", + "inline-end" + ], + "name": "clear" + }, + { + "keywords": [ + "auto" + ], + "name": "clip" + }, + { + "keywords": [ + "border-box", + "padding-box", + "content-box", + "margin-box", + "fill-box", + "stroke-box", + "view-box", + "none" + ], + "name": "clip-path" + }, + { + "inherited": true, + "keywords": [ + "nonzero", + "evenodd" + ], + "name": "clip-rule" + }, + { + "inherited": true, + "keywords": [ + "currentcolor" + ], + "name": "color" + }, + { + "inherited": true, + "keywords": [ + "auto", + "srgb", + "linearrgb" + ], + "name": "color-interpolation" + }, + { + "inherited": true, + "keywords": [ + "auto", + "srgb", + "linearrgb" + ], + "name": "color-interpolation-filters" + }, + { + "inherited": true, + "keywords": [ + "auto", + "optimizespeed", + "optimizequality" + ], + "name": "color-rendering" + }, + { + "inherited": true, + "name": "color-scheme" + }, + { + "keywords": [ + "auto" + ], + "name": "column-count" + }, + { + "keywords": [ + "balance", + "auto" + ], + "name": "column-fill" + }, + { + "keywords": [ + "normal" + ], + "name": "column-gap" + }, + { + "longhands": [ + "column-rule-width", + "column-rule-style", + "column-rule-color" + ], + "name": "column-rule" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "column-rule-color" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "column-rule-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "column-rule-width" + }, + { + "keywords": [ + "none", + "all" + ], + "name": "column-span" + }, + { + "keywords": [ + "auto" + ], + "name": "column-width" + }, + { + "longhands": [ + "column-width", + "column-count" + ], + "name": "columns" + }, + { + "keywords": [ + "none", + "strict", + "content", + "size", + "layout", + "style", + "paint", + "inline-size", + "block-size" + ], + "name": "contain" + }, + { + "name": "contain-intrinsic-block-size" + }, + { + "keywords": [ + "none" + ], + "name": "contain-intrinsic-height" + }, + { + "name": "contain-intrinsic-inline-size" + }, + { + "longhands": [ + "contain-intrinsic-width", + "contain-intrinsic-height" + ], + "name": "contain-intrinsic-size" + }, + { + "keywords": [ + "none" + ], + "name": "contain-intrinsic-width" + }, + { + "longhands": [ + "container-name", + "container-type" + ], + "name": "container" + }, + { + "keywords": [ + "none" + ], + "name": "container-name" + }, + { + "keywords": [ + "normal", + "inline-size", + "size", + "scroll-state" + ], + "name": "container-type" + }, + { + "name": "content" + }, + { + "keywords": [ + "visible", + "auto", + "hidden" + ], + "name": "content-visibility" + }, + { + "keywords": [ + "none" + ], + "name": "counter-increment" + }, + { + "keywords": [ + "none" + ], + "name": "counter-reset" + }, + { + "keywords": [ + "none" + ], + "name": "counter-set" + }, + { + "inherited": true, + "keywords": [ + "auto", + "default", + "none", + "context-menu", + "help", + "pointer", + "progress", + "wait", + "cell", + "crosshair", + "text", + "vertical-text", + "alias", + "copy", + "move", + "no-drop", + "not-allowed", + "e-resize", + "n-resize", + "ne-resize", + "nw-resize", + "s-resize", + "se-resize", + "sw-resize", + "w-resize", + "ew-resize", + "ns-resize", + "nesw-resize", + "nwse-resize", + "col-resize", + "row-resize", + "all-scroll", + "zoom-in", + "zoom-out", + "grab", + "grabbing" + ], + "name": "cursor" + }, + { + "name": "cx" + }, + { + "name": "cy" + }, + { + "keywords": [ + "none" + ], + "name": "d" + }, + { + "name": "descent-override" + }, + { + "inherited": true, + "keywords": [ + "ltr", + "rtl" + ], + "name": "direction" + }, + { + "keywords": [ + "inline", + "block", + "list-item", + "inline-block", + "table", + "inline-table", + "table-row-group", + "table-header-group", + "table-footer-group", + "table-row", + "table-column-group", + "table-column", + "table-cell", + "table-caption", + "-webkit-box", + "-webkit-inline-box", + "flex", + "inline-flex", + "grid", + "inline-grid", + "contents", + "flow-root", + "none", + "flow", + "math", + "ruby", + "ruby-text", + "masonry", + "inline-masonry" + ], + "name": "display" + }, + { + "inherited": true, + "keywords": [ + "auto", + "alphabetic", + "ideographic", + "middle", + "central", + "mathematical", + "hanging", + "use-script", + "no-change", + "reset-size", + "text-after-edge", + "text-before-edge" + ], + "name": "dominant-baseline" + }, + { + "inherited": true, + "keywords": [ + "standard", + "high", + "constrained-high" + ], + "name": "dynamic-range-limit" + }, + { + "inherited": true, + "keywords": [ + "show", + "hide" + ], + "name": "empty-cells" + }, + { + "name": "fallback" + }, + { + "keywords": [ + "fixed", + "content" + ], + "name": "field-sizing" + }, + { + "inherited": true, + "name": "fill" + }, + { + "inherited": true, + "name": "fill-opacity" + }, + { + "inherited": true, + "keywords": [ + "nonzero", + "evenodd" + ], + "name": "fill-rule" + }, + { + "keywords": [ + "none" + ], + "name": "filter" + }, + { + "longhands": [ + "flex-grow", + "flex-shrink", + "flex-basis" + ], + "name": "flex" + }, + { + "keywords": [ + "auto", + "fit-content", + "min-content", + "max-content", + "content" + ], + "name": "flex-basis" + }, + { + "keywords": [ + "row", + "row-reverse", + "column", + "column-reverse" + ], + "name": "flex-direction" + }, + { + "longhands": [ + "flex-direction", + "flex-wrap" + ], + "name": "flex-flow" + }, + { + "name": "flex-grow" + }, + { + "name": "flex-shrink" + }, + { + "keywords": [ + "nowrap", + "wrap", + "wrap-reverse" + ], + "name": "flex-wrap" + }, + { + "keywords": [ + "none", + "left", + "right", + "inline-start", + "inline-end" + ], + "name": "float" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "flood-color" + }, + { + "name": "flood-opacity" + }, + { + "inherited": true, + "longhands": [ + "font-style", + "font-variant-ligatures", + "font-variant-caps", + "font-variant-numeric", + "font-variant-east-asian", + "font-variant-alternates", + "font-variant-position", + "font-variant-emoji", + "font-weight", + "font-stretch", + "font-size", + "line-height", + "font-family", + "font-optical-sizing", + "font-size-adjust", + "font-kerning", + "font-feature-settings", + "font-variation-settings" + ], + "name": "font" + }, + { + "name": "font-display" + }, + { + "inherited": true, + "name": "font-family" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "font-feature-settings" + }, + { + "inherited": true, + "keywords": [ + "auto", + "normal", + "none" + ], + "name": "font-kerning" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none" + ], + "name": "font-optical-sizing" + }, + { + "inherited": true, + "keywords": [ + "normal", + "light", + "dark" + ], + "name": "font-palette" + }, + { + "inherited": true, + "keywords": [ + "xx-small", + "x-small", + "small", + "medium", + "large", + "x-large", + "xx-large", + "xxx-large", + "larger", + "smaller", + "-webkit-xxx-large" + ], + "name": "font-size" + }, + { + "inherited": true, + "keywords": [ + "none", + "ex-height", + "cap-height", + "ch-width", + "ic-width", + "ic-height", + "from-font" + ], + "name": "font-size-adjust" + }, + { + "inherited": true, + "keywords": [ + "normal", + "ultra-condensed", + "extra-condensed", + "condensed", + "semi-condensed", + "semi-expanded", + "expanded", + "extra-expanded", + "ultra-expanded" + ], + "name": "font-stretch" + }, + { + "inherited": true, + "keywords": [ + "normal", + "italic", + "oblique" + ], + "name": "font-style" + }, + { + "inherited": true, + "longhands": [ + "font-synthesis-weight", + "font-synthesis-style", + "font-synthesis-small-caps" + ], + "name": "font-synthesis" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none" + ], + "name": "font-synthesis-small-caps" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none" + ], + "name": "font-synthesis-style" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none" + ], + "name": "font-synthesis-weight" + }, + { + "inherited": true, + "longhands": [ + "font-variant-ligatures", + "font-variant-caps", + "font-variant-alternates", + "font-variant-numeric", + "font-variant-east-asian", + "font-variant-position", + "font-variant-emoji" + ], + "name": "font-variant" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "font-variant-alternates" + }, + { + "inherited": true, + "keywords": [ + "normal", + "small-caps", + "all-small-caps", + "petite-caps", + "all-petite-caps", + "unicase", + "titling-caps" + ], + "name": "font-variant-caps" + }, + { + "inherited": true, + "keywords": [ + "normal", + "jis78", + "jis83", + "jis90", + "jis04", + "simplified", + "traditional", + "full-width", + "proportional-width", + "ruby" + ], + "name": "font-variant-east-asian" + }, + { + "inherited": true, + "keywords": [ + "normal", + "text", + "emoji", + "unicode" + ], + "name": "font-variant-emoji" + }, + { + "inherited": true, + "keywords": [ + "normal", + "none", + "common-ligatures", + "no-common-ligatures", + "discretionary-ligatures", + "no-discretionary-ligatures", + "historical-ligatures", + "no-historical-ligatures", + "contextual", + "no-contextual" + ], + "name": "font-variant-ligatures" + }, + { + "inherited": true, + "keywords": [ + "normal", + "lining-nums", + "oldstyle-nums", + "proportional-nums", + "tabular-nums", + "diagonal-fractions", + "stacked-fractions", + "ordinal", + "slashed-zero" + ], + "name": "font-variant-numeric" + }, + { + "inherited": true, + "keywords": [ + "normal", + "sub", + "super" + ], + "name": "font-variant-position" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "font-variation-settings" + }, + { + "inherited": true, + "keywords": [ + "normal", + "bold", + "bolder", + "lighter" + ], + "name": "font-weight" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none", + "preserve-parent-color" + ], + "name": "forced-color-adjust" + }, + { + "longhands": [ + "row-gap", + "column-gap" + ], + "name": "gap" + }, + { + "longhands": [ + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-flow", + "grid-auto-rows", + "grid-auto-columns" + ], + "name": "grid" + }, + { + "longhands": [ + "grid-row-start", + "grid-column-start", + "grid-row-end", + "grid-column-end" + ], + "name": "grid-area" + }, + { + "keywords": [ + "auto", + "min-content", + "max-content" + ], + "name": "grid-auto-columns" + }, + { + "keywords": [ + "row", + "column" + ], + "name": "grid-auto-flow" + }, + { + "keywords": [ + "auto", + "min-content", + "max-content" + ], + "name": "grid-auto-rows" + }, + { + "longhands": [ + "grid-column-start", + "grid-column-end" + ], + "name": "grid-column" + }, + { + "keywords": [ + "auto" + ], + "name": "grid-column-end" + }, + { + "keywords": [ + "auto" + ], + "name": "grid-column-start" + }, + { + "longhands": [ + "grid-row-start", + "grid-row-end" + ], + "name": "grid-row" + }, + { + "keywords": [ + "auto" + ], + "name": "grid-row-end" + }, + { + "keywords": [ + "auto" + ], + "name": "grid-row-start" + }, + { + "longhands": [ + "grid-template-rows", + "grid-template-columns", + "grid-template-areas" + ], + "name": "grid-template" + }, + { + "keywords": [ + "none" + ], + "name": "grid-template-areas" + }, + { + "keywords": [ + "none" + ], + "name": "grid-template-columns" + }, + { + "keywords": [ + "none" + ], + "name": "grid-template-rows" + }, + { + "keywords": [ + "auto", + "fit-content", + "min-content", + "max-content" + ], + "name": "height" + }, + { + "inherited": true, + "name": "hyphenate-character" + }, + { + "inherited": true, + "keywords": [ + "auto" + ], + "name": "hyphenate-limit-chars" + }, + { + "inherited": true, + "keywords": [ + "none", + "manual", + "auto" + ], + "name": "hyphens" + }, + { + "inherited": true, + "name": "image-orientation" + }, + { + "inherited": true, + "keywords": [ + "auto", + "optimizespeed", + "optimizequality", + "-webkit-optimize-contrast", + "pixelated" + ], + "name": "image-rendering" + }, + { + "name": "inherits" + }, + { + "inherited": false, + "keywords": [ + "drop", + "normal", + "raise" + ], + "name": "initial-letter" + }, + { + "name": "initial-value" + }, + { + "keywords": [ + "auto" + ], + "name": "inline-size" + }, + { + "longhands": [ + "top", + "right", + "bottom", + "left" + ], + "name": "inset" + }, + { + "longhands": [ + "inset-block-start", + "inset-block-end" + ], + "name": "inset-block" + }, + { + "name": "inset-block-end" + }, + { + "name": "inset-block-start" + }, + { + "longhands": [ + "inset-inline-start", + "inset-inline-end" + ], + "name": "inset-inline" + }, + { + "name": "inset-inline-end" + }, + { + "name": "inset-inline-start" + }, + { + "inherited": true, + "keywords": [ + "auto", + "inert" + ], + "name": "interactivity" + }, + { + "longhands": [ + "interest-target-show-delay", + "interest-target-hide-delay" + ], + "name": "interest-target-delay" + }, + { + "name": "interest-target-hide-delay" + }, + { + "name": "interest-target-show-delay" + }, + { + "inherited": true, + "keywords": [ + "numeric-only", + "allow-keywords" + ], + "name": "interpolate-size" + }, + { + "keywords": [ + "auto", + "isolate" + ], + "name": "isolation" + }, + { + "name": "justify-content" + }, + { + "name": "justify-items" + }, + { + "name": "justify-self" + }, + { + "keywords": [ + "auto" + ], + "name": "left" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "letter-spacing" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "lighting-color" + }, + { + "inherited": true, + "keywords": [ + "auto", + "loose", + "normal", + "strict", + "anywhere" + ], + "name": "line-break" + }, + { + "keywords": [ + "none", + "auto" + ], + "name": "line-clamp" + }, + { + "name": "line-gap-override" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "line-height" + }, + { + "inherited": true, + "longhands": [ + "list-style-position", + "list-style-image", + "list-style-type" + ], + "name": "list-style" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "list-style-image" + }, + { + "inherited": true, + "keywords": [ + "outside", + "inside" + ], + "name": "list-style-position" + }, + { + "inherited": true, + "keywords": [ + "disc", + "circle", + "square", + "disclosure-open", + "disclosure-closed", + "decimal", + "none" + ], + "name": "list-style-type" + }, + { + "longhands": [ + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "name": "margin" + }, + { + "longhands": [ + "margin-block-start", + "margin-block-end" + ], + "name": "margin-block" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-block-end" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-block-start" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-bottom" + }, + { + "longhands": [ + "margin-inline-start", + "margin-inline-end" + ], + "name": "margin-inline" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-inline-end" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-inline-start" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-left" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-right" + }, + { + "keywords": [ + "auto" + ], + "name": "margin-top" + }, + { + "inherited": true, + "longhands": [ + "marker-start", + "marker-mid", + "marker-end" + ], + "name": "marker" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "marker-end" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "marker-mid" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "marker-start" + }, + { + "longhands": [ + "mask-image", + "-webkit-mask-position-x", + "-webkit-mask-position-y", + "mask-size", + "mask-repeat", + "mask-origin", + "mask-clip", + "mask-composite", + "mask-mode" + ], + "name": "mask" + }, + { + "name": "mask-clip" + }, + { + "name": "mask-composite" + }, + { + "name": "mask-image" + }, + { + "name": "mask-mode" + }, + { + "name": "mask-origin" + }, + { + "longhands": [ + "-webkit-mask-position-x", + "-webkit-mask-position-y" + ], + "name": "mask-position" + }, + { + "name": "mask-repeat" + }, + { + "name": "mask-size" + }, + { + "keywords": [ + "luminance", + "alpha" + ], + "name": "mask-type" + }, + { + "keywords": [ + "auto", + "min-content", + "max-content" + ], + "name": "masonry-auto-tracks" + }, + { + "keywords": [ + "row", + "row-reverse", + "column", + "column-reverse" + ], + "name": "masonry-direction" + }, + { + "keywords": [ + "normal", + "reverse" + ], + "name": "masonry-fill" + }, + { + "longhands": [ + "masonry-direction", + "masonry-fill" + ], + "name": "masonry-flow" + }, + { + "keywords": [ + "normal" + ], + "name": "masonry-slack" + }, + { + "name": "masonry-template-tracks" + }, + { + "longhands": [ + "masonry-track-start", + "masonry-track-end" + ], + "name": "masonry-track" + }, + { + "keywords": [ + "auto" + ], + "name": "masonry-track-end" + }, + { + "keywords": [ + "auto" + ], + "name": "masonry-track-start" + }, + { + "inherited": true, + "name": "math-depth" + }, + { + "inherited": true, + "keywords": [ + "normal", + "compact" + ], + "name": "math-shift" + }, + { + "inherited": true, + "keywords": [ + "normal", + "compact" + ], + "name": "math-style" + }, + { + "keywords": [ + "none" + ], + "name": "max-block-size" + }, + { + "keywords": [ + "none" + ], + "name": "max-height" + }, + { + "keywords": [ + "none" + ], + "name": "max-inline-size" + }, + { + "keywords": [ + "none" + ], + "name": "max-width" + }, + { + "name": "min-block-size" + }, + { + "name": "min-height" + }, + { + "name": "min-inline-size" + }, + { + "name": "min-width" + }, + { + "keywords": [ + "normal", + "multiply", + "screen", + "overlay", + "darken", + "lighten", + "color-dodge", + "color-burn", + "hard-light", + "soft-light", + "difference", + "exclusion", + "hue", + "saturation", + "color", + "luminosity", + "plus-lighter" + ], + "name": "mix-blend-mode" + }, + { + "name": "navigation" + }, + { + "name": "negative" + }, + { + "keywords": [ + "fill", + "contain", + "cover", + "none", + "scale-down" + ], + "name": "object-fit" + }, + { + "name": "object-position" + }, + { + "keywords": [ + "none" + ], + "name": "object-view-box" + }, + { + "longhands": [ + "offset-position", + "offset-path", + "offset-distance", + "offset-rotate", + "offset-anchor" + ], + "name": "offset" + }, + { + "keywords": [ + "auto" + ], + "name": "offset-anchor" + }, + { + "name": "offset-distance" + }, + { + "keywords": [ + "none" + ], + "name": "offset-path" + }, + { + "keywords": [ + "auto", + "normal" + ], + "name": "offset-position" + }, + { + "keywords": [ + "auto", + "reverse" + ], + "name": "offset-rotate" + }, + { + "name": "opacity" + }, + { + "name": "order" + }, + { + "keywords": [ + "normal", + "none" + ], + "name": "origin-trial-test-property" + }, + { + "inherited": true, + "name": "orphans" + }, + { + "longhands": [ + "outline-color", + "outline-style", + "outline-width" + ], + "name": "outline" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "outline-color" + }, + { + "name": "outline-offset" + }, + { + "keywords": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ], + "name": "outline-style" + }, + { + "keywords": [ + "thin", + "medium", + "thick" + ], + "name": "outline-width" + }, + { + "longhands": [ + "overflow-x", + "overflow-y" + ], + "name": "overflow" + }, + { + "inherited": false, + "keywords": [ + "visible", + "none", + "auto" + ], + "name": "overflow-anchor" + }, + { + "name": "overflow-block" + }, + { + "keywords": [ + "border-box", + "content-box", + "padding-box" + ], + "name": "overflow-clip-margin" + }, + { + "name": "overflow-inline" + }, + { + "inherited": true, + "keywords": [ + "normal", + "break-word", + "anywhere" + ], + "name": "overflow-wrap" + }, + { + "keywords": [ + "visible", + "hidden", + "scroll", + "auto", + "overlay", + "clip" + ], + "name": "overflow-x" + }, + { + "keywords": [ + "visible", + "hidden", + "scroll", + "auto", + "overlay", + "clip" + ], + "name": "overflow-y" + }, + { + "keywords": [ + "none", + "auto" + ], + "name": "overlay" + }, + { + "name": "override-colors" + }, + { + "longhands": [ + "overscroll-behavior-x", + "overscroll-behavior-y" + ], + "name": "overscroll-behavior" + }, + { + "name": "overscroll-behavior-block" + }, + { + "name": "overscroll-behavior-inline" + }, + { + "keywords": [ + "auto", + "contain", + "none" + ], + "name": "overscroll-behavior-x" + }, + { + "keywords": [ + "auto", + "contain", + "none" + ], + "name": "overscroll-behavior-y" + }, + { + "name": "pad" + }, + { + "longhands": [ + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ], + "name": "padding" + }, + { + "longhands": [ + "padding-block-start", + "padding-block-end" + ], + "name": "padding-block" + }, + { + "name": "padding-block-end" + }, + { + "name": "padding-block-start" + }, + { + "name": "padding-bottom" + }, + { + "longhands": [ + "padding-inline-start", + "padding-inline-end" + ], + "name": "padding-inline" + }, + { + "name": "padding-inline-end" + }, + { + "name": "padding-inline-start" + }, + { + "name": "padding-left" + }, + { + "name": "padding-right" + }, + { + "name": "padding-top" + }, + { + "keywords": [ + "auto" + ], + "name": "page" + }, + { + "longhands": [ + "break-after" + ], + "name": "page-break-after" + }, + { + "longhands": [ + "break-before" + ], + "name": "page-break-before" + }, + { + "longhands": [ + "break-inside" + ], + "name": "page-break-inside" + }, + { + "name": "page-orientation" + }, + { + "inherited": true, + "keywords": [ + "normal", + "fill", + "stroke", + "markers" + ], + "name": "paint-order" + }, + { + "keywords": [ + "none" + ], + "name": "perspective" + }, + { + "name": "perspective-origin" + }, + { + "longhands": [ + "align-content", + "justify-content" + ], + "name": "place-content" + }, + { + "longhands": [ + "align-items", + "justify-items" + ], + "name": "place-items" + }, + { + "longhands": [ + "align-self", + "justify-self" + ], + "name": "place-self" + }, + { + "inherited": true, + "keywords": [ + "none", + "auto", + "stroke", + "fill", + "painted", + "visible", + "visiblestroke", + "visiblefill", + "visiblepainted", + "bounding-box", + "all" + ], + "name": "pointer-events" + }, + { + "keywords": [ + "static", + "relative", + "absolute", + "fixed", + "sticky" + ], + "name": "position" + }, + { + "keywords": [ + "auto" + ], + "name": "position-anchor" + }, + { + "keywords": [ + "none", + "top", + "bottom", + "center", + "left", + "right", + "x-start", + "x-end", + "y-start", + "y-end", + "start", + "end", + "self-start", + "self-end", + "all" + ], + "name": "position-area" + }, + { + "longhands": [ + "position-try-order", + "position-try-fallbacks" + ], + "name": "position-try" + }, + { + "keywords": [ + "none", + "flip-block", + "flip-inline", + "flip-start" + ], + "name": "position-try-fallbacks" + }, + { + "keywords": [ + "normal", + "most-width", + "most-height", + "most-block-size", + "most-inline-size" + ], + "name": "position-try-order" + }, + { + "keywords": [ + "always", + "anchors-visible", + "no-overflow" + ], + "name": "position-visibility" + }, + { + "name": "prefix" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none" + ], + "name": "quotes" + }, + { + "name": "r" + }, + { + "name": "range" + }, + { + "keywords": [ + "normal", + "flex-visual", + "flex-flow", + "grid-rows", + "grid-columns", + "grid-order" + ], + "name": "reading-flow" + }, + { + "keywords": [ + "none", + "both", + "horizontal", + "vertical", + "block", + "inline" + ], + "name": "resize" + }, + { + "name": "result" + }, + { + "keywords": [ + "auto" + ], + "name": "right" + }, + { + "name": "rotate" + }, + { + "keywords": [ + "normal" + ], + "name": "row-gap" + }, + { + "inherited": true, + "keywords": [ + "space-around", + "start", + "center", + "space-between" + ], + "name": "ruby-align" + }, + { + "inherited": true, + "keywords": [ + "over", + "under" + ], + "name": "ruby-position" + }, + { + "keywords": [ + "auto" + ], + "name": "rx" + }, + { + "keywords": [ + "auto" + ], + "name": "ry" + }, + { + "name": "scale" + }, + { + "keywords": [ + "auto", + "smooth" + ], + "name": "scroll-behavior" + }, + { + "keywords": [ + "none", + "nearest" + ], + "name": "scroll-initial-target" + }, + { + "longhands": [ + "scroll-margin-top", + "scroll-margin-right", + "scroll-margin-bottom", + "scroll-margin-left" + ], + "name": "scroll-margin" + }, + { + "longhands": [ + "scroll-margin-block-start", + "scroll-margin-block-end" + ], + "name": "scroll-margin-block" + }, + { + "name": "scroll-margin-block-end" + }, + { + "name": "scroll-margin-block-start" + }, + { + "name": "scroll-margin-bottom" + }, + { + "longhands": [ + "scroll-margin-inline-start", + "scroll-margin-inline-end" + ], + "name": "scroll-margin-inline" + }, + { + "name": "scroll-margin-inline-end" + }, + { + "name": "scroll-margin-inline-start" + }, + { + "name": "scroll-margin-left" + }, + { + "name": "scroll-margin-right" + }, + { + "name": "scroll-margin-top" + }, + { + "keywords": [ + "none", + "after", + "before" + ], + "name": "scroll-marker-group" + }, + { + "longhands": [ + "scroll-padding-top", + "scroll-padding-right", + "scroll-padding-bottom", + "scroll-padding-left" + ], + "name": "scroll-padding" + }, + { + "longhands": [ + "scroll-padding-block-start", + "scroll-padding-block-end" + ], + "name": "scroll-padding-block" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-block-end" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-block-start" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-bottom" + }, + { + "longhands": [ + "scroll-padding-inline-start", + "scroll-padding-inline-end" + ], + "name": "scroll-padding-inline" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-inline-end" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-inline-start" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-left" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-right" + }, + { + "keywords": [ + "auto" + ], + "name": "scroll-padding-top" + }, + { + "keywords": [ + "none", + "start", + "end", + "center" + ], + "name": "scroll-snap-align" + }, + { + "keywords": [ + "normal", + "always" + ], + "name": "scroll-snap-stop" + }, + { + "keywords": [ + "none", + "x", + "y", + "block", + "inline", + "both", + "mandatory", + "proximity" + ], + "name": "scroll-snap-type" + }, + { + "longhands": [ + "scroll-start-block", + "scroll-start-inline" + ], + "name": "scroll-start" + }, + { + "name": "scroll-start-block" + }, + { + "name": "scroll-start-inline" + }, + { + "name": "scroll-start-x" + }, + { + "name": "scroll-start-y" + }, + { + "longhands": [ + "scroll-timeline-name", + "scroll-timeline-axis" + ], + "name": "scroll-timeline" + }, + { + "name": "scroll-timeline-axis" + }, + { + "name": "scroll-timeline-name" + }, + { + "inherited": true, + "keywords": [ + "auto" + ], + "name": "scrollbar-color" + }, + { + "inherited": false, + "keywords": [ + "auto", + "stable", + "both-edges" + ], + "name": "scrollbar-gutter" + }, + { + "inherited": false, + "keywords": [ + "auto", + "thin", + "none" + ], + "name": "scrollbar-width" + }, + { + "name": "shape-image-threshold" + }, + { + "keywords": [ + "none" + ], + "name": "shape-margin" + }, + { + "keywords": [ + "none" + ], + "name": "shape-outside" + }, + { + "inherited": true, + "keywords": [ + "auto", + "optimizespeed", + "crispedges", + "geometricprecision" + ], + "name": "shape-rendering" + }, + { + "name": "size" + }, + { + "name": "size-adjust" + }, + { + "inherited": true, + "keywords": [ + "none", + "normal", + "spell-out", + "digits", + "literal-punctuation", + "no-punctuation" + ], + "name": "speak" + }, + { + "name": "speak-as" + }, + { + "name": "src" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "stop-color" + }, + { + "name": "stop-opacity" + }, + { + "inherited": true, + "name": "stroke" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "stroke-dasharray" + }, + { + "inherited": true, + "name": "stroke-dashoffset" + }, + { + "inherited": true, + "keywords": [ + "butt", + "round", + "square" + ], + "name": "stroke-linecap" + }, + { + "inherited": true, + "keywords": [ + "miter", + "bevel", + "round" + ], + "name": "stroke-linejoin" + }, + { + "inherited": true, + "name": "stroke-miterlimit" + }, + { + "inherited": true, + "name": "stroke-opacity" + }, + { + "inherited": true, + "name": "stroke-width" + }, + { + "name": "suffix" + }, + { + "name": "symbols" + }, + { + "name": "syntax" + }, + { + "name": "system" + }, + { + "inherited": true, + "name": "tab-size" + }, + { + "keywords": [ + "auto", + "fixed" + ], + "name": "table-layout" + }, + { + "inherited": true, + "keywords": [ + "left", + "right", + "center", + "justify", + "-webkit-left", + "-webkit-right", + "-webkit-center", + "start", + "end" + ], + "name": "text-align" + }, + { + "inherited": true, + "keywords": [ + "auto", + "start", + "end", + "left", + "right", + "center", + "justify" + ], + "name": "text-align-last" + }, + { + "inherited": true, + "keywords": [ + "start", + "middle", + "end" + ], + "name": "text-anchor" + }, + { + "inherited": true, + "keywords": [ + "normal", + "no-autospace" + ], + "name": "text-autospace" + }, + { + "longhands": [ + "text-box-trim", + "text-box-edge" + ], + "name": "text-box" + }, + { + "inherited": true, + "name": "text-box-edge" + }, + { + "keywords": [ + "none", + "trim-start", + "trim-end", + "trim-both" + ], + "name": "text-box-trim" + }, + { + "inherited": true, + "keywords": [ + "none", + "all" + ], + "name": "text-combine-upright" + }, + { + "longhands": [ + "text-decoration-line", + "text-decoration-thickness", + "text-decoration-style", + "text-decoration-color" + ], + "name": "text-decoration" + }, + { + "keywords": [ + "currentcolor" + ], + "name": "text-decoration-color" + }, + { + "keywords": [ + "none", + "underline", + "overline", + "line-through", + "blink", + "spelling-error", + "grammar-error" + ], + "name": "text-decoration-line" + }, + { + "inherited": true, + "keywords": [ + "none", + "auto" + ], + "name": "text-decoration-skip-ink" + }, + { + "keywords": [ + "solid", + "double", + "dotted", + "dashed", + "wavy" + ], + "name": "text-decoration-style" + }, + { + "inherited": false, + "keywords": [ + "auto", + "from-font" + ], + "name": "text-decoration-thickness" + }, + { + "inherited": true, + "longhands": [ + "text-emphasis-style", + "text-emphasis-color" + ], + "name": "text-emphasis" + }, + { + "inherited": true, + "keywords": [ + "currentcolor" + ], + "name": "text-emphasis-color" + }, + { + "inherited": true, + "name": "text-emphasis-position" + }, + { + "inherited": true, + "name": "text-emphasis-style" + }, + { + "inherited": true, + "name": "text-indent" + }, + { + "inherited": true, + "keywords": [ + "sideways", + "mixed", + "upright" + ], + "name": "text-orientation" + }, + { + "keywords": [ + "clip", + "ellipsis" + ], + "name": "text-overflow" + }, + { + "inherited": true, + "keywords": [ + "auto", + "optimizespeed", + "optimizelegibility", + "geometricprecision" + ], + "name": "text-rendering" + }, + { + "inherited": true, + "keywords": [ + "none" + ], + "name": "text-shadow" + }, + { + "inherited": true, + "keywords": [ + "none", + "auto" + ], + "name": "text-size-adjust" + }, + { + "inherited": true, + "longhands": [ + "text-autospace", + "text-spacing-trim" + ], + "name": "text-spacing" + }, + { + "inherited": true, + "keywords": [ + "normal", + "space-all", + "space-first", + "trim-start" + ], + "name": "text-spacing-trim" + }, + { + "inherited": true, + "keywords": [ + "capitalize", + "uppercase", + "lowercase", + "none", + "math-auto" + ], + "name": "text-transform" + }, + { + "inherited": true, + "keywords": [ + "auto" + ], + "name": "text-underline-offset" + }, + { + "inherited": true, + "keywords": [ + "auto", + "from-font", + "under", + "left", + "right" + ], + "name": "text-underline-position" + }, + { + "inherited": true, + "longhands": [ + "text-wrap-mode", + "text-wrap-style" + ], + "name": "text-wrap" + }, + { + "inherited": true, + "keywords": [ + "wrap", + "nowrap" + ], + "name": "text-wrap-mode" + }, + { + "inherited": true, + "keywords": [ + "auto", + "balance", + "pretty", + "stable" + ], + "name": "text-wrap-style" + }, + { + "name": "timeline-scope" + }, + { + "keywords": [ + "auto" + ], + "name": "top" + }, + { + "keywords": [ + "auto", + "none", + "pan-x", + "pan-left", + "pan-right", + "pan-y", + "pan-up", + "pan-down", + "pinch-zoom", + "manipulation" + ], + "name": "touch-action" + }, + { + "keywords": [ + "none" + ], + "name": "transform" + }, + { + "keywords": [ + "content-box", + "border-box", + "fill-box", + "stroke-box", + "view-box" + ], + "name": "transform-box" + }, + { + "name": "transform-origin" + }, + { + "keywords": [ + "flat", + "preserve-3d" + ], + "name": "transform-style" + }, + { + "longhands": [ + "transition-property", + "transition-duration", + "transition-timing-function", + "transition-delay", + "transition-behavior" + ], + "name": "transition" + }, + { + "keywords": [ + "normal", + "allow-discrete" + ], + "name": "transition-behavior" + }, + { + "name": "transition-delay" + }, + { + "name": "transition-duration" + }, + { + "keywords": [ + "none" + ], + "name": "transition-property" + }, + { + "keywords": [ + "linear", + "ease", + "ease-in", + "ease-out", + "ease-in-out", + "jump-both", + "jump-end", + "jump-none", + "jump-start", + "step-start", + "step-end" + ], + "name": "transition-timing-function" + }, + { + "name": "translate" + }, + { + "name": "types" + }, + { + "keywords": [ + "normal", + "embed", + "bidi-override", + "isolate", + "plaintext", + "isolate-override" + ], + "name": "unicode-bidi" + }, + { + "name": "unicode-range" + }, + { + "inherited": true, + "keywords": [ + "auto", + "none", + "text", + "all", + "contain" + ], + "name": "user-select" + }, + { + "keywords": [ + "none", + "non-scaling-stroke" + ], + "name": "vector-effect" + }, + { + "keywords": [ + "baseline", + "sub", + "super", + "text-top", + "text-bottom", + "middle" + ], + "name": "vertical-align" + }, + { + "longhands": [ + "view-timeline-name", + "view-timeline-axis", + "view-timeline-inset" + ], + "name": "view-timeline" + }, + { + "name": "view-timeline-axis" + }, + { + "name": "view-timeline-inset" + }, + { + "name": "view-timeline-name" + }, + { + "keywords": [ + "flat", + "layered" + ], + "name": "view-transition-capture-mode" + }, + { + "keywords": [ + "none" + ], + "name": "view-transition-class" + }, + { + "keywords": [ + "normal", + "contain", + "nearest" + ], + "name": "view-transition-group" + }, + { + "keywords": [ + "none", + "auto" + ], + "name": "view-transition-name" + }, + { + "inherited": true, + "keywords": [ + "visible", + "hidden", + "collapse" + ], + "name": "visibility" + }, + { + "inherited": true, + "longhands": [ + "white-space-collapse", + "text-wrap-mode" + ], + "name": "white-space" + }, + { + "inherited": true, + "keywords": [ + "collapse", + "preserve", + "preserve-breaks", + "break-spaces" + ], + "name": "white-space-collapse" + }, + { + "inherited": true, + "name": "widows" + }, + { + "keywords": [ + "auto", + "fit-content", + "min-content", + "max-content" + ], + "name": "width" + }, + { + "keywords": [ + "auto" + ], + "name": "will-change" + }, + { + "inherited": true, + "keywords": [ + "normal", + "break-all", + "keep-all", + "break-word", + "auto-phrase" + ], + "name": "word-break" + }, + { + "inherited": true, + "keywords": [ + "normal" + ], + "name": "word-spacing" + }, + { + "inherited": true, + "keywords": [ + "horizontal-tb", + "vertical-rl", + "vertical-lr", + "sideways-rl", + "sideways-lr" + ], + "name": "writing-mode" + }, + { + "name": "x" + }, + { + "name": "y" + }, + { + "keywords": [ + "auto" + ], + "name": "z-index" + }, + { + "name": "zoom" + } +]; + +export const generatedPropertyValues = { + "-webkit-box-align": { + "values": [ + "stretch", + "start", + "center", + "end", + "baseline" + ] + }, + "-webkit-box-decoration-break": { + "values": [ + "slice", + "clone" + ] + }, + "-webkit-box-direction": { + "values": [ + "normal", + "reverse" + ] + }, + "-webkit-box-orient": { + "values": [ + "horizontal", + "vertical" + ] + }, + "-webkit-box-pack": { + "values": [ + "start", + "center", + "end", + "justify" + ] + }, + "-webkit-line-break": { + "values": [ + "auto", + "loose", + "normal", + "strict", + "after-white-space", + "anywhere" + ] + }, + "-webkit-line-clamp": { + "values": [ + "none" + ] + }, + "-webkit-print-color-adjust": { + "values": [ + "economy", + "exact" + ] + }, + "-webkit-rtl-ordering": { + "values": [ + "logical", + "visual" + ] + }, + "-webkit-text-security": { + "values": [ + "none", + "disc", + "circle", + "square" + ] + }, + "-webkit-user-drag": { + "values": [ + "auto", + "none", + "element" + ] + }, + "-webkit-user-modify": { + "values": [ + "read-only", + "read-write", + "read-write-plaintext-only" + ] + }, + "accent-color": { + "values": [ + "auto", + "currentcolor" + ] + }, + "alignment-baseline": { + "values": [ + "auto", + "baseline", + "alphabetic", + "ideographic", + "middle", + "central", + "mathematical", + "before-edge", + "text-before-edge", + "after-edge", + "text-after-edge", + "hanging" + ] + }, + "anchor-name": { + "values": [ + "none" + ] + }, + "anchor-scope": { + "values": [ + "none", + "all" + ] + }, + "animation-composition": { + "values": [ + "replace", + "add", + "accumulate" + ] + }, + "animation-direction": { + "values": [ + "normal", + "reverse", + "alternate", + "alternate-reverse" + ] + }, + "animation-fill-mode": { + "values": [ + "none", + "forwards", + "backwards", + "both" + ] + }, + "animation-iteration-count": { + "values": [ + "infinite" + ] + }, + "animation-name": { + "values": [ + "none" + ] + }, + "animation-play-state": { + "values": [ + "running", + "paused" + ] + }, + "animation-timeline": { + "values": [ + "none", + "auto" + ] + }, + "animation-timing-function": { + "values": [ + "linear", + "ease", + "ease-in", + "ease-out", + "ease-in-out", + "jump-both", + "jump-end", + "jump-none", + "jump-start", + "step-start", + "step-end" + ] + }, + "animation-trigger-timeline": { + "values": [ + "none", + "auto" + ] + }, + "animation-trigger-type": { + "values": [ + "once", + "repeat", + "alternate", + "state" + ] + }, + "app-region": { + "values": [ + "none", + "drag", + "no-drag" + ] + }, + "aspect-ratio": { + "values": [ + "auto" + ] + }, + "backdrop-filter": { + "values": [ + "none" + ] + }, + "backface-visibility": { + "values": [ + "visible", + "hidden" + ] + }, + "background-attachment": { + "values": [ + "scroll", + "fixed", + "local" + ] + }, + "background-blend-mode": { + "values": [ + "normal", + "multiply", + "screen", + "overlay", + "darken", + "lighten", + "color-dodge", + "color-burn", + "hard-light", + "soft-light", + "difference", + "exclusion", + "hue", + "saturation", + "color", + "luminosity" + ] + }, + "background-clip": { + "values": [ + "border-box", + "padding-box", + "content-box", + "text" + ] + }, + "background-color": { + "values": [ + "currentcolor" + ] + }, + "background-image": { + "values": [ + "auto", + "none" + ] + }, + "background-origin": { + "values": [ + "border-box", + "padding-box", + "content-box" + ] + }, + "background-size": { + "values": [ + "auto", + "cover", + "contain" + ] + }, + "baseline-shift": { + "values": [ + "baseline", + "sub", + "super" + ] + }, + "baseline-source": { + "values": [ + "auto", + "first", + "last" + ] + }, + "block-size": { + "values": [ + "auto" + ] + }, + "border-bottom-color": { + "values": [ + "currentcolor" + ] + }, + "border-bottom-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "border-bottom-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "border-collapse": { + "values": [ + "separate", + "collapse" + ] + }, + "border-image-repeat": { + "values": [ + "stretch", + "repeat", + "round", + "space" + ] + }, + "border-image-source": { + "values": [ + "none" + ] + }, + "border-image-width": { + "values": [ + "auto" + ] + }, + "border-left-color": { + "values": [ + "currentcolor" + ] + }, + "border-left-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "border-left-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "border-right-color": { + "values": [ + "currentcolor" + ] + }, + "border-right-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "border-right-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "border-style": { + "values": [ + "none" + ] + }, + "border-top-color": { + "values": [ + "currentcolor" + ] + }, + "border-top-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "border-top-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "bottom": { + "values": [ + "auto" + ] + }, + "box-decoration-break": { + "values": [ + "slice", + "clone" + ] + }, + "box-shadow": { + "values": [ + "none" + ] + }, + "box-sizing": { + "values": [ + "content-box", + "border-box" + ] + }, + "break-after": { + "values": [ + "auto", + "avoid", + "avoid-column", + "avoid-page", + "column", + "left", + "page", + "recto", + "right", + "verso" + ] + }, + "break-before": { + "values": [ + "auto", + "avoid", + "avoid-column", + "avoid-page", + "column", + "left", + "page", + "recto", + "right", + "verso" + ] + }, + "break-inside": { + "values": [ + "auto", + "avoid", + "avoid-column", + "avoid-page" + ] + }, + "buffered-rendering": { + "values": [ + "auto", + "dynamic", + "static" + ] + }, + "caption-side": { + "values": [ + "top", + "bottom" + ] + }, + "caret-animation": { + "values": [ + "auto", + "manual" + ] + }, + "caret-color": { + "values": [ + "auto", + "currentcolor" + ] + }, + "clear": { + "values": [ + "none", + "left", + "right", + "both", + "inline-start", + "inline-end" + ] + }, + "clip": { + "values": [ + "auto" + ] + }, + "clip-path": { + "values": [ + "border-box", + "padding-box", + "content-box", + "margin-box", + "fill-box", + "stroke-box", + "view-box", + "none" + ] + }, + "clip-rule": { + "values": [ + "nonzero", + "evenodd" + ] + }, + "color": { + "values": [ + "currentcolor" + ] + }, + "color-interpolation": { + "values": [ + "auto", + "srgb", + "linearrgb" + ] + }, + "color-interpolation-filters": { + "values": [ + "auto", + "srgb", + "linearrgb" + ] + }, + "color-rendering": { + "values": [ + "auto", + "optimizespeed", + "optimizequality" + ] + }, + "column-count": { + "values": [ + "auto" + ] + }, + "column-fill": { + "values": [ + "balance", + "auto" + ] + }, + "column-gap": { + "values": [ + "normal" + ] + }, + "column-rule-color": { + "values": [ + "currentcolor" + ] + }, + "column-rule-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "column-rule-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "column-span": { + "values": [ + "none", + "all" + ] + }, + "column-width": { + "values": [ + "auto" + ] + }, + "contain": { + "values": [ + "none", + "strict", + "content", + "size", + "layout", + "style", + "paint", + "inline-size", + "block-size" + ] + }, + "contain-intrinsic-height": { + "values": [ + "none" + ] + }, + "contain-intrinsic-width": { + "values": [ + "none" + ] + }, + "container-name": { + "values": [ + "none" + ] + }, + "container-type": { + "values": [ + "normal", + "inline-size", + "size", + "scroll-state" + ] + }, + "content-visibility": { + "values": [ + "visible", + "auto", + "hidden" + ] + }, + "counter-increment": { + "values": [ + "none" + ] + }, + "counter-reset": { + "values": [ + "none" + ] + }, + "counter-set": { + "values": [ + "none" + ] + }, + "cursor": { + "values": [ + "auto", + "default", + "none", + "context-menu", + "help", + "pointer", + "progress", + "wait", + "cell", + "crosshair", + "text", + "vertical-text", + "alias", + "copy", + "move", + "no-drop", + "not-allowed", + "e-resize", + "n-resize", + "ne-resize", + "nw-resize", + "s-resize", + "se-resize", + "sw-resize", + "w-resize", + "ew-resize", + "ns-resize", + "nesw-resize", + "nwse-resize", + "col-resize", + "row-resize", + "all-scroll", + "zoom-in", + "zoom-out", + "grab", + "grabbing" + ] + }, + "d": { + "values": [ + "none" + ] + }, + "direction": { + "values": [ + "ltr", + "rtl" + ] + }, + "display": { + "values": [ + "inline", + "block", + "list-item", + "inline-block", + "table", + "inline-table", + "table-row-group", + "table-header-group", + "table-footer-group", + "table-row", + "table-column-group", + "table-column", + "table-cell", + "table-caption", + "-webkit-box", + "-webkit-inline-box", + "flex", + "inline-flex", + "grid", + "inline-grid", + "contents", + "flow-root", + "none", + "flow", + "math", + "ruby", + "ruby-text", + "masonry", + "inline-masonry" + ] + }, + "dominant-baseline": { + "values": [ + "auto", + "alphabetic", + "ideographic", + "middle", + "central", + "mathematical", + "hanging", + "use-script", + "no-change", + "reset-size", + "text-after-edge", + "text-before-edge" + ] + }, + "dynamic-range-limit": { + "values": [ + "standard", + "high", + "constrained-high" + ] + }, + "empty-cells": { + "values": [ + "show", + "hide" + ] + }, + "field-sizing": { + "values": [ + "fixed", + "content" + ] + }, + "fill-rule": { + "values": [ + "nonzero", + "evenodd" + ] + }, + "filter": { + "values": [ + "none" + ] + }, + "flex-basis": { + "values": [ + "auto", + "fit-content", + "min-content", + "max-content", + "content" + ] + }, + "flex-direction": { + "values": [ + "row", + "row-reverse", + "column", + "column-reverse" + ] + }, + "flex-wrap": { + "values": [ + "nowrap", + "wrap", + "wrap-reverse" + ] + }, + "float": { + "values": [ + "none", + "left", + "right", + "inline-start", + "inline-end" + ] + }, + "flood-color": { + "values": [ + "currentcolor" + ] + }, + "font-feature-settings": { + "values": [ + "normal" + ] + }, + "font-kerning": { + "values": [ + "auto", + "normal", + "none" + ] + }, + "font-optical-sizing": { + "values": [ + "auto", + "none" + ] + }, + "font-palette": { + "values": [ + "normal", + "light", + "dark" + ] + }, + "font-size": { + "values": [ + "xx-small", + "x-small", + "small", + "medium", + "large", + "x-large", + "xx-large", + "xxx-large", + "larger", + "smaller", + "-webkit-xxx-large" + ] + }, + "font-size-adjust": { + "values": [ + "none", + "ex-height", + "cap-height", + "ch-width", + "ic-width", + "ic-height", + "from-font" + ] + }, + "font-stretch": { + "values": [ + "normal", + "ultra-condensed", + "extra-condensed", + "condensed", + "semi-condensed", + "semi-expanded", + "expanded", + "extra-expanded", + "ultra-expanded" + ] + }, + "font-style": { + "values": [ + "normal", + "italic", + "oblique" + ] + }, + "font-synthesis-small-caps": { + "values": [ + "auto", + "none" + ] + }, + "font-synthesis-style": { + "values": [ + "auto", + "none" + ] + }, + "font-synthesis-weight": { + "values": [ + "auto", + "none" + ] + }, + "font-variant-alternates": { + "values": [ + "normal" + ] + }, + "font-variant-caps": { + "values": [ + "normal", + "small-caps", + "all-small-caps", + "petite-caps", + "all-petite-caps", + "unicase", + "titling-caps" + ] + }, + "font-variant-east-asian": { + "values": [ + "normal", + "jis78", + "jis83", + "jis90", + "jis04", + "simplified", + "traditional", + "full-width", + "proportional-width", + "ruby" + ] + }, + "font-variant-emoji": { + "values": [ + "normal", + "text", + "emoji", + "unicode" + ] + }, + "font-variant-ligatures": { + "values": [ + "normal", + "none", + "common-ligatures", + "no-common-ligatures", + "discretionary-ligatures", + "no-discretionary-ligatures", + "historical-ligatures", + "no-historical-ligatures", + "contextual", + "no-contextual" + ] + }, + "font-variant-numeric": { + "values": [ + "normal", + "lining-nums", + "oldstyle-nums", + "proportional-nums", + "tabular-nums", + "diagonal-fractions", + "stacked-fractions", + "ordinal", + "slashed-zero" + ] + }, + "font-variant-position": { + "values": [ + "normal", + "sub", + "super" + ] + }, + "font-variation-settings": { + "values": [ + "normal" + ] + }, + "font-weight": { + "values": [ + "normal", + "bold", + "bolder", + "lighter" + ] + }, + "forced-color-adjust": { + "values": [ + "auto", + "none", + "preserve-parent-color" + ] + }, + "grid-auto-columns": { + "values": [ + "auto", + "min-content", + "max-content" + ] + }, + "grid-auto-flow": { + "values": [ + "row", + "column" + ] + }, + "grid-auto-rows": { + "values": [ + "auto", + "min-content", + "max-content" + ] + }, + "grid-column-end": { + "values": [ + "auto" + ] + }, + "grid-column-start": { + "values": [ + "auto" + ] + }, + "grid-row-end": { + "values": [ + "auto" + ] + }, + "grid-row-start": { + "values": [ + "auto" + ] + }, + "grid-template-areas": { + "values": [ + "none" + ] + }, + "grid-template-columns": { + "values": [ + "none" + ] + }, + "grid-template-rows": { + "values": [ + "none" + ] + }, + "height": { + "values": [ + "auto", + "fit-content", + "min-content", + "max-content" + ] + }, + "hyphenate-limit-chars": { + "values": [ + "auto" + ] + }, + "hyphens": { + "values": [ + "none", + "manual", + "auto" + ] + }, + "image-rendering": { + "values": [ + "auto", + "optimizespeed", + "optimizequality", + "-webkit-optimize-contrast", + "pixelated" + ] + }, + "initial-letter": { + "values": [ + "drop", + "normal", + "raise" + ] + }, + "inline-size": { + "values": [ + "auto" + ] + }, + "interactivity": { + "values": [ + "auto", + "inert" + ] + }, + "interpolate-size": { + "values": [ + "numeric-only", + "allow-keywords" + ] + }, + "isolation": { + "values": [ + "auto", + "isolate" + ] + }, + "left": { + "values": [ + "auto" + ] + }, + "letter-spacing": { + "values": [ + "normal" + ] + }, + "lighting-color": { + "values": [ + "currentcolor" + ] + }, + "line-break": { + "values": [ + "auto", + "loose", + "normal", + "strict", + "anywhere" + ] + }, + "line-clamp": { + "values": [ + "none", + "auto" + ] + }, + "line-height": { + "values": [ + "normal" + ] + }, + "list-style-image": { + "values": [ + "none" + ] + }, + "list-style-position": { + "values": [ + "outside", + "inside" + ] + }, + "list-style-type": { + "values": [ + "disc", + "circle", + "square", + "disclosure-open", + "disclosure-closed", + "decimal", + "none" + ] + }, + "margin-block-end": { + "values": [ + "auto" + ] + }, + "margin-block-start": { + "values": [ + "auto" + ] + }, + "margin-bottom": { + "values": [ + "auto" + ] + }, + "margin-inline-end": { + "values": [ + "auto" + ] + }, + "margin-inline-start": { + "values": [ + "auto" + ] + }, + "margin-left": { + "values": [ + "auto" + ] + }, + "margin-right": { + "values": [ + "auto" + ] + }, + "margin-top": { + "values": [ + "auto" + ] + }, + "marker-end": { + "values": [ + "none" + ] + }, + "marker-mid": { + "values": [ + "none" + ] + }, + "marker-start": { + "values": [ + "none" + ] + }, + "mask-type": { + "values": [ + "luminance", + "alpha" + ] + }, + "masonry-auto-tracks": { + "values": [ + "auto", + "min-content", + "max-content" + ] + }, + "masonry-direction": { + "values": [ + "row", + "row-reverse", + "column", + "column-reverse" + ] + }, + "masonry-fill": { + "values": [ + "normal", + "reverse" + ] + }, + "masonry-slack": { + "values": [ + "normal" + ] + }, + "masonry-track-end": { + "values": [ + "auto" + ] + }, + "masonry-track-start": { + "values": [ + "auto" + ] + }, + "math-shift": { + "values": [ + "normal", + "compact" + ] + }, + "math-style": { + "values": [ + "normal", + "compact" + ] + }, + "max-block-size": { + "values": [ + "none" + ] + }, + "max-height": { + "values": [ + "none" + ] + }, + "max-inline-size": { + "values": [ + "none" + ] + }, + "max-width": { + "values": [ + "none" + ] + }, + "mix-blend-mode": { + "values": [ + "normal", + "multiply", + "screen", + "overlay", + "darken", + "lighten", + "color-dodge", + "color-burn", + "hard-light", + "soft-light", + "difference", + "exclusion", + "hue", + "saturation", + "color", + "luminosity", + "plus-lighter" + ] + }, + "object-fit": { + "values": [ + "fill", + "contain", + "cover", + "none", + "scale-down" + ] + }, + "object-view-box": { + "values": [ + "none" + ] + }, + "offset-anchor": { + "values": [ + "auto" + ] + }, + "offset-path": { + "values": [ + "none" + ] + }, + "offset-position": { + "values": [ + "auto", + "normal" + ] + }, + "offset-rotate": { + "values": [ + "auto", + "reverse" + ] + }, + "origin-trial-test-property": { + "values": [ + "normal", + "none" + ] + }, + "outline-color": { + "values": [ + "currentcolor" + ] + }, + "outline-style": { + "values": [ + "none", + "hidden", + "inset", + "groove", + "outset", + "ridge", + "dotted", + "dashed", + "solid", + "double" + ] + }, + "outline-width": { + "values": [ + "thin", + "medium", + "thick" + ] + }, + "overflow-anchor": { + "values": [ + "visible", + "none", + "auto" + ] + }, + "overflow-clip-margin": { + "values": [ + "border-box", + "content-box", + "padding-box" + ] + }, + "overflow-wrap": { + "values": [ + "normal", + "break-word", + "anywhere" + ] + }, + "overflow-x": { + "values": [ + "visible", + "hidden", + "scroll", + "auto", + "overlay", + "clip" + ] + }, + "overflow-y": { + "values": [ + "visible", + "hidden", + "scroll", + "auto", + "overlay", + "clip" + ] + }, + "overlay": { + "values": [ + "none", + "auto" + ] + }, + "overscroll-behavior-x": { + "values": [ + "auto", + "contain", + "none" + ] + }, + "overscroll-behavior-y": { + "values": [ + "auto", + "contain", + "none" + ] + }, + "page": { + "values": [ + "auto" + ] + }, + "paint-order": { + "values": [ + "normal", + "fill", + "stroke", + "markers" + ] + }, + "perspective": { + "values": [ + "none" + ] + }, + "pointer-events": { + "values": [ + "none", + "auto", + "stroke", + "fill", + "painted", + "visible", + "visiblestroke", + "visiblefill", + "visiblepainted", + "bounding-box", + "all" + ] + }, + "position": { + "values": [ + "static", + "relative", + "absolute", + "fixed", + "sticky" + ] + }, + "position-anchor": { + "values": [ + "auto" + ] + }, + "position-area": { + "values": [ + "none", + "top", + "bottom", + "center", + "left", + "right", + "x-start", + "x-end", + "y-start", + "y-end", + "start", + "end", + "self-start", + "self-end", + "all" + ] + }, + "position-try-fallbacks": { + "values": [ + "none", + "flip-block", + "flip-inline", + "flip-start" + ] + }, + "position-try-order": { + "values": [ + "normal", + "most-width", + "most-height", + "most-block-size", + "most-inline-size" + ] + }, + "position-visibility": { + "values": [ + "always", + "anchors-visible", + "no-overflow" + ] + }, + "quotes": { + "values": [ + "auto", + "none" + ] + }, + "reading-flow": { + "values": [ + "normal", + "flex-visual", + "flex-flow", + "grid-rows", + "grid-columns", + "grid-order" + ] + }, + "resize": { + "values": [ + "none", + "both", + "horizontal", + "vertical", + "block", + "inline" + ] + }, + "right": { + "values": [ + "auto" + ] + }, + "row-gap": { + "values": [ + "normal" + ] + }, + "ruby-align": { + "values": [ + "space-around", + "start", + "center", + "space-between" + ] + }, + "ruby-position": { + "values": [ + "over", + "under" + ] + }, + "rx": { + "values": [ + "auto" + ] + }, + "ry": { + "values": [ + "auto" + ] + }, + "scroll-behavior": { + "values": [ + "auto", + "smooth" + ] + }, + "scroll-initial-target": { + "values": [ + "none", + "nearest" + ] + }, + "scroll-marker-group": { + "values": [ + "none", + "after", + "before" + ] + }, + "scroll-padding-block-end": { + "values": [ + "auto" + ] + }, + "scroll-padding-block-start": { + "values": [ + "auto" + ] + }, + "scroll-padding-bottom": { + "values": [ + "auto" + ] + }, + "scroll-padding-inline-end": { + "values": [ + "auto" + ] + }, + "scroll-padding-inline-start": { + "values": [ + "auto" + ] + }, + "scroll-padding-left": { + "values": [ + "auto" + ] + }, + "scroll-padding-right": { + "values": [ + "auto" + ] + }, + "scroll-padding-top": { + "values": [ + "auto" + ] + }, + "scroll-snap-align": { + "values": [ + "none", + "start", + "end", + "center" + ] + }, + "scroll-snap-stop": { + "values": [ + "normal", + "always" + ] + }, + "scroll-snap-type": { + "values": [ + "none", + "x", + "y", + "block", + "inline", + "both", + "mandatory", + "proximity" + ] + }, + "scrollbar-color": { + "values": [ + "auto" + ] + }, + "scrollbar-gutter": { + "values": [ + "auto", + "stable", + "both-edges" + ] + }, + "scrollbar-width": { + "values": [ + "auto", + "thin", + "none" + ] + }, + "shape-margin": { + "values": [ + "none" + ] + }, + "shape-outside": { + "values": [ + "none" + ] + }, + "shape-rendering": { + "values": [ + "auto", + "optimizespeed", + "crispedges", + "geometricprecision" + ] + }, + "speak": { + "values": [ + "none", + "normal", + "spell-out", + "digits", + "literal-punctuation", + "no-punctuation" + ] + }, + "stop-color": { + "values": [ + "currentcolor" + ] + }, + "stroke-dasharray": { + "values": [ + "none" + ] + }, + "stroke-linecap": { + "values": [ + "butt", + "round", + "square" + ] + }, + "stroke-linejoin": { + "values": [ + "miter", + "bevel", + "round" + ] + }, + "table-layout": { + "values": [ + "auto", + "fixed" + ] + }, + "text-align": { + "values": [ + "left", + "right", + "center", + "justify", + "-webkit-left", + "-webkit-right", + "-webkit-center", + "start", + "end" + ] + }, + "text-align-last": { + "values": [ + "auto", + "start", + "end", + "left", + "right", + "center", + "justify" + ] + }, + "text-anchor": { + "values": [ + "start", + "middle", + "end" + ] + }, + "text-autospace": { + "values": [ + "normal", + "no-autospace" + ] + }, + "text-box-trim": { + "values": [ + "none", + "trim-start", + "trim-end", + "trim-both" + ] + }, + "text-combine-upright": { + "values": [ + "none", + "all" + ] + }, + "text-decoration-color": { + "values": [ + "currentcolor" + ] + }, + "text-decoration-line": { + "values": [ + "none", + "underline", + "overline", + "line-through", + "blink", + "spelling-error", + "grammar-error" + ] + }, + "text-decoration-skip-ink": { + "values": [ + "none", + "auto" + ] + }, + "text-decoration-style": { + "values": [ + "solid", + "double", + "dotted", + "dashed", + "wavy" + ] + }, + "text-decoration-thickness": { + "values": [ + "auto", + "from-font" + ] + }, + "text-emphasis-color": { + "values": [ + "currentcolor" + ] + }, + "text-orientation": { + "values": [ + "sideways", + "mixed", + "upright" + ] + }, + "text-overflow": { + "values": [ + "clip", + "ellipsis" + ] + }, + "text-rendering": { + "values": [ + "auto", + "optimizespeed", + "optimizelegibility", + "geometricprecision" + ] + }, + "text-shadow": { + "values": [ + "none" + ] + }, + "text-size-adjust": { + "values": [ + "none", + "auto" + ] + }, + "text-spacing-trim": { + "values": [ + "normal", + "space-all", + "space-first", + "trim-start" + ] + }, + "text-transform": { + "values": [ + "capitalize", + "uppercase", + "lowercase", + "none", + "math-auto" + ] + }, + "text-underline-offset": { + "values": [ + "auto" + ] + }, + "text-underline-position": { + "values": [ + "auto", + "from-font", + "under", + "left", + "right" + ] + }, + "text-wrap-mode": { + "values": [ + "wrap", + "nowrap" + ] + }, + "text-wrap-style": { + "values": [ + "auto", + "balance", + "pretty", + "stable" + ] + }, + "top": { + "values": [ + "auto" + ] + }, + "touch-action": { + "values": [ + "auto", + "none", + "pan-x", + "pan-left", + "pan-right", + "pan-y", + "pan-up", + "pan-down", + "pinch-zoom", + "manipulation" + ] + }, + "transform": { + "values": [ + "none" + ] + }, + "transform-box": { + "values": [ + "content-box", + "border-box", + "fill-box", + "stroke-box", + "view-box" + ] + }, + "transform-style": { + "values": [ + "flat", + "preserve-3d" + ] + }, + "transition-behavior": { + "values": [ + "normal", + "allow-discrete" + ] + }, + "transition-property": { + "values": [ + "none" + ] + }, + "transition-timing-function": { + "values": [ + "linear", + "ease", + "ease-in", + "ease-out", + "ease-in-out", + "jump-both", + "jump-end", + "jump-none", + "jump-start", + "step-start", + "step-end" + ] + }, + "unicode-bidi": { + "values": [ + "normal", + "embed", + "bidi-override", + "isolate", + "plaintext", + "isolate-override" + ] + }, + "user-select": { + "values": [ + "auto", + "none", + "text", + "all", + "contain" + ] + }, + "vector-effect": { + "values": [ + "none", + "non-scaling-stroke" + ] + }, + "vertical-align": { + "values": [ + "baseline", + "sub", + "super", + "text-top", + "text-bottom", + "middle" + ] + }, + "view-transition-capture-mode": { + "values": [ + "flat", + "layered" + ] + }, + "view-transition-class": { + "values": [ + "none" + ] + }, + "view-transition-group": { + "values": [ + "normal", + "contain", + "nearest" + ] + }, + "view-transition-name": { + "values": [ + "none", + "auto" + ] + }, + "visibility": { + "values": [ + "visible", + "hidden", + "collapse" + ] + }, + "white-space-collapse": { + "values": [ + "collapse", + "preserve", + "preserve-breaks", + "break-spaces" + ] + }, + "width": { + "values": [ + "auto", + "fit-content", + "min-content", + "max-content" + ] + }, + "will-change": { + "values": [ + "auto" + ] + }, + "word-break": { + "values": [ + "normal", + "break-all", + "keep-all", + "break-word", + "auto-phrase" + ] + }, + "word-spacing": { + "values": [ + "normal" + ] + }, + "writing-mode": { + "values": [ + "horizontal-tb", + "vertical-rl", + "vertical-lr", + "sideways-rl", + "sideways-lr" + ] + }, + "z-index": { + "values": [ + "auto" + ] + } +}; +export const generatedAliasesFor = new Map([ + [ + "-epub-caption-side", + "caption-side" + ], + [ + "-epub-text-combine", + "-webkit-text-combine" + ], + [ + "-epub-text-emphasis", + "text-emphasis" + ], + [ + "-epub-text-emphasis-color", + "text-emphasis-color" + ], + [ + "-epub-text-emphasis-style", + "text-emphasis-style" + ], + [ + "-epub-text-orientation", + "-webkit-text-orientation" + ], + [ + "-epub-text-transform", + "text-transform" + ], + [ + "-epub-word-break", + "word-break" + ], + [ + "-epub-writing-mode", + "-webkit-writing-mode" + ], + [ + "-webkit-align-content", + "align-content" + ], + [ + "-webkit-align-items", + "align-items" + ], + [ + "-webkit-align-self", + "align-self" + ], + [ + "-webkit-animation", + "animation" + ], + [ + "-webkit-animation-delay", + "animation-delay" + ], + [ + "-webkit-animation-direction", + "animation-direction" + ], + [ + "-webkit-animation-duration", + "animation-duration" + ], + [ + "-webkit-animation-fill-mode", + "animation-fill-mode" + ], + [ + "-webkit-animation-iteration-count", + "animation-iteration-count" + ], + [ + "-webkit-animation-name", + "animation-name" + ], + [ + "-webkit-animation-play-state", + "animation-play-state" + ], + [ + "-webkit-animation-timing-function", + "animation-timing-function" + ], + [ + "-webkit-app-region", + "app-region" + ], + [ + "-webkit-appearance", + "appearance" + ], + [ + "-webkit-backface-visibility", + "backface-visibility" + ], + [ + "-webkit-background-clip", + "background-clip" + ], + [ + "-webkit-background-origin", + "background-origin" + ], + [ + "-webkit-background-size", + "background-size" + ], + [ + "-webkit-border-after", + "border-block-end" + ], + [ + "-webkit-border-after-color", + "border-block-end-color" + ], + [ + "-webkit-border-after-style", + "border-block-end-style" + ], + [ + "-webkit-border-after-width", + "border-block-end-width" + ], + [ + "-webkit-border-before", + "border-block-start" + ], + [ + "-webkit-border-before-color", + "border-block-start-color" + ], + [ + "-webkit-border-before-style", + "border-block-start-style" + ], + [ + "-webkit-border-before-width", + "border-block-start-width" + ], + [ + "-webkit-border-bottom-left-radius", + "border-bottom-left-radius" + ], + [ + "-webkit-border-bottom-right-radius", + "border-bottom-right-radius" + ], + [ + "-webkit-border-end", + "border-inline-end" + ], + [ + "-webkit-border-end-color", + "border-inline-end-color" + ], + [ + "-webkit-border-end-style", + "border-inline-end-style" + ], + [ + "-webkit-border-end-width", + "border-inline-end-width" + ], + [ + "-webkit-border-radius", + "border-radius" + ], + [ + "-webkit-border-start", + "border-inline-start" + ], + [ + "-webkit-border-start-color", + "border-inline-start-color" + ], + [ + "-webkit-border-start-style", + "border-inline-start-style" + ], + [ + "-webkit-border-start-width", + "border-inline-start-width" + ], + [ + "-webkit-border-top-left-radius", + "border-top-left-radius" + ], + [ + "-webkit-border-top-right-radius", + "border-top-right-radius" + ], + [ + "-webkit-box-shadow", + "box-shadow" + ], + [ + "-webkit-box-sizing", + "box-sizing" + ], + [ + "-webkit-clip-path", + "clip-path" + ], + [ + "-webkit-column-count", + "column-count" + ], + [ + "-webkit-column-gap", + "column-gap" + ], + [ + "-webkit-column-rule", + "column-rule" + ], + [ + "-webkit-column-rule-color", + "column-rule-color" + ], + [ + "-webkit-column-rule-style", + "column-rule-style" + ], + [ + "-webkit-column-rule-width", + "column-rule-width" + ], + [ + "-webkit-column-span", + "column-span" + ], + [ + "-webkit-column-width", + "column-width" + ], + [ + "-webkit-columns", + "columns" + ], + [ + "-webkit-filter", + "filter" + ], + [ + "-webkit-flex", + "flex" + ], + [ + "-webkit-flex-basis", + "flex-basis" + ], + [ + "-webkit-flex-direction", + "flex-direction" + ], + [ + "-webkit-flex-flow", + "flex-flow" + ], + [ + "-webkit-flex-grow", + "flex-grow" + ], + [ + "-webkit-flex-shrink", + "flex-shrink" + ], + [ + "-webkit-flex-wrap", + "flex-wrap" + ], + [ + "-webkit-font-feature-settings", + "font-feature-settings" + ], + [ + "-webkit-hyphenate-character", + "hyphenate-character" + ], + [ + "-webkit-justify-content", + "justify-content" + ], + [ + "-webkit-logical-height", + "block-size" + ], + [ + "-webkit-logical-width", + "inline-size" + ], + [ + "-webkit-margin-after", + "margin-block-end" + ], + [ + "-webkit-margin-before", + "margin-block-start" + ], + [ + "-webkit-margin-end", + "margin-inline-end" + ], + [ + "-webkit-margin-start", + "margin-inline-start" + ], + [ + "-webkit-mask", + "mask" + ], + [ + "-webkit-mask-clip", + "mask-clip" + ], + [ + "-webkit-mask-composite", + "mask-composite" + ], + [ + "-webkit-mask-image", + "mask-image" + ], + [ + "-webkit-mask-origin", + "mask-origin" + ], + [ + "-webkit-mask-position", + "mask-position" + ], + [ + "-webkit-mask-repeat", + "mask-repeat" + ], + [ + "-webkit-mask-size", + "mask-size" + ], + [ + "-webkit-max-logical-height", + "max-block-size" + ], + [ + "-webkit-max-logical-width", + "max-inline-size" + ], + [ + "-webkit-min-logical-height", + "min-block-size" + ], + [ + "-webkit-min-logical-width", + "min-inline-size" + ], + [ + "-webkit-opacity", + "opacity" + ], + [ + "-webkit-order", + "order" + ], + [ + "-webkit-padding-after", + "padding-block-end" + ], + [ + "-webkit-padding-before", + "padding-block-start" + ], + [ + "-webkit-padding-end", + "padding-inline-end" + ], + [ + "-webkit-padding-start", + "padding-inline-start" + ], + [ + "-webkit-perspective", + "perspective" + ], + [ + "-webkit-perspective-origin", + "perspective-origin" + ], + [ + "-webkit-shape-image-threshold", + "shape-image-threshold" + ], + [ + "-webkit-shape-margin", + "shape-margin" + ], + [ + "-webkit-shape-outside", + "shape-outside" + ], + [ + "-webkit-text-emphasis", + "text-emphasis" + ], + [ + "-webkit-text-emphasis-color", + "text-emphasis-color" + ], + [ + "-webkit-text-emphasis-position", + "text-emphasis-position" + ], + [ + "-webkit-text-emphasis-style", + "text-emphasis-style" + ], + [ + "-webkit-text-size-adjust", + "text-size-adjust" + ], + [ + "-webkit-transform", + "transform" + ], + [ + "-webkit-transform-origin", + "transform-origin" + ], + [ + "-webkit-transform-style", + "transform-style" + ], + [ + "-webkit-transition", + "transition" + ], + [ + "-webkit-transition-delay", + "transition-delay" + ], + [ + "-webkit-transition-duration", + "transition-duration" + ], + [ + "-webkit-transition-property", + "transition-property" + ], + [ + "-webkit-transition-timing-function", + "transition-timing-function" + ], + [ + "-webkit-user-select", + "user-select" + ], + [ + "grid-column-gap", + "column-gap" + ], + [ + "grid-gap", + "gap" + ], + [ + "grid-row-gap", + "row-gap" + ], + [ + "word-wrap", + "overflow-wrap" + ] +]); \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..17e978c --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,32 @@ +{ + "{{chrome}}.manifest_version": 3, + "{{firefox}}.manifest_version": 3, + "icons": { + "16": "icon/16.png", + "32": "icon/32.png", + "48": "icon/48.png", + "96": "icon/96.png", + "128": "icon/128.png" + }, + "{{chrome}}.action": { + "default_popup": "src/popup.html" + }, + "devtools_page": "src/devtools.html", + "sidebar_action": { + "default_panel": "src/sidebar.html", + "default_title": "My Sidebar" + }, + "{{firefox}}.browser_action": { + "default_popup": "src/popup.html" + }, + "host_permissions": [""], + "background": { + "service_worker": "src/background.ts" + }, + "content_scripts": [ + { + "matches": [""], + "js": ["src/content.ts"] + } + ] +} diff --git a/src/pages/Popup.css b/src/pages/Popup.css new file mode 100644 index 0000000..1665040 --- /dev/null +++ b/src/pages/Popup.css @@ -0,0 +1,33 @@ +div { + height: 100%; + display: flex; + flex-direction: column; + gap: 16px; + align-items: center; + justify-content: center; +} + +img { + width: 200px; + height: 200px; +} + +h1 { + font-size: 18px; + color: white; + font-weight: bold; + margin: 0; +} + +p { + color: white; + opacity: 0.7; + margin: 0; +} + +code { + font-size: 12px; + padding: 2px 4px; + background-color: #ffffff24; + border-radius: 2px; +} diff --git a/src/pages/Popup.tsx b/src/pages/Popup.tsx new file mode 100644 index 0000000..50e534e --- /dev/null +++ b/src/pages/Popup.tsx @@ -0,0 +1,18 @@ +import { useEffect } from 'react'; +import "./Popup.css"; + +export default function() { + useEffect(() => { + console.log("Hello from the popup!"); + }, []); + + return ( +
+ +

vite-plugin-web-extension

+

+ Template: react-ts +

+
+ ) +} diff --git a/src/popup.css b/src/popup.css new file mode 100644 index 0000000..37bcf5f --- /dev/null +++ b/src/popup.css @@ -0,0 +1,11 @@ +html, +body { + width: 300px; + height: 400px; + padding: 0; + margin: 0; +} + +body { + background-color: rgb(36, 36, 36); +} diff --git a/src/popup.html b/src/popup.html new file mode 100644 index 0000000..d0a8c86 --- /dev/null +++ b/src/popup.html @@ -0,0 +1,14 @@ + + + + + + + + Popup + + +
+ + + diff --git a/src/popup.tsx b/src/popup.tsx new file mode 100644 index 0000000..8be2629 --- /dev/null +++ b/src/popup.tsx @@ -0,0 +1,9 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import Popup from "./pages/Popup"; + +ReactDOM.createRoot(document.querySelector("#app")!).render( + + + +); diff --git a/src/sidebar.html b/src/sidebar.html new file mode 100644 index 0000000..e19a37e --- /dev/null +++ b/src/sidebar.html @@ -0,0 +1,19 @@ + + + + + + Sidebar + + + +
+ + + \ No newline at end of file diff --git a/src/sidebar.tsx b/src/sidebar.tsx new file mode 100644 index 0000000..a3cb30e --- /dev/null +++ b/src/sidebar.tsx @@ -0,0 +1,352 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import browser from "webextension-polyfill"; +import type { VNode } from "./lib/extract"; +import { cssPropertiesDefault } from "./lib/CSSPropertiesDefaultValue"; + +console.log("Hello from sidebar!"); + + + +function getUniqueSelector(el: Element) { + if (!(el instanceof Element)) + throw new Error("Invalid argument"); + var path = []; + while (el.nodeType === Node.ELEMENT_NODE) { + let selector = el.nodeName.toLowerCase(); + const parentElement = el.parentElement; + if (el.id) { + selector += '#' + el.id; + path.unshift(selector); + break; + } + if (!parentElement) { + break; + } + let nth = 1; + let sib = el.previousElementSibling; + while (sib) { + nth++; + sib = sib.previousElementSibling; + } + selector += ":nth-child(" + nth + ")"; + + path.unshift(selector); + el = parentElement; + } + return path.join(" > "); +} +const code = ` +(() => { + let getUniqueSelector = ${getUniqueSelector.toString()}; + return getUniqueSelector($0); +})() +` + +function useSelectedElement() { + const [element, setElement] = React.useState<{ + vnode: VNode, + inheritedStyle: { [key: string]: string } + } | null>(); + React.useEffect(() => { + const handler = async () => { + const id = Math.floor(Math.random() * 1000000); + // get selector of the selected element + console.log("evaluating code"); + const [selector, isException] = await browser.devtools.inspectedWindow.eval(code); + if (isException) { + console.error("Error evaluating code", isException); + return; + } + console.log(selector); + + const tab = await browser.tabs.query({ active: true, currentWindow: true }); + const tabId = browser.devtools.inspectedWindow.tabId; + console.log("sending message", tabId); + + // post message to content script to get vnode of the selected element + const res = await browser.tabs.sendMessage(tabId, { type: "cloneWithStyle", elementSelector: selector, id }); + console.log("got response", res); + if (!res) { + console.error("No response"); + return; + } + if (res.type !== "cloneWithStyleResult") { + console.error("Unexpected response", res); + return; + } + console.log("got response"); + setElement({ + vnode: res.vnode, + inheritedStyle: res.inheritedStyle + }); + }; + if (!element) { + handler(); + } + + browser.devtools.panels.elements.onSelectionChanged.addListener(handler); + return () => { + browser.devtools.panels.elements.onSelectionChanged.removeListener(handler); + }; + }, []); + return element; +} + +function useGetComputedStyle() { + const [styles, setStyles] = React.useState<{ [key: string]: string } | null>(null); + React.useEffect(() => { + const handler = async () => { + const [styles, isException] = await browser.devtools.inspectedWindow.eval(` + (() => { + const element = $0; + const style = getComputedStyle(element); + const styles = {}; + for (let i = 0; i < style.length; i++) { + const property = style.item(i); + styles[property] = style.getPropertyValue(property); + } + + return styles; + })() + `); + if (isException) { + console.error("Error evaluating code", isException); + return; + } + let newStyles = {} as { [key: string]: string }; + for (const key in styles) { + if (key in cssPropertiesDefault) { + const value = cssPropertiesDefault[key as keyof typeof cssPropertiesDefault]; + if (styles[key] != value) { + newStyles[key] = value; + } + } + else { + newStyles[key] = styles[key]; + } + } + setStyles(newStyles); + }; + if (!styles) { + handler(); + } + + browser.devtools.panels.elements.onSelectionChanged.addListener(handler); + return () => { + browser.devtools.panels.elements.onSelectionChanged.removeListener(handler); + }; + }, []); + return styles; +} + +function kebabToCamel(str: string) { + return str.replace(/-./g, (match) => match[1].toUpperCase()); +} + +function htmlStyleToReactStyle(style: { [key: string]: string }) { + return Object.fromEntries(Object.entries(style).map(([key, value]) => [kebabToCamel(key), value])); +} + +const HTMLComponentTable: { [key: string]: keyof JSX.IntrinsicElements } = { + "a": "a", + "abbr": "abbr", + "address": "address", + "area": "area", + "article": "article", + "aside": "aside", + // "audio": "audio", + "b": "b", + "base": "base", + "bdi": "bdi", + "bdo": "bdo", + "big": "big", + "blockquote": "blockquote", + "body": "body", + "br": "br", + "button": "button", + "canvas": "canvas", + "caption": "caption", + "center": "center", + "cite": "cite", + "code": "code", + "col": "col", + "colgroup": "colgroup", + "data": "data", + "datalist": "datalist", + "dd": "dd", + "del": "del", + "details": "details", + "dfn": "dfn", + "dialog": "dialog", + "div": "div", + "dl": "dl", + "dt": "dt", + "em": "em", + "embed": "embed", + "fieldset": "fieldset", + "figcaption": "figcaption", + "figure": "figure", + "footer": "footer", + "form": "form", + "h1": "h1", + "h2": "h2", + "h3": "h3", + "h4": "h4", + "h5": "h5", + "h6": "h6", + // "head": "head", + "header": "header", + "hgroup": "hgroup", + "hr": "hr", + // "html": "html", + "i": "i", + // "iframe": "iframe", + // "img": "img", + "input": "input", + "ins": "ins", + "kbd": "kbd", + "keygen": "keygen", + "label": "label", + "legend": "legend", + "li": "li", + "link": "link", + "main": "main", + "map": "map", + "mark": "mark", + "menu": "menu", + "menuitem": "menuitem", + // "meta": "meta", + "meter": "meter", + "nav": "nav", + "noindex": "noindex", + "noscript": "noscript", + "object": "object", + "ol": "ol", + "optgroup": "optgroup", + "option": "option", + "output": "output", + "p": "p", + "param": "param", + "picture": "picture", + "pre": "pre", + "progress": "progress", + "q": "q", + "rp": "rp", + "rt": "rt", + "ruby": "ruby", + "s": "s", + "samp": "samp", + "search": "search", + "slot": "slot", + "script": "script", + "section": "section", + "select": "select", + "small": "small", + "source": "source", + "span": "span", + "strong": "strong", + "style": "style", + "sub": "sub", + "summary": "summary", + "sup": "sup", + "table": "table", + "template": "template", + "tbody": "tbody", + "td": "td", + "textarea": "textarea", + "tfoot": "tfoot", + "th": "th", + "thead": "thead", + "time": "time", + "title": "title", + "tr": "tr", + "track": "track", + "u": "u", + "ul": "ul", + "var": "var", + // "video": "video", + "wbr": "wbr", + "webview": "webview", +} + +function VnodeToReact({ vnode }: { vnode: VNode }): React.ReactNode { + if (vnode.type === "text") { + return vnode.text; + } + else if (vnode.type === "element") { + // TODO: support svg + const Tag = HTMLComponentTable[vnode.tagName] ?? "div"; + const style = vnode.style; + const children = vnode.children; + return + {children.map((child, i) => )} + + } +} + +function escapseAttrValue(value: string) { + return value.replaceAll('"', '"') +} + +function VnodeToHTML({ vnode }: { vnode: VNode }): string { + if (vnode.type === "text") { + return vnode.text; + } + else if (vnode.type === "element") { + const Tag = vnode.tagName; + const style = vnode.style; + const children = vnode.children; + return `<${Tag} style="${Object.entries(style).map(([key, value]) => `${key}: ${escapseAttrValue(value)}`).join(";")}"> + ${children.map((child, i) => VnodeToHTML({ vnode: child })).join("")} + ` + } + return ""; +} + +function inheritStyleToStyleText(inheritedStyle: { [key: string]: string }) { + return Object.entries(inheritedStyle).map(([key, value]) => `${key}: ${value}`).join(";\n"); +} + +function Content() { + const data = useSelectedElement(); + const inheritedStyleText = data ? inheritStyleToStyleText(data.inheritedStyle) : null; + const html = data ? VnodeToHTML({ vnode: data?.vnode }) : ""; + return
+

Vnode

+ + {inheritedStyleText} + +
+ + {html} + + {data && +
+ +
+ } +
+
; +} + +ReactDOM.createRoot(document.querySelector("#app")!).render( + + + +); \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3d0a51a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..f72c0ce --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import webExtension, { readJsonFile } from "vite-plugin-web-extension"; + +function generateManifest() { + const manifest = readJsonFile("src/manifest.json"); + const pkg = readJsonFile("package.json"); + return { + name: pkg.name, + description: pkg.description, + version: pkg.version, + ...manifest, + }; +} + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + webExtension({ + manifest: generateManifest, + }), + ], +});