├── .eslintrc.cjs ├── .gitignore ├── .prettierrc ├── README.md ├── README.zh_CN.md ├── dev ├── App.css ├── App.tsx ├── assets │ ├── img.png │ ├── react.svg │ └── scale_screen.gif ├── index.css ├── main.tsx └── vite-env.d.ts ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public └── vite.svg ├── src └── index.tsx ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { browser: true, es2020: true }, 3 | extends: [ 4 | 'eslint:recommended', 5 | 'plugin:@typescript-eslint/recommended', 6 | 'plugin:react-hooks/recommended', 7 | ], 8 | parser: '@typescript-eslint/parser', 9 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, 10 | plugins: ['react-refresh'], 11 | rules: { 12 | 'react-refresh/only-export-components': 'warn', 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "javascript.format.insertSpaceBeforeFunctionParenthesis": true, 5 | "vetur.format.defaultFormatter.js": "vscode-typescript", 6 | "eslintIntegration": true, 7 | "htmlWhitespaceSensitivity": "ignore", 8 | "trailingComma": "none", 9 | "arrowParens": "avoid" 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## r-scale-screen 2 | 3 | If you are using Vue, move to [v-scale-screen](https://github.com/Alfred-Skyblue/v-scale-screen) 4 | 5 | English | [简体中文](./README.zh_CN.md) 6 | 7 | Large-screen adaptive container component, which can be used for large-screen project development, realizes screen adaptation, and can be adaptive according to width, height, and width and height ratios, and full-screen adaptation 8 | 9 | ### Demo 10 | 11 | ![图例](./dev/assets/scale_screen.gif) 12 | 13 | ### Install 14 | 15 | ```bash 16 | npm install r-scale-screen 17 | # or 18 | yarn add r-scale-screen 19 | ``` 20 | 21 | #### Usage 22 | 23 | ```tsx 24 | import RScaleScreen from 'r-scale-screen' 25 | 26 | function App() { 27 | return ( 28 | <> 29 | 30 | .... 31 | .... 32 | .... 33 | .... 34 | .... 35 | 36 | 37 | ) 38 | } 39 | ``` 40 | 41 | ### API 42 | 43 | | Property | Description | Type | Default | 44 | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------- | 45 | | width | Large screen width | `Number` or `String` | 1920 | 46 | | height | Large screen height | `Number` or `String` | 1080 | 47 | | autoScale | Adaptive configuration, when configured as a boolean type, it is to enable or disable the adaptive configuration. When configured as an object, if x is true, the x-axis generates a margin; when y is true, the y-axis generates a margin. This configuration is enabled when the full screen is enabled fail | Boolean or {x:boolean,y:boolean} | true | 48 | | delay | Window resize delay time | Number | 500 | 49 | | fullScreen | Full-screen self-adaptive, there will be a stretching effect when this configuration item is enabled, and auto Scale will be invalid. It is not recommended to enable it if it is not necessary | Boolean | false | 50 | | boxStyle | Modify the container style, such as the side background color when displaying in the center, conforming to the Vue two-way binding style standard format | Object | null | 51 | | wrapperStyle | Modify the adaptive area style to conform to the Vue two-way binding style standard format | Object | null | 52 | | bodyOverflowHidden | After enabling, the body style will be automatically set to `overflow: hidden` | Boolean | true | 53 | -------------------------------------------------------------------------------- /README.zh_CN.md: -------------------------------------------------------------------------------- 1 | ## r-scale-screen 2 | 3 | 如果您是Vue开发者,请移步 [v-scale-screen](https://github.com/Alfred-Skyblue/v-scale-screen) 4 | 5 | 大屏自适应容器组件,可用于大屏项目开发,实现屏幕自适应,可根据宽度自适应,高度自适应,和宽高等比例自适应,全屏自适应(会存在拉伸问题) 6 | 7 | - 仓库地址:[github](https://github.com/Alfred-Skyblue/r-scale-screen) 8 | 9 | ### 图例 10 | 11 | ![图例](./dev/assets/scale_screen.gif) 12 | 13 | ### 安装 14 | 15 | ```bash 16 | npm install r-scale-screen 17 | # or 18 | yarn add r-scale-screen 19 | ``` 20 | 21 | 22 | #### 使用 23 | 24 | ```tsx 25 | import RScaleScreen from 'r-scale-screen' 26 | 27 | function App() { 28 | return ( 29 | <> 30 | 31 | .... 32 | .... 33 | .... 34 | .... 35 | .... 36 | 37 | 38 | ) 39 | } 40 | ``` 41 | 42 | ### API 43 | 44 | | 属性 | 说明 | 类型 | 默认值 | 45 | |--------------------|----------------------------------------------------------------------------------------------------|----------------------------------|-------| 46 | | width | 大屏宽度 | `Number` or `String` | 1920 | 47 | | height | 大屏高度 | `Number` or `String` | 1080 | 48 | | autoScale | 自适应配置,配置为 boolean 类型时,为启动或者关闭自适应,配置为对象时,若 x 为 true,x 轴产生边距,y 为 true 时,y 轴产生边距,启用 fullScreen 时此配置失效 | Boolean or {x:boolean,y:boolean} | true | 49 | | delay | 窗口变化防抖延迟时间 | Number | 500 | 50 | | fullScreen | 全屏自适应,启用此配置项时会存在拉伸效果,同时 autoScale 失效,非必要情况下不建议开启 | Boolean | false | 51 | | boxStyle | 修改容器样式,如居中展示时侧边背景色,符合 Vue 双向绑定 style 标准格式 | Object | null | 52 | | wrapperStyle | 修改自适应区域样式,符合 Vue 双向绑定 style 标准格式 | Object | null | 53 | | bodyOverflowHidden | 启用后body的样式会自动设置为 `overflow: hidden` | Boolean | true | 54 | -------------------------------------------------------------------------------- /dev/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alfred-Skyblue/r-scale-screen/8ec92c39863585f0b516b703c98a1c98fd19782b/dev/App.css -------------------------------------------------------------------------------- /dev/App.tsx: -------------------------------------------------------------------------------- 1 | import './App.css' 2 | import image from './assets/img.png' 3 | 4 | import RScaleScreen from '../src' 5 | 6 | function App() { 7 | return ( 8 | <> 9 | 10 | 11 | 12 | 13 | ) 14 | } 15 | 16 | export default App 17 | -------------------------------------------------------------------------------- /dev/assets/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alfred-Skyblue/r-scale-screen/8ec92c39863585f0b516b703c98a1c98fd19782b/dev/assets/img.png -------------------------------------------------------------------------------- /dev/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dev/assets/scale_screen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alfred-Skyblue/r-scale-screen/8ec92c39863585f0b516b703c98a1c98fd19782b/dev/assets/scale_screen.gif -------------------------------------------------------------------------------- /dev/index.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /dev/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 7 | 8 | 9 | 10 | ) 11 | // The following dependencies are imported but could not be resolved 12 | -------------------------------------------------------------------------------- /dev/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "r-scale-screen", 3 | "version": "0.0.2", 4 | "description": "react 大屏自适应组件", 5 | "main": "dist/r-scale-screen.umd.cjs", 6 | "module": "dist/r-scale-screen.js", 7 | "type": "module", 8 | "types": "dist/types/index.d.ts", 9 | "files": [ 10 | "dist", 11 | "README.zh_CN.md" 12 | ], 13 | "keywords": [ 14 | "react", 15 | "react大屏自适应组件", 16 | "react大屏组件", 17 | "大屏自适应", 18 | "大屏组件" 19 | ], 20 | "scripts": { 21 | "dev": "vite", 22 | "build": "vite build && tsc", 23 | "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", 24 | "preview": "vite preview" 25 | }, 26 | "dependencies": { 27 | "react": "^18.2.0", 28 | "react-dom": "^18.2.0" 29 | }, 30 | "publishConfig": { 31 | "registry": "https://registry.npmjs.org/" 32 | }, 33 | "devDependencies": { 34 | "@types/react": "^18.0.28", 35 | "@types/react-dom": "^18.0.11", 36 | "@typescript-eslint/eslint-plugin": "^5.57.1", 37 | "@typescript-eslint/parser": "^5.57.1", 38 | "@vitejs/plugin-react": "^4.0.0", 39 | "eslint": "^8.38.0", 40 | "eslint-plugin-react-hooks": "^4.6.0", 41 | "eslint-plugin-react-refresh": "^0.3.4", 42 | "prettier": "^2.8.8", 43 | "typescript": "^5.0.2", 44 | "vite": "^4.3.2" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | dependencies: 4 | react: 5 | specifier: ^18.2.0 6 | version: 18.2.0 7 | react-dom: 8 | specifier: ^18.2.0 9 | version: 18.2.0(react@18.2.0) 10 | 11 | devDependencies: 12 | '@types/react': 13 | specifier: ^18.0.28 14 | version: 18.0.28 15 | '@types/react-dom': 16 | specifier: ^18.0.11 17 | version: 18.0.11 18 | '@typescript-eslint/eslint-plugin': 19 | specifier: ^5.57.1 20 | version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.2) 21 | '@typescript-eslint/parser': 22 | specifier: ^5.57.1 23 | version: 5.57.1(eslint@8.38.0)(typescript@5.0.2) 24 | '@vitejs/plugin-react': 25 | specifier: ^4.0.0 26 | version: 4.0.0(vite@4.3.2) 27 | eslint: 28 | specifier: ^8.38.0 29 | version: 8.38.0 30 | eslint-plugin-react-hooks: 31 | specifier: ^4.6.0 32 | version: 4.6.0(eslint@8.38.0) 33 | eslint-plugin-react-refresh: 34 | specifier: ^0.3.4 35 | version: 0.3.4(eslint@8.38.0) 36 | prettier: 37 | specifier: ^2.8.8 38 | version: 2.8.8 39 | typescript: 40 | specifier: ^5.0.2 41 | version: 5.0.2 42 | vite: 43 | specifier: ^4.3.2 44 | version: 4.3.2 45 | 46 | packages: 47 | 48 | /@ampproject/remapping@2.2.1: 49 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 50 | engines: {node: '>=6.0.0'} 51 | dependencies: 52 | '@jridgewell/gen-mapping': 0.3.3 53 | '@jridgewell/trace-mapping': 0.3.18 54 | dev: true 55 | 56 | /@babel/code-frame@7.21.4: 57 | resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} 58 | engines: {node: '>=6.9.0'} 59 | dependencies: 60 | '@babel/highlight': 7.18.6 61 | dev: true 62 | 63 | /@babel/compat-data@7.21.5: 64 | resolution: {integrity: sha512-M+XAiQ7GzQ3FDPf0KOLkugzptnIypt0X0ma0wmlTKPR3IchgNFdx2JXxZdvd18JY5s7QkaFD/qyX0dsMpog/Ug==} 65 | engines: {node: '>=6.9.0'} 66 | dev: true 67 | 68 | /@babel/core@7.21.5: 69 | resolution: {integrity: sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g==} 70 | engines: {node: '>=6.9.0'} 71 | dependencies: 72 | '@ampproject/remapping': 2.2.1 73 | '@babel/code-frame': 7.21.4 74 | '@babel/generator': 7.21.5 75 | '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) 76 | '@babel/helper-module-transforms': 7.21.5 77 | '@babel/helpers': 7.21.5 78 | '@babel/parser': 7.21.5 79 | '@babel/template': 7.20.7 80 | '@babel/traverse': 7.21.5 81 | '@babel/types': 7.21.5 82 | convert-source-map: 1.9.0 83 | debug: 4.3.4 84 | gensync: 1.0.0-beta.2 85 | json5: 2.2.3 86 | semver: 6.3.0 87 | transitivePeerDependencies: 88 | - supports-color 89 | dev: true 90 | 91 | /@babel/generator@7.21.5: 92 | resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} 93 | engines: {node: '>=6.9.0'} 94 | dependencies: 95 | '@babel/types': 7.21.5 96 | '@jridgewell/gen-mapping': 0.3.3 97 | '@jridgewell/trace-mapping': 0.3.18 98 | jsesc: 2.5.2 99 | dev: true 100 | 101 | /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.5): 102 | resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} 103 | engines: {node: '>=6.9.0'} 104 | peerDependencies: 105 | '@babel/core': ^7.0.0 106 | dependencies: 107 | '@babel/compat-data': 7.21.5 108 | '@babel/core': 7.21.5 109 | '@babel/helper-validator-option': 7.21.0 110 | browserslist: 4.21.5 111 | lru-cache: 5.1.1 112 | semver: 6.3.0 113 | dev: true 114 | 115 | /@babel/helper-environment-visitor@7.21.5: 116 | resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} 117 | engines: {node: '>=6.9.0'} 118 | dev: true 119 | 120 | /@babel/helper-function-name@7.21.0: 121 | resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} 122 | engines: {node: '>=6.9.0'} 123 | dependencies: 124 | '@babel/template': 7.20.7 125 | '@babel/types': 7.21.5 126 | dev: true 127 | 128 | /@babel/helper-hoist-variables@7.18.6: 129 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 130 | engines: {node: '>=6.9.0'} 131 | dependencies: 132 | '@babel/types': 7.21.5 133 | dev: true 134 | 135 | /@babel/helper-module-imports@7.21.4: 136 | resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} 137 | engines: {node: '>=6.9.0'} 138 | dependencies: 139 | '@babel/types': 7.21.5 140 | dev: true 141 | 142 | /@babel/helper-module-transforms@7.21.5: 143 | resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} 144 | engines: {node: '>=6.9.0'} 145 | dependencies: 146 | '@babel/helper-environment-visitor': 7.21.5 147 | '@babel/helper-module-imports': 7.21.4 148 | '@babel/helper-simple-access': 7.21.5 149 | '@babel/helper-split-export-declaration': 7.18.6 150 | '@babel/helper-validator-identifier': 7.19.1 151 | '@babel/template': 7.20.7 152 | '@babel/traverse': 7.21.5 153 | '@babel/types': 7.21.5 154 | transitivePeerDependencies: 155 | - supports-color 156 | dev: true 157 | 158 | /@babel/helper-plugin-utils@7.21.5: 159 | resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} 160 | engines: {node: '>=6.9.0'} 161 | dev: true 162 | 163 | /@babel/helper-simple-access@7.21.5: 164 | resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} 165 | engines: {node: '>=6.9.0'} 166 | dependencies: 167 | '@babel/types': 7.21.5 168 | dev: true 169 | 170 | /@babel/helper-split-export-declaration@7.18.6: 171 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 172 | engines: {node: '>=6.9.0'} 173 | dependencies: 174 | '@babel/types': 7.21.5 175 | dev: true 176 | 177 | /@babel/helper-string-parser@7.21.5: 178 | resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} 179 | engines: {node: '>=6.9.0'} 180 | dev: true 181 | 182 | /@babel/helper-validator-identifier@7.19.1: 183 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 184 | engines: {node: '>=6.9.0'} 185 | dev: true 186 | 187 | /@babel/helper-validator-option@7.21.0: 188 | resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} 189 | engines: {node: '>=6.9.0'} 190 | dev: true 191 | 192 | /@babel/helpers@7.21.5: 193 | resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} 194 | engines: {node: '>=6.9.0'} 195 | dependencies: 196 | '@babel/template': 7.20.7 197 | '@babel/traverse': 7.21.5 198 | '@babel/types': 7.21.5 199 | transitivePeerDependencies: 200 | - supports-color 201 | dev: true 202 | 203 | /@babel/highlight@7.18.6: 204 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 205 | engines: {node: '>=6.9.0'} 206 | dependencies: 207 | '@babel/helper-validator-identifier': 7.19.1 208 | chalk: 2.4.2 209 | js-tokens: 4.0.0 210 | dev: true 211 | 212 | /@babel/parser@7.21.5: 213 | resolution: {integrity: sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==} 214 | engines: {node: '>=6.0.0'} 215 | hasBin: true 216 | dependencies: 217 | '@babel/types': 7.21.5 218 | dev: true 219 | 220 | /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.5): 221 | resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} 222 | engines: {node: '>=6.9.0'} 223 | peerDependencies: 224 | '@babel/core': ^7.0.0-0 225 | dependencies: 226 | '@babel/core': 7.21.5 227 | '@babel/helper-plugin-utils': 7.21.5 228 | dev: true 229 | 230 | /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.5): 231 | resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} 232 | engines: {node: '>=6.9.0'} 233 | peerDependencies: 234 | '@babel/core': ^7.0.0-0 235 | dependencies: 236 | '@babel/core': 7.21.5 237 | '@babel/helper-plugin-utils': 7.21.5 238 | dev: true 239 | 240 | /@babel/template@7.20.7: 241 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} 242 | engines: {node: '>=6.9.0'} 243 | dependencies: 244 | '@babel/code-frame': 7.21.4 245 | '@babel/parser': 7.21.5 246 | '@babel/types': 7.21.5 247 | dev: true 248 | 249 | /@babel/traverse@7.21.5: 250 | resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} 251 | engines: {node: '>=6.9.0'} 252 | dependencies: 253 | '@babel/code-frame': 7.21.4 254 | '@babel/generator': 7.21.5 255 | '@babel/helper-environment-visitor': 7.21.5 256 | '@babel/helper-function-name': 7.21.0 257 | '@babel/helper-hoist-variables': 7.18.6 258 | '@babel/helper-split-export-declaration': 7.18.6 259 | '@babel/parser': 7.21.5 260 | '@babel/types': 7.21.5 261 | debug: 4.3.4 262 | globals: 11.12.0 263 | transitivePeerDependencies: 264 | - supports-color 265 | dev: true 266 | 267 | /@babel/types@7.21.5: 268 | resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} 269 | engines: {node: '>=6.9.0'} 270 | dependencies: 271 | '@babel/helper-string-parser': 7.21.5 272 | '@babel/helper-validator-identifier': 7.19.1 273 | to-fast-properties: 2.0.0 274 | dev: true 275 | 276 | /@esbuild/android-arm64@0.17.18: 277 | resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} 278 | engines: {node: '>=12'} 279 | cpu: [arm64] 280 | os: [android] 281 | requiresBuild: true 282 | dev: true 283 | optional: true 284 | 285 | /@esbuild/android-arm@0.17.18: 286 | resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} 287 | engines: {node: '>=12'} 288 | cpu: [arm] 289 | os: [android] 290 | requiresBuild: true 291 | dev: true 292 | optional: true 293 | 294 | /@esbuild/android-x64@0.17.18: 295 | resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} 296 | engines: {node: '>=12'} 297 | cpu: [x64] 298 | os: [android] 299 | requiresBuild: true 300 | dev: true 301 | optional: true 302 | 303 | /@esbuild/darwin-arm64@0.17.18: 304 | resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} 305 | engines: {node: '>=12'} 306 | cpu: [arm64] 307 | os: [darwin] 308 | requiresBuild: true 309 | dev: true 310 | optional: true 311 | 312 | /@esbuild/darwin-x64@0.17.18: 313 | resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} 314 | engines: {node: '>=12'} 315 | cpu: [x64] 316 | os: [darwin] 317 | requiresBuild: true 318 | dev: true 319 | optional: true 320 | 321 | /@esbuild/freebsd-arm64@0.17.18: 322 | resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} 323 | engines: {node: '>=12'} 324 | cpu: [arm64] 325 | os: [freebsd] 326 | requiresBuild: true 327 | dev: true 328 | optional: true 329 | 330 | /@esbuild/freebsd-x64@0.17.18: 331 | resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} 332 | engines: {node: '>=12'} 333 | cpu: [x64] 334 | os: [freebsd] 335 | requiresBuild: true 336 | dev: true 337 | optional: true 338 | 339 | /@esbuild/linux-arm64@0.17.18: 340 | resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} 341 | engines: {node: '>=12'} 342 | cpu: [arm64] 343 | os: [linux] 344 | requiresBuild: true 345 | dev: true 346 | optional: true 347 | 348 | /@esbuild/linux-arm@0.17.18: 349 | resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} 350 | engines: {node: '>=12'} 351 | cpu: [arm] 352 | os: [linux] 353 | requiresBuild: true 354 | dev: true 355 | optional: true 356 | 357 | /@esbuild/linux-ia32@0.17.18: 358 | resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} 359 | engines: {node: '>=12'} 360 | cpu: [ia32] 361 | os: [linux] 362 | requiresBuild: true 363 | dev: true 364 | optional: true 365 | 366 | /@esbuild/linux-loong64@0.17.18: 367 | resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} 368 | engines: {node: '>=12'} 369 | cpu: [loong64] 370 | os: [linux] 371 | requiresBuild: true 372 | dev: true 373 | optional: true 374 | 375 | /@esbuild/linux-mips64el@0.17.18: 376 | resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} 377 | engines: {node: '>=12'} 378 | cpu: [mips64el] 379 | os: [linux] 380 | requiresBuild: true 381 | dev: true 382 | optional: true 383 | 384 | /@esbuild/linux-ppc64@0.17.18: 385 | resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} 386 | engines: {node: '>=12'} 387 | cpu: [ppc64] 388 | os: [linux] 389 | requiresBuild: true 390 | dev: true 391 | optional: true 392 | 393 | /@esbuild/linux-riscv64@0.17.18: 394 | resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} 395 | engines: {node: '>=12'} 396 | cpu: [riscv64] 397 | os: [linux] 398 | requiresBuild: true 399 | dev: true 400 | optional: true 401 | 402 | /@esbuild/linux-s390x@0.17.18: 403 | resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} 404 | engines: {node: '>=12'} 405 | cpu: [s390x] 406 | os: [linux] 407 | requiresBuild: true 408 | dev: true 409 | optional: true 410 | 411 | /@esbuild/linux-x64@0.17.18: 412 | resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} 413 | engines: {node: '>=12'} 414 | cpu: [x64] 415 | os: [linux] 416 | requiresBuild: true 417 | dev: true 418 | optional: true 419 | 420 | /@esbuild/netbsd-x64@0.17.18: 421 | resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} 422 | engines: {node: '>=12'} 423 | cpu: [x64] 424 | os: [netbsd] 425 | requiresBuild: true 426 | dev: true 427 | optional: true 428 | 429 | /@esbuild/openbsd-x64@0.17.18: 430 | resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} 431 | engines: {node: '>=12'} 432 | cpu: [x64] 433 | os: [openbsd] 434 | requiresBuild: true 435 | dev: true 436 | optional: true 437 | 438 | /@esbuild/sunos-x64@0.17.18: 439 | resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} 440 | engines: {node: '>=12'} 441 | cpu: [x64] 442 | os: [sunos] 443 | requiresBuild: true 444 | dev: true 445 | optional: true 446 | 447 | /@esbuild/win32-arm64@0.17.18: 448 | resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} 449 | engines: {node: '>=12'} 450 | cpu: [arm64] 451 | os: [win32] 452 | requiresBuild: true 453 | dev: true 454 | optional: true 455 | 456 | /@esbuild/win32-ia32@0.17.18: 457 | resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} 458 | engines: {node: '>=12'} 459 | cpu: [ia32] 460 | os: [win32] 461 | requiresBuild: true 462 | dev: true 463 | optional: true 464 | 465 | /@esbuild/win32-x64@0.17.18: 466 | resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} 467 | engines: {node: '>=12'} 468 | cpu: [x64] 469 | os: [win32] 470 | requiresBuild: true 471 | dev: true 472 | optional: true 473 | 474 | /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): 475 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 476 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 477 | peerDependencies: 478 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 479 | dependencies: 480 | eslint: 8.38.0 481 | eslint-visitor-keys: 3.4.0 482 | dev: true 483 | 484 | /@eslint-community/regexpp@4.5.0: 485 | resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} 486 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 487 | dev: true 488 | 489 | /@eslint/eslintrc@2.0.2: 490 | resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} 491 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 492 | dependencies: 493 | ajv: 6.12.6 494 | debug: 4.3.4 495 | espree: 9.5.1 496 | globals: 13.20.0 497 | ignore: 5.2.4 498 | import-fresh: 3.3.0 499 | js-yaml: 4.1.0 500 | minimatch: 3.1.2 501 | strip-json-comments: 3.1.1 502 | transitivePeerDependencies: 503 | - supports-color 504 | dev: true 505 | 506 | /@eslint/js@8.38.0: 507 | resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} 508 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 509 | dev: true 510 | 511 | /@humanwhocodes/config-array@0.11.8: 512 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 513 | engines: {node: '>=10.10.0'} 514 | dependencies: 515 | '@humanwhocodes/object-schema': 1.2.1 516 | debug: 4.3.4 517 | minimatch: 3.1.2 518 | transitivePeerDependencies: 519 | - supports-color 520 | dev: true 521 | 522 | /@humanwhocodes/module-importer@1.0.1: 523 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 524 | engines: {node: '>=12.22'} 525 | dev: true 526 | 527 | /@humanwhocodes/object-schema@1.2.1: 528 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 529 | dev: true 530 | 531 | /@jridgewell/gen-mapping@0.3.3: 532 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 533 | engines: {node: '>=6.0.0'} 534 | dependencies: 535 | '@jridgewell/set-array': 1.1.2 536 | '@jridgewell/sourcemap-codec': 1.4.15 537 | '@jridgewell/trace-mapping': 0.3.18 538 | dev: true 539 | 540 | /@jridgewell/resolve-uri@3.1.0: 541 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 542 | engines: {node: '>=6.0.0'} 543 | dev: true 544 | 545 | /@jridgewell/set-array@1.1.2: 546 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 547 | engines: {node: '>=6.0.0'} 548 | dev: true 549 | 550 | /@jridgewell/sourcemap-codec@1.4.14: 551 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 552 | dev: true 553 | 554 | /@jridgewell/sourcemap-codec@1.4.15: 555 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 556 | dev: true 557 | 558 | /@jridgewell/trace-mapping@0.3.18: 559 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 560 | dependencies: 561 | '@jridgewell/resolve-uri': 3.1.0 562 | '@jridgewell/sourcemap-codec': 1.4.14 563 | dev: true 564 | 565 | /@nodelib/fs.scandir@2.1.5: 566 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 567 | engines: {node: '>= 8'} 568 | dependencies: 569 | '@nodelib/fs.stat': 2.0.5 570 | run-parallel: 1.2.0 571 | dev: true 572 | 573 | /@nodelib/fs.stat@2.0.5: 574 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 575 | engines: {node: '>= 8'} 576 | dev: true 577 | 578 | /@nodelib/fs.walk@1.2.8: 579 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 580 | engines: {node: '>= 8'} 581 | dependencies: 582 | '@nodelib/fs.scandir': 2.1.5 583 | fastq: 1.15.0 584 | dev: true 585 | 586 | /@types/json-schema@7.0.11: 587 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 588 | dev: true 589 | 590 | /@types/prop-types@15.7.5: 591 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 592 | dev: true 593 | 594 | /@types/react-dom@18.0.11: 595 | resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} 596 | dependencies: 597 | '@types/react': 18.0.28 598 | dev: true 599 | 600 | /@types/react@18.0.28: 601 | resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} 602 | dependencies: 603 | '@types/prop-types': 15.7.5 604 | '@types/scheduler': 0.16.3 605 | csstype: 3.1.2 606 | dev: true 607 | 608 | /@types/scheduler@0.16.3: 609 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 610 | dev: true 611 | 612 | /@types/semver@7.3.13: 613 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 614 | dev: true 615 | 616 | /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.2): 617 | resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} 618 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 619 | peerDependencies: 620 | '@typescript-eslint/parser': ^5.0.0 621 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 622 | typescript: '*' 623 | peerDependenciesMeta: 624 | typescript: 625 | optional: true 626 | dependencies: 627 | '@eslint-community/regexpp': 4.5.0 628 | '@typescript-eslint/parser': 5.57.1(eslint@8.38.0)(typescript@5.0.2) 629 | '@typescript-eslint/scope-manager': 5.57.1 630 | '@typescript-eslint/type-utils': 5.57.1(eslint@8.38.0)(typescript@5.0.2) 631 | '@typescript-eslint/utils': 5.57.1(eslint@8.38.0)(typescript@5.0.2) 632 | debug: 4.3.4 633 | eslint: 8.38.0 634 | grapheme-splitter: 1.0.4 635 | ignore: 5.2.4 636 | natural-compare-lite: 1.4.0 637 | semver: 7.5.0 638 | tsutils: 3.21.0(typescript@5.0.2) 639 | typescript: 5.0.2 640 | transitivePeerDependencies: 641 | - supports-color 642 | dev: true 643 | 644 | /@typescript-eslint/parser@5.57.1(eslint@8.38.0)(typescript@5.0.2): 645 | resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} 646 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 647 | peerDependencies: 648 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 649 | typescript: '*' 650 | peerDependenciesMeta: 651 | typescript: 652 | optional: true 653 | dependencies: 654 | '@typescript-eslint/scope-manager': 5.57.1 655 | '@typescript-eslint/types': 5.57.1 656 | '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.2) 657 | debug: 4.3.4 658 | eslint: 8.38.0 659 | typescript: 5.0.2 660 | transitivePeerDependencies: 661 | - supports-color 662 | dev: true 663 | 664 | /@typescript-eslint/scope-manager@5.57.1: 665 | resolution: {integrity: sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==} 666 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 667 | dependencies: 668 | '@typescript-eslint/types': 5.57.1 669 | '@typescript-eslint/visitor-keys': 5.57.1 670 | dev: true 671 | 672 | /@typescript-eslint/type-utils@5.57.1(eslint@8.38.0)(typescript@5.0.2): 673 | resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} 674 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 675 | peerDependencies: 676 | eslint: '*' 677 | typescript: '*' 678 | peerDependenciesMeta: 679 | typescript: 680 | optional: true 681 | dependencies: 682 | '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.2) 683 | '@typescript-eslint/utils': 5.57.1(eslint@8.38.0)(typescript@5.0.2) 684 | debug: 4.3.4 685 | eslint: 8.38.0 686 | tsutils: 3.21.0(typescript@5.0.2) 687 | typescript: 5.0.2 688 | transitivePeerDependencies: 689 | - supports-color 690 | dev: true 691 | 692 | /@typescript-eslint/types@5.57.1: 693 | resolution: {integrity: sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==} 694 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 695 | dev: true 696 | 697 | /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.2): 698 | resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} 699 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 700 | peerDependencies: 701 | typescript: '*' 702 | peerDependenciesMeta: 703 | typescript: 704 | optional: true 705 | dependencies: 706 | '@typescript-eslint/types': 5.57.1 707 | '@typescript-eslint/visitor-keys': 5.57.1 708 | debug: 4.3.4 709 | globby: 11.1.0 710 | is-glob: 4.0.3 711 | semver: 7.5.0 712 | tsutils: 3.21.0(typescript@5.0.2) 713 | typescript: 5.0.2 714 | transitivePeerDependencies: 715 | - supports-color 716 | dev: true 717 | 718 | /@typescript-eslint/utils@5.57.1(eslint@8.38.0)(typescript@5.0.2): 719 | resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} 720 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 721 | peerDependencies: 722 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 723 | dependencies: 724 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) 725 | '@types/json-schema': 7.0.11 726 | '@types/semver': 7.3.13 727 | '@typescript-eslint/scope-manager': 5.57.1 728 | '@typescript-eslint/types': 5.57.1 729 | '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.2) 730 | eslint: 8.38.0 731 | eslint-scope: 5.1.1 732 | semver: 7.5.0 733 | transitivePeerDependencies: 734 | - supports-color 735 | - typescript 736 | dev: true 737 | 738 | /@typescript-eslint/visitor-keys@5.57.1: 739 | resolution: {integrity: sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==} 740 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 741 | dependencies: 742 | '@typescript-eslint/types': 5.57.1 743 | eslint-visitor-keys: 3.4.0 744 | dev: true 745 | 746 | /@vitejs/plugin-react@4.0.0(vite@4.3.2): 747 | resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} 748 | engines: {node: ^14.18.0 || >=16.0.0} 749 | peerDependencies: 750 | vite: ^4.2.0 751 | dependencies: 752 | '@babel/core': 7.21.5 753 | '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.5) 754 | '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.5) 755 | react-refresh: 0.14.0 756 | vite: 4.3.2 757 | transitivePeerDependencies: 758 | - supports-color 759 | dev: true 760 | 761 | /acorn-jsx@5.3.2(acorn@8.8.2): 762 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 763 | peerDependencies: 764 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 765 | dependencies: 766 | acorn: 8.8.2 767 | dev: true 768 | 769 | /acorn@8.8.2: 770 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 771 | engines: {node: '>=0.4.0'} 772 | hasBin: true 773 | dev: true 774 | 775 | /ajv@6.12.6: 776 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 777 | dependencies: 778 | fast-deep-equal: 3.1.3 779 | fast-json-stable-stringify: 2.1.0 780 | json-schema-traverse: 0.4.1 781 | uri-js: 4.4.1 782 | dev: true 783 | 784 | /ansi-regex@5.0.1: 785 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 786 | engines: {node: '>=8'} 787 | dev: true 788 | 789 | /ansi-styles@3.2.1: 790 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 791 | engines: {node: '>=4'} 792 | dependencies: 793 | color-convert: 1.9.3 794 | dev: true 795 | 796 | /ansi-styles@4.3.0: 797 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 798 | engines: {node: '>=8'} 799 | dependencies: 800 | color-convert: 2.0.1 801 | dev: true 802 | 803 | /argparse@2.0.1: 804 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 805 | dev: true 806 | 807 | /array-union@2.1.0: 808 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 809 | engines: {node: '>=8'} 810 | dev: true 811 | 812 | /balanced-match@1.0.2: 813 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 814 | dev: true 815 | 816 | /brace-expansion@1.1.11: 817 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 818 | dependencies: 819 | balanced-match: 1.0.2 820 | concat-map: 0.0.1 821 | dev: true 822 | 823 | /braces@3.0.2: 824 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 825 | engines: {node: '>=8'} 826 | dependencies: 827 | fill-range: 7.0.1 828 | dev: true 829 | 830 | /browserslist@4.21.5: 831 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 832 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 833 | hasBin: true 834 | dependencies: 835 | caniuse-lite: 1.0.30001481 836 | electron-to-chromium: 1.4.377 837 | node-releases: 2.0.10 838 | update-browserslist-db: 1.0.11(browserslist@4.21.5) 839 | dev: true 840 | 841 | /callsites@3.1.0: 842 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 843 | engines: {node: '>=6'} 844 | dev: true 845 | 846 | /caniuse-lite@1.0.30001481: 847 | resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} 848 | dev: true 849 | 850 | /chalk@2.4.2: 851 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 852 | engines: {node: '>=4'} 853 | dependencies: 854 | ansi-styles: 3.2.1 855 | escape-string-regexp: 1.0.5 856 | supports-color: 5.5.0 857 | dev: true 858 | 859 | /chalk@4.1.2: 860 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 861 | engines: {node: '>=10'} 862 | dependencies: 863 | ansi-styles: 4.3.0 864 | supports-color: 7.2.0 865 | dev: true 866 | 867 | /color-convert@1.9.3: 868 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 869 | dependencies: 870 | color-name: 1.1.3 871 | dev: true 872 | 873 | /color-convert@2.0.1: 874 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 875 | engines: {node: '>=7.0.0'} 876 | dependencies: 877 | color-name: 1.1.4 878 | dev: true 879 | 880 | /color-name@1.1.3: 881 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 882 | dev: true 883 | 884 | /color-name@1.1.4: 885 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 886 | dev: true 887 | 888 | /concat-map@0.0.1: 889 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 890 | dev: true 891 | 892 | /convert-source-map@1.9.0: 893 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 894 | dev: true 895 | 896 | /cross-spawn@7.0.3: 897 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 898 | engines: {node: '>= 8'} 899 | dependencies: 900 | path-key: 3.1.1 901 | shebang-command: 2.0.0 902 | which: 2.0.2 903 | dev: true 904 | 905 | /csstype@3.1.2: 906 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 907 | dev: true 908 | 909 | /debug@4.3.4: 910 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 911 | engines: {node: '>=6.0'} 912 | peerDependencies: 913 | supports-color: '*' 914 | peerDependenciesMeta: 915 | supports-color: 916 | optional: true 917 | dependencies: 918 | ms: 2.1.2 919 | dev: true 920 | 921 | /deep-is@0.1.4: 922 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 923 | dev: true 924 | 925 | /dir-glob@3.0.1: 926 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 927 | engines: {node: '>=8'} 928 | dependencies: 929 | path-type: 4.0.0 930 | dev: true 931 | 932 | /doctrine@3.0.0: 933 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 934 | engines: {node: '>=6.0.0'} 935 | dependencies: 936 | esutils: 2.0.3 937 | dev: true 938 | 939 | /electron-to-chromium@1.4.377: 940 | resolution: {integrity: sha512-H3BYG6DW5Z+l0xcfXaicJGxrpA4kMlCxnN71+iNX+dBLkRMOdVJqFJiAmbNZZKA1zISpRg17JR03qGifXNsJtw==} 941 | dev: true 942 | 943 | /esbuild@0.17.18: 944 | resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} 945 | engines: {node: '>=12'} 946 | hasBin: true 947 | requiresBuild: true 948 | optionalDependencies: 949 | '@esbuild/android-arm': 0.17.18 950 | '@esbuild/android-arm64': 0.17.18 951 | '@esbuild/android-x64': 0.17.18 952 | '@esbuild/darwin-arm64': 0.17.18 953 | '@esbuild/darwin-x64': 0.17.18 954 | '@esbuild/freebsd-arm64': 0.17.18 955 | '@esbuild/freebsd-x64': 0.17.18 956 | '@esbuild/linux-arm': 0.17.18 957 | '@esbuild/linux-arm64': 0.17.18 958 | '@esbuild/linux-ia32': 0.17.18 959 | '@esbuild/linux-loong64': 0.17.18 960 | '@esbuild/linux-mips64el': 0.17.18 961 | '@esbuild/linux-ppc64': 0.17.18 962 | '@esbuild/linux-riscv64': 0.17.18 963 | '@esbuild/linux-s390x': 0.17.18 964 | '@esbuild/linux-x64': 0.17.18 965 | '@esbuild/netbsd-x64': 0.17.18 966 | '@esbuild/openbsd-x64': 0.17.18 967 | '@esbuild/sunos-x64': 0.17.18 968 | '@esbuild/win32-arm64': 0.17.18 969 | '@esbuild/win32-ia32': 0.17.18 970 | '@esbuild/win32-x64': 0.17.18 971 | dev: true 972 | 973 | /escalade@3.1.1: 974 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 975 | engines: {node: '>=6'} 976 | dev: true 977 | 978 | /escape-string-regexp@1.0.5: 979 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 980 | engines: {node: '>=0.8.0'} 981 | dev: true 982 | 983 | /escape-string-regexp@4.0.0: 984 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 985 | engines: {node: '>=10'} 986 | dev: true 987 | 988 | /eslint-plugin-react-hooks@4.6.0(eslint@8.38.0): 989 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 990 | engines: {node: '>=10'} 991 | peerDependencies: 992 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 993 | dependencies: 994 | eslint: 8.38.0 995 | dev: true 996 | 997 | /eslint-plugin-react-refresh@0.3.4(eslint@8.38.0): 998 | resolution: {integrity: sha512-E0ViBglxSQAERBp6eTj5fPgtCRtDonnbCFiVQBhf4Dto2blJRxg1dFUMdMh7N6ljTI4UwPhHwYDQ3Dyo4m6bwA==} 999 | peerDependencies: 1000 | eslint: '>=7' 1001 | dependencies: 1002 | eslint: 8.38.0 1003 | dev: true 1004 | 1005 | /eslint-scope@5.1.1: 1006 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1007 | engines: {node: '>=8.0.0'} 1008 | dependencies: 1009 | esrecurse: 4.3.0 1010 | estraverse: 4.3.0 1011 | dev: true 1012 | 1013 | /eslint-scope@7.2.0: 1014 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 1015 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1016 | dependencies: 1017 | esrecurse: 4.3.0 1018 | estraverse: 5.3.0 1019 | dev: true 1020 | 1021 | /eslint-visitor-keys@3.4.0: 1022 | resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} 1023 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1024 | dev: true 1025 | 1026 | /eslint@8.38.0: 1027 | resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} 1028 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1029 | hasBin: true 1030 | dependencies: 1031 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) 1032 | '@eslint-community/regexpp': 4.5.0 1033 | '@eslint/eslintrc': 2.0.2 1034 | '@eslint/js': 8.38.0 1035 | '@humanwhocodes/config-array': 0.11.8 1036 | '@humanwhocodes/module-importer': 1.0.1 1037 | '@nodelib/fs.walk': 1.2.8 1038 | ajv: 6.12.6 1039 | chalk: 4.1.2 1040 | cross-spawn: 7.0.3 1041 | debug: 4.3.4 1042 | doctrine: 3.0.0 1043 | escape-string-regexp: 4.0.0 1044 | eslint-scope: 7.2.0 1045 | eslint-visitor-keys: 3.4.0 1046 | espree: 9.5.1 1047 | esquery: 1.5.0 1048 | esutils: 2.0.3 1049 | fast-deep-equal: 3.1.3 1050 | file-entry-cache: 6.0.1 1051 | find-up: 5.0.0 1052 | glob-parent: 6.0.2 1053 | globals: 13.20.0 1054 | grapheme-splitter: 1.0.4 1055 | ignore: 5.2.4 1056 | import-fresh: 3.3.0 1057 | imurmurhash: 0.1.4 1058 | is-glob: 4.0.3 1059 | is-path-inside: 3.0.3 1060 | js-sdsl: 4.4.0 1061 | js-yaml: 4.1.0 1062 | json-stable-stringify-without-jsonify: 1.0.1 1063 | levn: 0.4.1 1064 | lodash.merge: 4.6.2 1065 | minimatch: 3.1.2 1066 | natural-compare: 1.4.0 1067 | optionator: 0.9.1 1068 | strip-ansi: 6.0.1 1069 | strip-json-comments: 3.1.1 1070 | text-table: 0.2.0 1071 | transitivePeerDependencies: 1072 | - supports-color 1073 | dev: true 1074 | 1075 | /espree@9.5.1: 1076 | resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} 1077 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1078 | dependencies: 1079 | acorn: 8.8.2 1080 | acorn-jsx: 5.3.2(acorn@8.8.2) 1081 | eslint-visitor-keys: 3.4.0 1082 | dev: true 1083 | 1084 | /esquery@1.5.0: 1085 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1086 | engines: {node: '>=0.10'} 1087 | dependencies: 1088 | estraverse: 5.3.0 1089 | dev: true 1090 | 1091 | /esrecurse@4.3.0: 1092 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1093 | engines: {node: '>=4.0'} 1094 | dependencies: 1095 | estraverse: 5.3.0 1096 | dev: true 1097 | 1098 | /estraverse@4.3.0: 1099 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1100 | engines: {node: '>=4.0'} 1101 | dev: true 1102 | 1103 | /estraverse@5.3.0: 1104 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1105 | engines: {node: '>=4.0'} 1106 | dev: true 1107 | 1108 | /esutils@2.0.3: 1109 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1110 | engines: {node: '>=0.10.0'} 1111 | dev: true 1112 | 1113 | /fast-deep-equal@3.1.3: 1114 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1115 | dev: true 1116 | 1117 | /fast-glob@3.2.12: 1118 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1119 | engines: {node: '>=8.6.0'} 1120 | dependencies: 1121 | '@nodelib/fs.stat': 2.0.5 1122 | '@nodelib/fs.walk': 1.2.8 1123 | glob-parent: 5.1.2 1124 | merge2: 1.4.1 1125 | micromatch: 4.0.5 1126 | dev: true 1127 | 1128 | /fast-json-stable-stringify@2.1.0: 1129 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1130 | dev: true 1131 | 1132 | /fast-levenshtein@2.0.6: 1133 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1134 | dev: true 1135 | 1136 | /fastq@1.15.0: 1137 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1138 | dependencies: 1139 | reusify: 1.0.4 1140 | dev: true 1141 | 1142 | /file-entry-cache@6.0.1: 1143 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1144 | engines: {node: ^10.12.0 || >=12.0.0} 1145 | dependencies: 1146 | flat-cache: 3.0.4 1147 | dev: true 1148 | 1149 | /fill-range@7.0.1: 1150 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1151 | engines: {node: '>=8'} 1152 | dependencies: 1153 | to-regex-range: 5.0.1 1154 | dev: true 1155 | 1156 | /find-up@5.0.0: 1157 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1158 | engines: {node: '>=10'} 1159 | dependencies: 1160 | locate-path: 6.0.0 1161 | path-exists: 4.0.0 1162 | dev: true 1163 | 1164 | /flat-cache@3.0.4: 1165 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1166 | engines: {node: ^10.12.0 || >=12.0.0} 1167 | dependencies: 1168 | flatted: 3.2.7 1169 | rimraf: 3.0.2 1170 | dev: true 1171 | 1172 | /flatted@3.2.7: 1173 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1174 | dev: true 1175 | 1176 | /fs.realpath@1.0.0: 1177 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1178 | dev: true 1179 | 1180 | /fsevents@2.3.2: 1181 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1182 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1183 | os: [darwin] 1184 | requiresBuild: true 1185 | dev: true 1186 | optional: true 1187 | 1188 | /gensync@1.0.0-beta.2: 1189 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1190 | engines: {node: '>=6.9.0'} 1191 | dev: true 1192 | 1193 | /glob-parent@5.1.2: 1194 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1195 | engines: {node: '>= 6'} 1196 | dependencies: 1197 | is-glob: 4.0.3 1198 | dev: true 1199 | 1200 | /glob-parent@6.0.2: 1201 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1202 | engines: {node: '>=10.13.0'} 1203 | dependencies: 1204 | is-glob: 4.0.3 1205 | dev: true 1206 | 1207 | /glob@7.2.3: 1208 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1209 | dependencies: 1210 | fs.realpath: 1.0.0 1211 | inflight: 1.0.6 1212 | inherits: 2.0.4 1213 | minimatch: 3.1.2 1214 | once: 1.4.0 1215 | path-is-absolute: 1.0.1 1216 | dev: true 1217 | 1218 | /globals@11.12.0: 1219 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1220 | engines: {node: '>=4'} 1221 | dev: true 1222 | 1223 | /globals@13.20.0: 1224 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1225 | engines: {node: '>=8'} 1226 | dependencies: 1227 | type-fest: 0.20.2 1228 | dev: true 1229 | 1230 | /globby@11.1.0: 1231 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1232 | engines: {node: '>=10'} 1233 | dependencies: 1234 | array-union: 2.1.0 1235 | dir-glob: 3.0.1 1236 | fast-glob: 3.2.12 1237 | ignore: 5.2.4 1238 | merge2: 1.4.1 1239 | slash: 3.0.0 1240 | dev: true 1241 | 1242 | /grapheme-splitter@1.0.4: 1243 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1244 | dev: true 1245 | 1246 | /has-flag@3.0.0: 1247 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1248 | engines: {node: '>=4'} 1249 | dev: true 1250 | 1251 | /has-flag@4.0.0: 1252 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1253 | engines: {node: '>=8'} 1254 | dev: true 1255 | 1256 | /ignore@5.2.4: 1257 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1258 | engines: {node: '>= 4'} 1259 | dev: true 1260 | 1261 | /import-fresh@3.3.0: 1262 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1263 | engines: {node: '>=6'} 1264 | dependencies: 1265 | parent-module: 1.0.1 1266 | resolve-from: 4.0.0 1267 | dev: true 1268 | 1269 | /imurmurhash@0.1.4: 1270 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1271 | engines: {node: '>=0.8.19'} 1272 | dev: true 1273 | 1274 | /inflight@1.0.6: 1275 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1276 | dependencies: 1277 | once: 1.4.0 1278 | wrappy: 1.0.2 1279 | dev: true 1280 | 1281 | /inherits@2.0.4: 1282 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1283 | dev: true 1284 | 1285 | /is-extglob@2.1.1: 1286 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1287 | engines: {node: '>=0.10.0'} 1288 | dev: true 1289 | 1290 | /is-glob@4.0.3: 1291 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1292 | engines: {node: '>=0.10.0'} 1293 | dependencies: 1294 | is-extglob: 2.1.1 1295 | dev: true 1296 | 1297 | /is-number@7.0.0: 1298 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1299 | engines: {node: '>=0.12.0'} 1300 | dev: true 1301 | 1302 | /is-path-inside@3.0.3: 1303 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1304 | engines: {node: '>=8'} 1305 | dev: true 1306 | 1307 | /isexe@2.0.0: 1308 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1309 | dev: true 1310 | 1311 | /js-sdsl@4.4.0: 1312 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} 1313 | dev: true 1314 | 1315 | /js-tokens@4.0.0: 1316 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1317 | 1318 | /js-yaml@4.1.0: 1319 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1320 | hasBin: true 1321 | dependencies: 1322 | argparse: 2.0.1 1323 | dev: true 1324 | 1325 | /jsesc@2.5.2: 1326 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1327 | engines: {node: '>=4'} 1328 | hasBin: true 1329 | dev: true 1330 | 1331 | /json-schema-traverse@0.4.1: 1332 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1333 | dev: true 1334 | 1335 | /json-stable-stringify-without-jsonify@1.0.1: 1336 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1337 | dev: true 1338 | 1339 | /json5@2.2.3: 1340 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1341 | engines: {node: '>=6'} 1342 | hasBin: true 1343 | dev: true 1344 | 1345 | /levn@0.4.1: 1346 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1347 | engines: {node: '>= 0.8.0'} 1348 | dependencies: 1349 | prelude-ls: 1.2.1 1350 | type-check: 0.4.0 1351 | dev: true 1352 | 1353 | /locate-path@6.0.0: 1354 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1355 | engines: {node: '>=10'} 1356 | dependencies: 1357 | p-locate: 5.0.0 1358 | dev: true 1359 | 1360 | /lodash.merge@4.6.2: 1361 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1362 | dev: true 1363 | 1364 | /loose-envify@1.4.0: 1365 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1366 | hasBin: true 1367 | dependencies: 1368 | js-tokens: 4.0.0 1369 | dev: false 1370 | 1371 | /lru-cache@5.1.1: 1372 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1373 | dependencies: 1374 | yallist: 3.1.1 1375 | dev: true 1376 | 1377 | /lru-cache@6.0.0: 1378 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1379 | engines: {node: '>=10'} 1380 | dependencies: 1381 | yallist: 4.0.0 1382 | dev: true 1383 | 1384 | /merge2@1.4.1: 1385 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1386 | engines: {node: '>= 8'} 1387 | dev: true 1388 | 1389 | /micromatch@4.0.5: 1390 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1391 | engines: {node: '>=8.6'} 1392 | dependencies: 1393 | braces: 3.0.2 1394 | picomatch: 2.3.1 1395 | dev: true 1396 | 1397 | /minimatch@3.1.2: 1398 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1399 | dependencies: 1400 | brace-expansion: 1.1.11 1401 | dev: true 1402 | 1403 | /ms@2.1.2: 1404 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1405 | dev: true 1406 | 1407 | /nanoid@3.3.6: 1408 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1409 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1410 | hasBin: true 1411 | dev: true 1412 | 1413 | /natural-compare-lite@1.4.0: 1414 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1415 | dev: true 1416 | 1417 | /natural-compare@1.4.0: 1418 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1419 | dev: true 1420 | 1421 | /node-releases@2.0.10: 1422 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1423 | dev: true 1424 | 1425 | /once@1.4.0: 1426 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1427 | dependencies: 1428 | wrappy: 1.0.2 1429 | dev: true 1430 | 1431 | /optionator@0.9.1: 1432 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1433 | engines: {node: '>= 0.8.0'} 1434 | dependencies: 1435 | deep-is: 0.1.4 1436 | fast-levenshtein: 2.0.6 1437 | levn: 0.4.1 1438 | prelude-ls: 1.2.1 1439 | type-check: 0.4.0 1440 | word-wrap: 1.2.3 1441 | dev: true 1442 | 1443 | /p-limit@3.1.0: 1444 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1445 | engines: {node: '>=10'} 1446 | dependencies: 1447 | yocto-queue: 0.1.0 1448 | dev: true 1449 | 1450 | /p-locate@5.0.0: 1451 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1452 | engines: {node: '>=10'} 1453 | dependencies: 1454 | p-limit: 3.1.0 1455 | dev: true 1456 | 1457 | /parent-module@1.0.1: 1458 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1459 | engines: {node: '>=6'} 1460 | dependencies: 1461 | callsites: 3.1.0 1462 | dev: true 1463 | 1464 | /path-exists@4.0.0: 1465 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1466 | engines: {node: '>=8'} 1467 | dev: true 1468 | 1469 | /path-is-absolute@1.0.1: 1470 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1471 | engines: {node: '>=0.10.0'} 1472 | dev: true 1473 | 1474 | /path-key@3.1.1: 1475 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1476 | engines: {node: '>=8'} 1477 | dev: true 1478 | 1479 | /path-type@4.0.0: 1480 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1481 | engines: {node: '>=8'} 1482 | dev: true 1483 | 1484 | /picocolors@1.0.0: 1485 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1486 | dev: true 1487 | 1488 | /picomatch@2.3.1: 1489 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1490 | engines: {node: '>=8.6'} 1491 | dev: true 1492 | 1493 | /postcss@8.4.23: 1494 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} 1495 | engines: {node: ^10 || ^12 || >=14} 1496 | dependencies: 1497 | nanoid: 3.3.6 1498 | picocolors: 1.0.0 1499 | source-map-js: 1.0.2 1500 | dev: true 1501 | 1502 | /prelude-ls@1.2.1: 1503 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1504 | engines: {node: '>= 0.8.0'} 1505 | dev: true 1506 | 1507 | /prettier@2.8.8: 1508 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1509 | engines: {node: '>=10.13.0'} 1510 | hasBin: true 1511 | dev: true 1512 | 1513 | /punycode@2.3.0: 1514 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1515 | engines: {node: '>=6'} 1516 | dev: true 1517 | 1518 | /queue-microtask@1.2.3: 1519 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1520 | dev: true 1521 | 1522 | /react-dom@18.2.0(react@18.2.0): 1523 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1524 | peerDependencies: 1525 | react: ^18.2.0 1526 | dependencies: 1527 | loose-envify: 1.4.0 1528 | react: 18.2.0 1529 | scheduler: 0.23.0 1530 | dev: false 1531 | 1532 | /react-refresh@0.14.0: 1533 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 1534 | engines: {node: '>=0.10.0'} 1535 | dev: true 1536 | 1537 | /react@18.2.0: 1538 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1539 | engines: {node: '>=0.10.0'} 1540 | dependencies: 1541 | loose-envify: 1.4.0 1542 | dev: false 1543 | 1544 | /resolve-from@4.0.0: 1545 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1546 | engines: {node: '>=4'} 1547 | dev: true 1548 | 1549 | /reusify@1.0.4: 1550 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1551 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1552 | dev: true 1553 | 1554 | /rimraf@3.0.2: 1555 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1556 | hasBin: true 1557 | dependencies: 1558 | glob: 7.2.3 1559 | dev: true 1560 | 1561 | /rollup@3.21.0: 1562 | resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} 1563 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1564 | hasBin: true 1565 | optionalDependencies: 1566 | fsevents: 2.3.2 1567 | dev: true 1568 | 1569 | /run-parallel@1.2.0: 1570 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1571 | dependencies: 1572 | queue-microtask: 1.2.3 1573 | dev: true 1574 | 1575 | /scheduler@0.23.0: 1576 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 1577 | dependencies: 1578 | loose-envify: 1.4.0 1579 | dev: false 1580 | 1581 | /semver@6.3.0: 1582 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1583 | hasBin: true 1584 | dev: true 1585 | 1586 | /semver@7.5.0: 1587 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} 1588 | engines: {node: '>=10'} 1589 | hasBin: true 1590 | dependencies: 1591 | lru-cache: 6.0.0 1592 | dev: true 1593 | 1594 | /shebang-command@2.0.0: 1595 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1596 | engines: {node: '>=8'} 1597 | dependencies: 1598 | shebang-regex: 3.0.0 1599 | dev: true 1600 | 1601 | /shebang-regex@3.0.0: 1602 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1603 | engines: {node: '>=8'} 1604 | dev: true 1605 | 1606 | /slash@3.0.0: 1607 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1608 | engines: {node: '>=8'} 1609 | dev: true 1610 | 1611 | /source-map-js@1.0.2: 1612 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1613 | engines: {node: '>=0.10.0'} 1614 | dev: true 1615 | 1616 | /strip-ansi@6.0.1: 1617 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1618 | engines: {node: '>=8'} 1619 | dependencies: 1620 | ansi-regex: 5.0.1 1621 | dev: true 1622 | 1623 | /strip-json-comments@3.1.1: 1624 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1625 | engines: {node: '>=8'} 1626 | dev: true 1627 | 1628 | /supports-color@5.5.0: 1629 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1630 | engines: {node: '>=4'} 1631 | dependencies: 1632 | has-flag: 3.0.0 1633 | dev: true 1634 | 1635 | /supports-color@7.2.0: 1636 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1637 | engines: {node: '>=8'} 1638 | dependencies: 1639 | has-flag: 4.0.0 1640 | dev: true 1641 | 1642 | /text-table@0.2.0: 1643 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1644 | dev: true 1645 | 1646 | /to-fast-properties@2.0.0: 1647 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1648 | engines: {node: '>=4'} 1649 | dev: true 1650 | 1651 | /to-regex-range@5.0.1: 1652 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1653 | engines: {node: '>=8.0'} 1654 | dependencies: 1655 | is-number: 7.0.0 1656 | dev: true 1657 | 1658 | /tslib@1.14.1: 1659 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 1660 | dev: true 1661 | 1662 | /tsutils@3.21.0(typescript@5.0.2): 1663 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 1664 | engines: {node: '>= 6'} 1665 | peerDependencies: 1666 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 1667 | dependencies: 1668 | tslib: 1.14.1 1669 | typescript: 5.0.2 1670 | dev: true 1671 | 1672 | /type-check@0.4.0: 1673 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1674 | engines: {node: '>= 0.8.0'} 1675 | dependencies: 1676 | prelude-ls: 1.2.1 1677 | dev: true 1678 | 1679 | /type-fest@0.20.2: 1680 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1681 | engines: {node: '>=10'} 1682 | dev: true 1683 | 1684 | /typescript@5.0.2: 1685 | resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} 1686 | engines: {node: '>=12.20'} 1687 | hasBin: true 1688 | dev: true 1689 | 1690 | /update-browserslist-db@1.0.11(browserslist@4.21.5): 1691 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 1692 | hasBin: true 1693 | peerDependencies: 1694 | browserslist: '>= 4.21.0' 1695 | dependencies: 1696 | browserslist: 4.21.5 1697 | escalade: 3.1.1 1698 | picocolors: 1.0.0 1699 | dev: true 1700 | 1701 | /uri-js@4.4.1: 1702 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1703 | dependencies: 1704 | punycode: 2.3.0 1705 | dev: true 1706 | 1707 | /vite@4.3.2: 1708 | resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==} 1709 | engines: {node: ^14.18.0 || >=16.0.0} 1710 | hasBin: true 1711 | peerDependencies: 1712 | '@types/node': '>= 14' 1713 | less: '*' 1714 | sass: '*' 1715 | stylus: '*' 1716 | sugarss: '*' 1717 | terser: ^5.4.0 1718 | peerDependenciesMeta: 1719 | '@types/node': 1720 | optional: true 1721 | less: 1722 | optional: true 1723 | sass: 1724 | optional: true 1725 | stylus: 1726 | optional: true 1727 | sugarss: 1728 | optional: true 1729 | terser: 1730 | optional: true 1731 | dependencies: 1732 | esbuild: 0.17.18 1733 | postcss: 8.4.23 1734 | rollup: 3.21.0 1735 | optionalDependencies: 1736 | fsevents: 2.3.2 1737 | dev: true 1738 | 1739 | /which@2.0.2: 1740 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1741 | engines: {node: '>= 8'} 1742 | hasBin: true 1743 | dependencies: 1744 | isexe: 2.0.0 1745 | dev: true 1746 | 1747 | /word-wrap@1.2.3: 1748 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1749 | engines: {node: '>=0.10.0'} 1750 | dev: true 1751 | 1752 | /wrappy@1.0.2: 1753 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1754 | dev: true 1755 | 1756 | /yallist@3.1.1: 1757 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1758 | dev: true 1759 | 1760 | /yallist@4.0.0: 1761 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1762 | dev: true 1763 | 1764 | /yocto-queue@0.1.0: 1765 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1766 | engines: {node: '>=10'} 1767 | dev: true 1768 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | type CSSProperties, 3 | type ReactNode, 4 | useEffect, 5 | useRef, 6 | useState 7 | } from 'react' 8 | 9 | function nextTick(fn: () => void) { 10 | return Promise.resolve().then(fn) 11 | } 12 | 13 | /** 14 | * 防抖函数 15 | * @param {Function} fn 16 | * @param {number} delay 17 | * @returns {() => void} 18 | */ 19 | // eslint-disable-next-line @typescript-eslint/ban-types 20 | function debounce(fn: Function, delay: number): () => void { 21 | let timer: number 22 | return function (...args: any[]): void { 23 | if (timer) clearTimeout(timer) 24 | timer = setTimeout( 25 | () => { 26 | // eslint-disable-next-line prefer-spread 27 | typeof fn === 'function' && fn.apply(null, args) 28 | clearTimeout(timer) 29 | }, 30 | delay > 0 ? delay : 100 31 | ) 32 | } 33 | } 34 | 35 | type IAutoScale = 36 | | boolean 37 | | { 38 | x?: boolean 39 | y?: boolean 40 | } 41 | 42 | interface Options { 43 | children?: ReactNode 44 | autoScale?: IAutoScale 45 | fullScreen?: boolean 46 | width: number | string 47 | height: number | string 48 | bodyOverflowHidden?: boolean 49 | delay?: number 50 | boxStyle?: CSSProperties 51 | wrapperStyle?: CSSProperties 52 | } 53 | 54 | export default function RScaleScreen(props: Options) { 55 | const { 56 | width, 57 | height, 58 | autoScale = true, 59 | bodyOverflowHidden = true, 60 | delay = 500 61 | } = props 62 | let bodyOverflow: string 63 | const elRef = useRef(null) 64 | const [size, setSize] = useState({ 65 | width, 66 | height, 67 | originalHeight: 0, 68 | originalWidth: 0 69 | }) 70 | 71 | const styles: Record<'box' | 'wrapper', CSSProperties> = { 72 | box: { 73 | overflow: 'hidden', 74 | backgroundSize: `100% 100%`, 75 | backgroundColor: `#000`, 76 | width: `100vw`, 77 | height: `100vh` 78 | }, 79 | wrapper: { 80 | transitionProperty: `all`, 81 | transitionTimingFunction: `cubic-bezier(0.4, 0, 0.2, 1)`, 82 | transitionDuration: `500ms`, 83 | position: `relative`, 84 | overflow: `hidden`, 85 | zIndex: 100, 86 | transformOrigin: `left top` 87 | } 88 | } 89 | 90 | let observer: MutationObserver 91 | 92 | function initBodyStyle() { 93 | if (bodyOverflowHidden) { 94 | bodyOverflow = document.body.style.overflow 95 | document.body.style.overflow = 'hidden' 96 | } 97 | } 98 | 99 | function initSize() { 100 | return new Promise(resolve => { 101 | nextTick(() => { 102 | setSize({ 103 | ...size, 104 | originalWidth: window.screen.width, 105 | originalHeight: window.screen.height 106 | }) 107 | resolve() 108 | }) 109 | }) 110 | } 111 | function updateSize() { 112 | if (size.width && size.height) { 113 | elRef.current!.style.width = `${size.width}px` 114 | elRef.current!.style.height = `${size.height}px` 115 | } else { 116 | elRef.current!.style.width = `${size.originalWidth}px` 117 | elRef.current!.style.height = `${size.originalHeight}px` 118 | } 119 | } 120 | 121 | function handleAutoScale(scale: number) { 122 | if (!autoScale) return 123 | const domWidth = elRef.current!.clientWidth 124 | const domHeight = elRef.current!.clientHeight 125 | const currentWidth = document.body.clientWidth 126 | const currentHeight = document.body.clientHeight 127 | elRef.current!.style.transform = `scale(${scale},${scale})` 128 | let mx = Math.max((currentWidth - domWidth * scale) / 2, 0) 129 | let my = Math.max((currentHeight - domHeight * scale) / 2, 0) 130 | if (typeof props.autoScale === 'object') { 131 | !props.autoScale.x && (mx = 0) 132 | !props.autoScale.y && (my = 0) 133 | } 134 | elRef.current!.style.margin = `${my}px ${mx}px` 135 | } 136 | function updateScale() { 137 | // 获取真实视口尺寸 138 | const currentWidth = document.body.clientWidth 139 | const currentHeight = document.body.clientHeight 140 | // 获取大屏最终的宽高 141 | const realWidth = size.width || size.originalWidth 142 | const realHeight = size.height || size.originalHeight 143 | // 计算缩放比例 144 | const widthScale = currentWidth / +realWidth 145 | const heightScale = currentHeight / +realHeight 146 | // 若要铺满全屏,则按照各自比例缩放 147 | if (props.fullScreen) { 148 | elRef.current!.style.transform = `scale(${widthScale},${heightScale})` 149 | return false 150 | } 151 | // 按照宽高最小比例进行缩放 152 | const scale = Math.min(widthScale, heightScale) 153 | handleAutoScale(scale) 154 | } 155 | const onResize = debounce(async () => { 156 | if (!elRef.current) return 157 | await initSize() 158 | updateSize() 159 | updateScale() 160 | }, delay) 161 | 162 | function initMutationObserver() { 163 | observer = new MutationObserver(() => { 164 | onResize() 165 | }) 166 | 167 | observer.observe(elRef.current!, { 168 | attributes: true, 169 | attributeFilter: ['style'], 170 | attributeOldValue: true 171 | }) 172 | } 173 | 174 | async function initState() { 175 | initBodyStyle() 176 | initMutationObserver() 177 | await initSize() 178 | updateSize() 179 | updateScale() 180 | window.addEventListener('resize', onResize) 181 | } 182 | useEffect(() => { 183 | initState() 184 | return () => { 185 | observer.disconnect() 186 | window.removeEventListener('resize', onResize) 187 | if (bodyOverflowHidden) { 188 | document.body.style.overflow = bodyOverflow 189 | } 190 | } 191 | }, []) 192 | 193 | return ( 194 |
198 |
203 | {props.children} 204 |
205 |
206 | ) 207 | } 208 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "ESNext", 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | "noEmit": false, 9 | "emitDeclarationOnly": true, 10 | "declaration": true, 11 | "declarationDir": "dist/types", 12 | "esModuleInterop": true, 13 | 14 | /* Bundler mode */ 15 | "moduleResolution": "bundler", 16 | "allowImportingTsExtensions": true, 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "jsx": "react-jsx", 20 | 21 | /* Linting */ 22 | "strict": true, 23 | "noUnusedLocals": true, 24 | "noUnusedParameters": true, 25 | "noFallthroughCasesInSwitch": true, 26 | "allowSyntheticDefaultImports": true 27 | }, 28 | "include": ["src"], 29 | "references": [{ "path": "./tsconfig.node.json" }] 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | // https://vitejs.dev/config/ 4 | export default defineConfig({ 5 | plugins: [react()], 6 | build: { 7 | lib: { 8 | entry: './src/index.tsx', 9 | name: 'RScaleScreen' 10 | }, 11 | rollupOptions: { 12 | external: ['react', 'react-dom'], 13 | output: { 14 | globals: { 15 | react: 'React', 16 | 'react-dom': 'ReactDOM' 17 | } 18 | } 19 | } 20 | } 21 | }) 22 | --------------------------------------------------------------------------------