├── .editorconfig ├── .eslintrc ├── .github └── workflows │ └── publish.yml ├── .gitignore ├── LICENSE ├── README.md ├── example ├── .gitignore ├── index.html ├── package-lock.json ├── package.json ├── public │ └── vite.svg ├── src │ ├── App.tsx │ ├── assets │ │ └── react.svg │ ├── changeColor.ts │ ├── components │ │ └── Button.tsx │ ├── examples │ │ ├── ExampleWithContainer.tsx │ │ ├── exampleWithRef.tsx │ │ └── exampleWithState.tsx │ ├── index.css │ ├── main.tsx │ └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ├── package-lock.json ├── package.json ├── src ├── .eslintrc ├── index.tsx ├── typings.d.ts ├── useInterval.ts └── utils.ts ├── tsconfig.json └── tsup.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": [ 4 | "standard", 5 | "standard-react" 6 | ], 7 | "env": { 8 | "es6": true 9 | }, 10 | "plugins": [ 11 | "react" 12 | ], 13 | "parserOptions": { 14 | "sourceType": "module" 15 | }, 16 | "rules": { 17 | // don't force es6 functions to include space before paren 18 | "space-before-function-paren": 0, 19 | 20 | // allow specifying true explicitly for boolean props 21 | "react/jsx-boolean-value": 0 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: actions/setup-node@v4 14 | with: 15 | node-version: 20 16 | - run: npm ci 17 | 18 | publish-npm: 19 | needs: build 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v4 23 | - uses: actions/setup-node@v4 24 | with: 25 | node-version: 20 26 | registry-url: https://registry.npmjs.org/ 27 | - run: npm ci 28 | - run: npm publish --access=public 29 | env: 30 | NODE_AUTH_TOKEN: ${{ secrets.npm_token }} 31 | 32 | deploy-gh-pages: 33 | needs: build 34 | runs-on: ubuntu-latest 35 | steps: 36 | - uses: actions/checkout@v4 37 | - uses: actions/setup-node@v4 38 | with: 39 | node-version: 20 40 | - run: npm ci && npm run build 41 | - run: cd example && npm ci && npm run build 42 | - name: Deploy to GitHub Pages 43 | uses: peaceiris/actions-gh-pages@v3 44 | with: 45 | github_token: ${{ secrets.GITHUB_TOKEN }} 46 | publish_dir: ./example/dist 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # See https://help.github.com/ignore-files/ for more about ignoring files. 3 | 4 | node_modules 5 | /.idea 6 | 7 | # builds 8 | build 9 | dist 10 | .rpt2_cache 11 | 12 | # misc 13 | .DS_Store 14 | .env 15 | .env.local 16 | .env.development.local 17 | .env.test.local 18 | .env.production.local 19 | 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Klendi Gocci 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-top-loading-bar 2 | 3 | > 4 | 5 | [![NPM](https://img.shields.io/npm/v/react-top-loading-bar.svg)](https://www.npmjs.com/package/react-top-loading-bar) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) 6 | [![npm download][download-image]][download-url] 7 | 8 | [download-image]: https://img.shields.io/npm/dm/react-top-loading-bar.svg 9 | [download-url]: https://npmjs.org/package/react-top-loading-bar 10 | 11 | [![react-top-loading-bar](https://nodei.co/npm/react-top-loading-bar.png)](https://npmjs.org/package/react-top-loading-bar) 12 | 13 | ## Install 14 | 15 | - using npm 16 | 17 | ```bash 18 | npm install --save react-top-loading-bar 19 | ``` 20 | 21 | - using yarn 22 | 23 | ```bash 24 | yarn add react-top-loading-bar 25 | ``` 26 | 27 | - CDN 28 | 29 | ``` 30 | https://unpkg.com/react-top-loading-bar 31 | ``` 32 | 33 | ## Usage 34 | 35 | ### Using hooks 36 | 37 | ```jsx 38 | import { useLoadingBar } from "react-top-loading-bar"; 39 | 40 | const App = () => { 41 | const { start, complete } = useLoadingBar({ 42 | color: "blue", 43 | height: 2, 44 | }); 45 | 46 | return ( 47 |
48 | 49 | 50 |
51 | ); 52 | }; 53 | ``` 54 | 55 | #### Wrap the app with LoadingBarContainer 56 | 57 | ```jsx 58 | import { LoadingBarContainer } from "react-top-loading-bar"; 59 | 60 | const Parent = () => { 61 | return ( 62 | 63 | 64 | 65 | ); 66 | }; 67 | ``` 68 | 69 | ### With ref 70 | 71 | ```jsx 72 | import { useRef } from "react"; 73 | import LoadingBar, { LoadingBarRef } from "react-top-loading-bar"; 74 | 75 | const App = () => { 76 | // prettier-ignore 77 | const ref = useRef(null); 78 | 79 | return ( 80 |
81 | 82 | 85 | 88 | 89 |
90 | ); 91 | }; 92 | ``` 93 | 94 | ### With state 95 | 96 | ```jsx 97 | import { useState } from "react"; 98 | import LoadingBar from "react-top-loading-bar"; 99 | 100 | const App = () => { 101 | const [progress, setProgress] = useState(0); 102 | 103 | return ( 104 |
105 | setProgress(0)} 109 | /> 110 | 111 | 112 | 113 |
114 | ); 115 | }; 116 | ``` 117 | 118 | ## Demo 119 | 120 | [Click here for demo](https://klendi.github.io/react-top-loading-bar/) 121 | 122 | ## Built-in Methods 123 | 124 | | Methods | Parameters | Descriptions | 125 | | ------------------------------------------- | :---------------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 126 | | start(loaderType?) | `continuous` (default) or `static` | Starts the loading indicator. If type is "static" it will start the static bar otherwise it will start the animated continuous bar. | 127 | | continuousStart(startingValue, refreshRate) | Number (optional), Number(optional) | Starts the loading indicator with a random starting value between 20-30, then repetitively after an refreshRate, increases it by a random value between 2-10. This continues until it reaches 90% of the indicator's width. | 128 | | staticStart(startingValue) | Number (optional) | Starts the loading indicator with a random starting value between 30-50. | 129 | | complete() | | Makes the loading indicator reach 100% of his width and then fade. | 130 | | increase(value) | Number | Adds a value to the loading indicator. | 131 | | decrease(value) | Number | Decreases a value to the loading indicator. | 132 | | getProgress() | | Get the current progress value. | 133 | 134 | ## Properties 135 | 136 | | Property | Type | Default | Description | 137 | | :----------------- | :------------ | :------------ | :-------------------------------------------------------------------------------------------------------------------------------- | 138 | | progress | Number | `0` | The progress/width indicator, progress prop varies from `0` to `100`. | 139 | | color | String | `red` | The color of the loading bar, color take values like css property `background:` do, for example `red`, `#000` `rgb(255,0,0)` etc. | 140 | | shadow | Boolean | `true` | Enables / Disables shadow underneath the loader. | 141 | | height | Number | `2` | The height of the loading bar in pixels. | 142 | | background | String | `transparent` | The loader parent background color. | 143 | | style | CSSProperties | | The style attribute to loader's div | 144 | | containerStyle | CSSProperties | | The style attribute to loader's container | 145 | | shadowStyle | CSSProperties | | The style attribute to loader's shadow | 146 | | transitionTime | Number | `300` | Fade transition time in miliseconds. | 147 | | loaderSpeed | Number | `500` | Loader transition speed in miliseconds. | 148 | | waitingTime | Number | `1000` | The delay we wait when bar reaches 100% before we proceed fading the loader out. | 149 | | className | String | | You can provide a class you'd like to add to the loading bar to add some styles to it | 150 | | containerClassName | String | | You can provide a class you'd like to add to the loading bar container to add some css styles | 151 | | onLoaderFinished | Function | | This is called when the loading bar completes, reaches 100% of his width. | 152 | 153 | ## Migrate from V.1 154 | 155 | - Replace onRef prop with 'ref', assign it to a react ref. Access methods with reactRef.current.xxx 156 | 157 | ## Migrate from V.2 158 | 159 | - Replace ref.current.continuousStart() with ref.current?.start() 160 | - Replace ref.current.staticStart() with ref.current?.start("static") 161 | 162 | ## License 163 | 164 | MIT © [Klendi Goci](https://klendi.dev) | [klendi.dev](https://klendi.dev) | GitHub [@klendi](https://github.com/klendi) 165 | -------------------------------------------------------------------------------- /example/.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 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | react-top-loading-bar 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /example/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-top-loading-bar-example", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-top-loading-bar-example", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "react": "file:../node_modules/react", 12 | "react-dom": "file:../node_modules/react-dom", 13 | "react-syntax-highlighter": "^15.6.1", 14 | "react-top-loading-bar": "file:.." 15 | }, 16 | "devDependencies": { 17 | "@eslint/js": "^9.17.0", 18 | "@types/react": "^19.0.2", 19 | "@types/react-dom": "^19.0.2", 20 | "@types/react-syntax-highlighter": "^15.5.13", 21 | "@vitejs/plugin-react": "^4.3.4", 22 | "globals": "^15.13.0", 23 | "typescript": "~5.6.2", 24 | "vite": "^6.0.3" 25 | } 26 | }, 27 | "..": { 28 | "version": "3.0.1", 29 | "license": "MIT", 30 | "devDependencies": { 31 | "@types/react": "^19.0.2", 32 | "gh-pages": "^6.2.0", 33 | "prettier": "^3.4.2", 34 | "react": "^19.0.0", 35 | "react-dom": "^19.0.0", 36 | "tsup": "^8.3.5", 37 | "typescript": "^5.7.2" 38 | }, 39 | "engines": { 40 | "node": ">=14" 41 | }, 42 | "peerDependencies": { 43 | "react": "^16 || ^17 || ^18 || ^19" 44 | } 45 | }, 46 | "../node_modules/react": { 47 | "version": "19.0.0", 48 | "license": "MIT", 49 | "engines": { 50 | "node": ">=0.10.0" 51 | } 52 | }, 53 | "../node_modules/react-dom": { 54 | "version": "19.0.0", 55 | "license": "MIT", 56 | "dependencies": { 57 | "scheduler": "^0.25.0" 58 | }, 59 | "peerDependencies": { 60 | "react": "^19.0.0" 61 | } 62 | }, 63 | "node_modules/@ampproject/remapping": { 64 | "version": "2.3.0", 65 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 66 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 67 | "dev": true, 68 | "license": "Apache-2.0", 69 | "dependencies": { 70 | "@jridgewell/gen-mapping": "^0.3.5", 71 | "@jridgewell/trace-mapping": "^0.3.24" 72 | }, 73 | "engines": { 74 | "node": ">=6.0.0" 75 | } 76 | }, 77 | "node_modules/@babel/code-frame": { 78 | "version": "7.26.2", 79 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", 80 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", 81 | "dev": true, 82 | "license": "MIT", 83 | "dependencies": { 84 | "@babel/helper-validator-identifier": "^7.25.9", 85 | "js-tokens": "^4.0.0", 86 | "picocolors": "^1.0.0" 87 | }, 88 | "engines": { 89 | "node": ">=6.9.0" 90 | } 91 | }, 92 | "node_modules/@babel/compat-data": { 93 | "version": "7.26.3", 94 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", 95 | "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", 96 | "dev": true, 97 | "license": "MIT", 98 | "engines": { 99 | "node": ">=6.9.0" 100 | } 101 | }, 102 | "node_modules/@babel/core": { 103 | "version": "7.26.0", 104 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", 105 | "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", 106 | "dev": true, 107 | "license": "MIT", 108 | "dependencies": { 109 | "@ampproject/remapping": "^2.2.0", 110 | "@babel/code-frame": "^7.26.0", 111 | "@babel/generator": "^7.26.0", 112 | "@babel/helper-compilation-targets": "^7.25.9", 113 | "@babel/helper-module-transforms": "^7.26.0", 114 | "@babel/helpers": "^7.26.0", 115 | "@babel/parser": "^7.26.0", 116 | "@babel/template": "^7.25.9", 117 | "@babel/traverse": "^7.25.9", 118 | "@babel/types": "^7.26.0", 119 | "convert-source-map": "^2.0.0", 120 | "debug": "^4.1.0", 121 | "gensync": "^1.0.0-beta.2", 122 | "json5": "^2.2.3", 123 | "semver": "^6.3.1" 124 | }, 125 | "engines": { 126 | "node": ">=6.9.0" 127 | }, 128 | "funding": { 129 | "type": "opencollective", 130 | "url": "https://opencollective.com/babel" 131 | } 132 | }, 133 | "node_modules/@babel/generator": { 134 | "version": "7.26.3", 135 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", 136 | "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", 137 | "dev": true, 138 | "license": "MIT", 139 | "dependencies": { 140 | "@babel/parser": "^7.26.3", 141 | "@babel/types": "^7.26.3", 142 | "@jridgewell/gen-mapping": "^0.3.5", 143 | "@jridgewell/trace-mapping": "^0.3.25", 144 | "jsesc": "^3.0.2" 145 | }, 146 | "engines": { 147 | "node": ">=6.9.0" 148 | } 149 | }, 150 | "node_modules/@babel/helper-compilation-targets": { 151 | "version": "7.25.9", 152 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", 153 | "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", 154 | "dev": true, 155 | "license": "MIT", 156 | "dependencies": { 157 | "@babel/compat-data": "^7.25.9", 158 | "@babel/helper-validator-option": "^7.25.9", 159 | "browserslist": "^4.24.0", 160 | "lru-cache": "^5.1.1", 161 | "semver": "^6.3.1" 162 | }, 163 | "engines": { 164 | "node": ">=6.9.0" 165 | } 166 | }, 167 | "node_modules/@babel/helper-module-imports": { 168 | "version": "7.25.9", 169 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", 170 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", 171 | "dev": true, 172 | "license": "MIT", 173 | "dependencies": { 174 | "@babel/traverse": "^7.25.9", 175 | "@babel/types": "^7.25.9" 176 | }, 177 | "engines": { 178 | "node": ">=6.9.0" 179 | } 180 | }, 181 | "node_modules/@babel/helper-module-transforms": { 182 | "version": "7.26.0", 183 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", 184 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", 185 | "dev": true, 186 | "license": "MIT", 187 | "dependencies": { 188 | "@babel/helper-module-imports": "^7.25.9", 189 | "@babel/helper-validator-identifier": "^7.25.9", 190 | "@babel/traverse": "^7.25.9" 191 | }, 192 | "engines": { 193 | "node": ">=6.9.0" 194 | }, 195 | "peerDependencies": { 196 | "@babel/core": "^7.0.0" 197 | } 198 | }, 199 | "node_modules/@babel/helper-plugin-utils": { 200 | "version": "7.25.9", 201 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", 202 | "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", 203 | "dev": true, 204 | "license": "MIT", 205 | "engines": { 206 | "node": ">=6.9.0" 207 | } 208 | }, 209 | "node_modules/@babel/helper-string-parser": { 210 | "version": "7.25.9", 211 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 212 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 213 | "dev": true, 214 | "license": "MIT", 215 | "engines": { 216 | "node": ">=6.9.0" 217 | } 218 | }, 219 | "node_modules/@babel/helper-validator-identifier": { 220 | "version": "7.25.9", 221 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 222 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 223 | "dev": true, 224 | "license": "MIT", 225 | "engines": { 226 | "node": ">=6.9.0" 227 | } 228 | }, 229 | "node_modules/@babel/helper-validator-option": { 230 | "version": "7.25.9", 231 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", 232 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", 233 | "dev": true, 234 | "license": "MIT", 235 | "engines": { 236 | "node": ">=6.9.0" 237 | } 238 | }, 239 | "node_modules/@babel/helpers": { 240 | "version": "7.26.0", 241 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", 242 | "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", 243 | "dev": true, 244 | "license": "MIT", 245 | "dependencies": { 246 | "@babel/template": "^7.25.9", 247 | "@babel/types": "^7.26.0" 248 | }, 249 | "engines": { 250 | "node": ">=6.9.0" 251 | } 252 | }, 253 | "node_modules/@babel/parser": { 254 | "version": "7.26.3", 255 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", 256 | "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", 257 | "dev": true, 258 | "license": "MIT", 259 | "dependencies": { 260 | "@babel/types": "^7.26.3" 261 | }, 262 | "bin": { 263 | "parser": "bin/babel-parser.js" 264 | }, 265 | "engines": { 266 | "node": ">=6.0.0" 267 | } 268 | }, 269 | "node_modules/@babel/plugin-transform-react-jsx-self": { 270 | "version": "7.25.9", 271 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", 272 | "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", 273 | "dev": true, 274 | "license": "MIT", 275 | "dependencies": { 276 | "@babel/helper-plugin-utils": "^7.25.9" 277 | }, 278 | "engines": { 279 | "node": ">=6.9.0" 280 | }, 281 | "peerDependencies": { 282 | "@babel/core": "^7.0.0-0" 283 | } 284 | }, 285 | "node_modules/@babel/plugin-transform-react-jsx-source": { 286 | "version": "7.25.9", 287 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", 288 | "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", 289 | "dev": true, 290 | "license": "MIT", 291 | "dependencies": { 292 | "@babel/helper-plugin-utils": "^7.25.9" 293 | }, 294 | "engines": { 295 | "node": ">=6.9.0" 296 | }, 297 | "peerDependencies": { 298 | "@babel/core": "^7.0.0-0" 299 | } 300 | }, 301 | "node_modules/@babel/runtime": { 302 | "version": "7.26.0", 303 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", 304 | "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", 305 | "license": "MIT", 306 | "dependencies": { 307 | "regenerator-runtime": "^0.14.0" 308 | }, 309 | "engines": { 310 | "node": ">=6.9.0" 311 | } 312 | }, 313 | "node_modules/@babel/template": { 314 | "version": "7.25.9", 315 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", 316 | "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", 317 | "dev": true, 318 | "license": "MIT", 319 | "dependencies": { 320 | "@babel/code-frame": "^7.25.9", 321 | "@babel/parser": "^7.25.9", 322 | "@babel/types": "^7.25.9" 323 | }, 324 | "engines": { 325 | "node": ">=6.9.0" 326 | } 327 | }, 328 | "node_modules/@babel/traverse": { 329 | "version": "7.26.4", 330 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", 331 | "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", 332 | "dev": true, 333 | "license": "MIT", 334 | "dependencies": { 335 | "@babel/code-frame": "^7.26.2", 336 | "@babel/generator": "^7.26.3", 337 | "@babel/parser": "^7.26.3", 338 | "@babel/template": "^7.25.9", 339 | "@babel/types": "^7.26.3", 340 | "debug": "^4.3.1", 341 | "globals": "^11.1.0" 342 | }, 343 | "engines": { 344 | "node": ">=6.9.0" 345 | } 346 | }, 347 | "node_modules/@babel/traverse/node_modules/globals": { 348 | "version": "11.12.0", 349 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 350 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 351 | "dev": true, 352 | "license": "MIT", 353 | "engines": { 354 | "node": ">=4" 355 | } 356 | }, 357 | "node_modules/@babel/types": { 358 | "version": "7.26.3", 359 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", 360 | "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", 361 | "dev": true, 362 | "license": "MIT", 363 | "dependencies": { 364 | "@babel/helper-string-parser": "^7.25.9", 365 | "@babel/helper-validator-identifier": "^7.25.9" 366 | }, 367 | "engines": { 368 | "node": ">=6.9.0" 369 | } 370 | }, 371 | "node_modules/@esbuild/aix-ppc64": { 372 | "version": "0.24.0", 373 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", 374 | "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", 375 | "cpu": [ 376 | "ppc64" 377 | ], 378 | "dev": true, 379 | "license": "MIT", 380 | "optional": true, 381 | "os": [ 382 | "aix" 383 | ], 384 | "engines": { 385 | "node": ">=18" 386 | } 387 | }, 388 | "node_modules/@esbuild/android-arm": { 389 | "version": "0.24.0", 390 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", 391 | "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", 392 | "cpu": [ 393 | "arm" 394 | ], 395 | "dev": true, 396 | "license": "MIT", 397 | "optional": true, 398 | "os": [ 399 | "android" 400 | ], 401 | "engines": { 402 | "node": ">=18" 403 | } 404 | }, 405 | "node_modules/@esbuild/android-arm64": { 406 | "version": "0.24.0", 407 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", 408 | "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", 409 | "cpu": [ 410 | "arm64" 411 | ], 412 | "dev": true, 413 | "license": "MIT", 414 | "optional": true, 415 | "os": [ 416 | "android" 417 | ], 418 | "engines": { 419 | "node": ">=18" 420 | } 421 | }, 422 | "node_modules/@esbuild/android-x64": { 423 | "version": "0.24.0", 424 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", 425 | "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", 426 | "cpu": [ 427 | "x64" 428 | ], 429 | "dev": true, 430 | "license": "MIT", 431 | "optional": true, 432 | "os": [ 433 | "android" 434 | ], 435 | "engines": { 436 | "node": ">=18" 437 | } 438 | }, 439 | "node_modules/@esbuild/darwin-arm64": { 440 | "version": "0.24.0", 441 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", 442 | "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", 443 | "cpu": [ 444 | "arm64" 445 | ], 446 | "dev": true, 447 | "license": "MIT", 448 | "optional": true, 449 | "os": [ 450 | "darwin" 451 | ], 452 | "engines": { 453 | "node": ">=18" 454 | } 455 | }, 456 | "node_modules/@esbuild/darwin-x64": { 457 | "version": "0.24.0", 458 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", 459 | "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", 460 | "cpu": [ 461 | "x64" 462 | ], 463 | "dev": true, 464 | "license": "MIT", 465 | "optional": true, 466 | "os": [ 467 | "darwin" 468 | ], 469 | "engines": { 470 | "node": ">=18" 471 | } 472 | }, 473 | "node_modules/@esbuild/freebsd-arm64": { 474 | "version": "0.24.0", 475 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", 476 | "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", 477 | "cpu": [ 478 | "arm64" 479 | ], 480 | "dev": true, 481 | "license": "MIT", 482 | "optional": true, 483 | "os": [ 484 | "freebsd" 485 | ], 486 | "engines": { 487 | "node": ">=18" 488 | } 489 | }, 490 | "node_modules/@esbuild/freebsd-x64": { 491 | "version": "0.24.0", 492 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", 493 | "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", 494 | "cpu": [ 495 | "x64" 496 | ], 497 | "dev": true, 498 | "license": "MIT", 499 | "optional": true, 500 | "os": [ 501 | "freebsd" 502 | ], 503 | "engines": { 504 | "node": ">=18" 505 | } 506 | }, 507 | "node_modules/@esbuild/linux-arm": { 508 | "version": "0.24.0", 509 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", 510 | "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", 511 | "cpu": [ 512 | "arm" 513 | ], 514 | "dev": true, 515 | "license": "MIT", 516 | "optional": true, 517 | "os": [ 518 | "linux" 519 | ], 520 | "engines": { 521 | "node": ">=18" 522 | } 523 | }, 524 | "node_modules/@esbuild/linux-arm64": { 525 | "version": "0.24.0", 526 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", 527 | "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", 528 | "cpu": [ 529 | "arm64" 530 | ], 531 | "dev": true, 532 | "license": "MIT", 533 | "optional": true, 534 | "os": [ 535 | "linux" 536 | ], 537 | "engines": { 538 | "node": ">=18" 539 | } 540 | }, 541 | "node_modules/@esbuild/linux-ia32": { 542 | "version": "0.24.0", 543 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", 544 | "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", 545 | "cpu": [ 546 | "ia32" 547 | ], 548 | "dev": true, 549 | "license": "MIT", 550 | "optional": true, 551 | "os": [ 552 | "linux" 553 | ], 554 | "engines": { 555 | "node": ">=18" 556 | } 557 | }, 558 | "node_modules/@esbuild/linux-loong64": { 559 | "version": "0.24.0", 560 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", 561 | "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", 562 | "cpu": [ 563 | "loong64" 564 | ], 565 | "dev": true, 566 | "license": "MIT", 567 | "optional": true, 568 | "os": [ 569 | "linux" 570 | ], 571 | "engines": { 572 | "node": ">=18" 573 | } 574 | }, 575 | "node_modules/@esbuild/linux-mips64el": { 576 | "version": "0.24.0", 577 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", 578 | "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", 579 | "cpu": [ 580 | "mips64el" 581 | ], 582 | "dev": true, 583 | "license": "MIT", 584 | "optional": true, 585 | "os": [ 586 | "linux" 587 | ], 588 | "engines": { 589 | "node": ">=18" 590 | } 591 | }, 592 | "node_modules/@esbuild/linux-ppc64": { 593 | "version": "0.24.0", 594 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", 595 | "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", 596 | "cpu": [ 597 | "ppc64" 598 | ], 599 | "dev": true, 600 | "license": "MIT", 601 | "optional": true, 602 | "os": [ 603 | "linux" 604 | ], 605 | "engines": { 606 | "node": ">=18" 607 | } 608 | }, 609 | "node_modules/@esbuild/linux-riscv64": { 610 | "version": "0.24.0", 611 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", 612 | "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", 613 | "cpu": [ 614 | "riscv64" 615 | ], 616 | "dev": true, 617 | "license": "MIT", 618 | "optional": true, 619 | "os": [ 620 | "linux" 621 | ], 622 | "engines": { 623 | "node": ">=18" 624 | } 625 | }, 626 | "node_modules/@esbuild/linux-s390x": { 627 | "version": "0.24.0", 628 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", 629 | "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", 630 | "cpu": [ 631 | "s390x" 632 | ], 633 | "dev": true, 634 | "license": "MIT", 635 | "optional": true, 636 | "os": [ 637 | "linux" 638 | ], 639 | "engines": { 640 | "node": ">=18" 641 | } 642 | }, 643 | "node_modules/@esbuild/linux-x64": { 644 | "version": "0.24.0", 645 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", 646 | "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", 647 | "cpu": [ 648 | "x64" 649 | ], 650 | "dev": true, 651 | "license": "MIT", 652 | "optional": true, 653 | "os": [ 654 | "linux" 655 | ], 656 | "engines": { 657 | "node": ">=18" 658 | } 659 | }, 660 | "node_modules/@esbuild/netbsd-x64": { 661 | "version": "0.24.0", 662 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", 663 | "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", 664 | "cpu": [ 665 | "x64" 666 | ], 667 | "dev": true, 668 | "license": "MIT", 669 | "optional": true, 670 | "os": [ 671 | "netbsd" 672 | ], 673 | "engines": { 674 | "node": ">=18" 675 | } 676 | }, 677 | "node_modules/@esbuild/openbsd-arm64": { 678 | "version": "0.24.0", 679 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", 680 | "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", 681 | "cpu": [ 682 | "arm64" 683 | ], 684 | "dev": true, 685 | "license": "MIT", 686 | "optional": true, 687 | "os": [ 688 | "openbsd" 689 | ], 690 | "engines": { 691 | "node": ">=18" 692 | } 693 | }, 694 | "node_modules/@esbuild/openbsd-x64": { 695 | "version": "0.24.0", 696 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", 697 | "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", 698 | "cpu": [ 699 | "x64" 700 | ], 701 | "dev": true, 702 | "license": "MIT", 703 | "optional": true, 704 | "os": [ 705 | "openbsd" 706 | ], 707 | "engines": { 708 | "node": ">=18" 709 | } 710 | }, 711 | "node_modules/@esbuild/sunos-x64": { 712 | "version": "0.24.0", 713 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", 714 | "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", 715 | "cpu": [ 716 | "x64" 717 | ], 718 | "dev": true, 719 | "license": "MIT", 720 | "optional": true, 721 | "os": [ 722 | "sunos" 723 | ], 724 | "engines": { 725 | "node": ">=18" 726 | } 727 | }, 728 | "node_modules/@esbuild/win32-arm64": { 729 | "version": "0.24.0", 730 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", 731 | "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", 732 | "cpu": [ 733 | "arm64" 734 | ], 735 | "dev": true, 736 | "license": "MIT", 737 | "optional": true, 738 | "os": [ 739 | "win32" 740 | ], 741 | "engines": { 742 | "node": ">=18" 743 | } 744 | }, 745 | "node_modules/@esbuild/win32-ia32": { 746 | "version": "0.24.0", 747 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", 748 | "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", 749 | "cpu": [ 750 | "ia32" 751 | ], 752 | "dev": true, 753 | "license": "MIT", 754 | "optional": true, 755 | "os": [ 756 | "win32" 757 | ], 758 | "engines": { 759 | "node": ">=18" 760 | } 761 | }, 762 | "node_modules/@esbuild/win32-x64": { 763 | "version": "0.24.0", 764 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", 765 | "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", 766 | "cpu": [ 767 | "x64" 768 | ], 769 | "dev": true, 770 | "license": "MIT", 771 | "optional": true, 772 | "os": [ 773 | "win32" 774 | ], 775 | "engines": { 776 | "node": ">=18" 777 | } 778 | }, 779 | "node_modules/@eslint/js": { 780 | "version": "9.17.0", 781 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", 782 | "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", 783 | "dev": true, 784 | "license": "MIT", 785 | "engines": { 786 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 787 | } 788 | }, 789 | "node_modules/@jridgewell/gen-mapping": { 790 | "version": "0.3.8", 791 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 792 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 793 | "dev": true, 794 | "license": "MIT", 795 | "dependencies": { 796 | "@jridgewell/set-array": "^1.2.1", 797 | "@jridgewell/sourcemap-codec": "^1.4.10", 798 | "@jridgewell/trace-mapping": "^0.3.24" 799 | }, 800 | "engines": { 801 | "node": ">=6.0.0" 802 | } 803 | }, 804 | "node_modules/@jridgewell/resolve-uri": { 805 | "version": "3.1.2", 806 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 807 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 808 | "dev": true, 809 | "license": "MIT", 810 | "engines": { 811 | "node": ">=6.0.0" 812 | } 813 | }, 814 | "node_modules/@jridgewell/set-array": { 815 | "version": "1.2.1", 816 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 817 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 818 | "dev": true, 819 | "license": "MIT", 820 | "engines": { 821 | "node": ">=6.0.0" 822 | } 823 | }, 824 | "node_modules/@jridgewell/sourcemap-codec": { 825 | "version": "1.5.0", 826 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 827 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 828 | "dev": true, 829 | "license": "MIT" 830 | }, 831 | "node_modules/@jridgewell/trace-mapping": { 832 | "version": "0.3.25", 833 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 834 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 835 | "dev": true, 836 | "license": "MIT", 837 | "dependencies": { 838 | "@jridgewell/resolve-uri": "^3.1.0", 839 | "@jridgewell/sourcemap-codec": "^1.4.14" 840 | } 841 | }, 842 | "node_modules/@rollup/rollup-android-arm-eabi": { 843 | "version": "4.29.1", 844 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", 845 | "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", 846 | "cpu": [ 847 | "arm" 848 | ], 849 | "dev": true, 850 | "license": "MIT", 851 | "optional": true, 852 | "os": [ 853 | "android" 854 | ] 855 | }, 856 | "node_modules/@rollup/rollup-android-arm64": { 857 | "version": "4.29.1", 858 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", 859 | "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", 860 | "cpu": [ 861 | "arm64" 862 | ], 863 | "dev": true, 864 | "license": "MIT", 865 | "optional": true, 866 | "os": [ 867 | "android" 868 | ] 869 | }, 870 | "node_modules/@rollup/rollup-darwin-arm64": { 871 | "version": "4.29.1", 872 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", 873 | "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", 874 | "cpu": [ 875 | "arm64" 876 | ], 877 | "dev": true, 878 | "license": "MIT", 879 | "optional": true, 880 | "os": [ 881 | "darwin" 882 | ] 883 | }, 884 | "node_modules/@rollup/rollup-darwin-x64": { 885 | "version": "4.29.1", 886 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", 887 | "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", 888 | "cpu": [ 889 | "x64" 890 | ], 891 | "dev": true, 892 | "license": "MIT", 893 | "optional": true, 894 | "os": [ 895 | "darwin" 896 | ] 897 | }, 898 | "node_modules/@rollup/rollup-freebsd-arm64": { 899 | "version": "4.29.1", 900 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", 901 | "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", 902 | "cpu": [ 903 | "arm64" 904 | ], 905 | "dev": true, 906 | "license": "MIT", 907 | "optional": true, 908 | "os": [ 909 | "freebsd" 910 | ] 911 | }, 912 | "node_modules/@rollup/rollup-freebsd-x64": { 913 | "version": "4.29.1", 914 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", 915 | "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", 916 | "cpu": [ 917 | "x64" 918 | ], 919 | "dev": true, 920 | "license": "MIT", 921 | "optional": true, 922 | "os": [ 923 | "freebsd" 924 | ] 925 | }, 926 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 927 | "version": "4.29.1", 928 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", 929 | "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", 930 | "cpu": [ 931 | "arm" 932 | ], 933 | "dev": true, 934 | "license": "MIT", 935 | "optional": true, 936 | "os": [ 937 | "linux" 938 | ] 939 | }, 940 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 941 | "version": "4.29.1", 942 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", 943 | "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", 944 | "cpu": [ 945 | "arm" 946 | ], 947 | "dev": true, 948 | "license": "MIT", 949 | "optional": true, 950 | "os": [ 951 | "linux" 952 | ] 953 | }, 954 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 955 | "version": "4.29.1", 956 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", 957 | "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", 958 | "cpu": [ 959 | "arm64" 960 | ], 961 | "dev": true, 962 | "license": "MIT", 963 | "optional": true, 964 | "os": [ 965 | "linux" 966 | ] 967 | }, 968 | "node_modules/@rollup/rollup-linux-arm64-musl": { 969 | "version": "4.29.1", 970 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", 971 | "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", 972 | "cpu": [ 973 | "arm64" 974 | ], 975 | "dev": true, 976 | "license": "MIT", 977 | "optional": true, 978 | "os": [ 979 | "linux" 980 | ] 981 | }, 982 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 983 | "version": "4.29.1", 984 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", 985 | "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", 986 | "cpu": [ 987 | "loong64" 988 | ], 989 | "dev": true, 990 | "license": "MIT", 991 | "optional": true, 992 | "os": [ 993 | "linux" 994 | ] 995 | }, 996 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 997 | "version": "4.29.1", 998 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", 999 | "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", 1000 | "cpu": [ 1001 | "ppc64" 1002 | ], 1003 | "dev": true, 1004 | "license": "MIT", 1005 | "optional": true, 1006 | "os": [ 1007 | "linux" 1008 | ] 1009 | }, 1010 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1011 | "version": "4.29.1", 1012 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", 1013 | "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", 1014 | "cpu": [ 1015 | "riscv64" 1016 | ], 1017 | "dev": true, 1018 | "license": "MIT", 1019 | "optional": true, 1020 | "os": [ 1021 | "linux" 1022 | ] 1023 | }, 1024 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 1025 | "version": "4.29.1", 1026 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", 1027 | "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", 1028 | "cpu": [ 1029 | "s390x" 1030 | ], 1031 | "dev": true, 1032 | "license": "MIT", 1033 | "optional": true, 1034 | "os": [ 1035 | "linux" 1036 | ] 1037 | }, 1038 | "node_modules/@rollup/rollup-linux-x64-gnu": { 1039 | "version": "4.29.1", 1040 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", 1041 | "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", 1042 | "cpu": [ 1043 | "x64" 1044 | ], 1045 | "dev": true, 1046 | "license": "MIT", 1047 | "optional": true, 1048 | "os": [ 1049 | "linux" 1050 | ] 1051 | }, 1052 | "node_modules/@rollup/rollup-linux-x64-musl": { 1053 | "version": "4.29.1", 1054 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", 1055 | "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", 1056 | "cpu": [ 1057 | "x64" 1058 | ], 1059 | "dev": true, 1060 | "license": "MIT", 1061 | "optional": true, 1062 | "os": [ 1063 | "linux" 1064 | ] 1065 | }, 1066 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 1067 | "version": "4.29.1", 1068 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", 1069 | "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", 1070 | "cpu": [ 1071 | "arm64" 1072 | ], 1073 | "dev": true, 1074 | "license": "MIT", 1075 | "optional": true, 1076 | "os": [ 1077 | "win32" 1078 | ] 1079 | }, 1080 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 1081 | "version": "4.29.1", 1082 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", 1083 | "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", 1084 | "cpu": [ 1085 | "ia32" 1086 | ], 1087 | "dev": true, 1088 | "license": "MIT", 1089 | "optional": true, 1090 | "os": [ 1091 | "win32" 1092 | ] 1093 | }, 1094 | "node_modules/@rollup/rollup-win32-x64-msvc": { 1095 | "version": "4.29.1", 1096 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", 1097 | "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", 1098 | "cpu": [ 1099 | "x64" 1100 | ], 1101 | "dev": true, 1102 | "license": "MIT", 1103 | "optional": true, 1104 | "os": [ 1105 | "win32" 1106 | ] 1107 | }, 1108 | "node_modules/@types/babel__core": { 1109 | "version": "7.20.5", 1110 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1111 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1112 | "dev": true, 1113 | "license": "MIT", 1114 | "dependencies": { 1115 | "@babel/parser": "^7.20.7", 1116 | "@babel/types": "^7.20.7", 1117 | "@types/babel__generator": "*", 1118 | "@types/babel__template": "*", 1119 | "@types/babel__traverse": "*" 1120 | } 1121 | }, 1122 | "node_modules/@types/babel__generator": { 1123 | "version": "7.6.8", 1124 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", 1125 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", 1126 | "dev": true, 1127 | "license": "MIT", 1128 | "dependencies": { 1129 | "@babel/types": "^7.0.0" 1130 | } 1131 | }, 1132 | "node_modules/@types/babel__template": { 1133 | "version": "7.4.4", 1134 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1135 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1136 | "dev": true, 1137 | "license": "MIT", 1138 | "dependencies": { 1139 | "@babel/parser": "^7.1.0", 1140 | "@babel/types": "^7.0.0" 1141 | } 1142 | }, 1143 | "node_modules/@types/babel__traverse": { 1144 | "version": "7.20.6", 1145 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", 1146 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", 1147 | "dev": true, 1148 | "license": "MIT", 1149 | "dependencies": { 1150 | "@babel/types": "^7.20.7" 1151 | } 1152 | }, 1153 | "node_modules/@types/estree": { 1154 | "version": "1.0.6", 1155 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1156 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 1157 | "dev": true, 1158 | "license": "MIT" 1159 | }, 1160 | "node_modules/@types/hast": { 1161 | "version": "2.3.10", 1162 | "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", 1163 | "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", 1164 | "license": "MIT", 1165 | "dependencies": { 1166 | "@types/unist": "^2" 1167 | } 1168 | }, 1169 | "node_modules/@types/react": { 1170 | "version": "19.0.2", 1171 | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.2.tgz", 1172 | "integrity": "sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==", 1173 | "dev": true, 1174 | "license": "MIT", 1175 | "dependencies": { 1176 | "csstype": "^3.0.2" 1177 | } 1178 | }, 1179 | "node_modules/@types/react-dom": { 1180 | "version": "19.0.2", 1181 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.2.tgz", 1182 | "integrity": "sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==", 1183 | "dev": true, 1184 | "license": "MIT", 1185 | "peerDependencies": { 1186 | "@types/react": "^19.0.0" 1187 | } 1188 | }, 1189 | "node_modules/@types/react-syntax-highlighter": { 1190 | "version": "15.5.13", 1191 | "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz", 1192 | "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==", 1193 | "dev": true, 1194 | "license": "MIT", 1195 | "dependencies": { 1196 | "@types/react": "*" 1197 | } 1198 | }, 1199 | "node_modules/@types/unist": { 1200 | "version": "2.0.11", 1201 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", 1202 | "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", 1203 | "license": "MIT" 1204 | }, 1205 | "node_modules/@vitejs/plugin-react": { 1206 | "version": "4.3.4", 1207 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", 1208 | "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", 1209 | "dev": true, 1210 | "license": "MIT", 1211 | "dependencies": { 1212 | "@babel/core": "^7.26.0", 1213 | "@babel/plugin-transform-react-jsx-self": "^7.25.9", 1214 | "@babel/plugin-transform-react-jsx-source": "^7.25.9", 1215 | "@types/babel__core": "^7.20.5", 1216 | "react-refresh": "^0.14.2" 1217 | }, 1218 | "engines": { 1219 | "node": "^14.18.0 || >=16.0.0" 1220 | }, 1221 | "peerDependencies": { 1222 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" 1223 | } 1224 | }, 1225 | "node_modules/browserslist": { 1226 | "version": "4.24.3", 1227 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", 1228 | "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", 1229 | "dev": true, 1230 | "funding": [ 1231 | { 1232 | "type": "opencollective", 1233 | "url": "https://opencollective.com/browserslist" 1234 | }, 1235 | { 1236 | "type": "tidelift", 1237 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1238 | }, 1239 | { 1240 | "type": "github", 1241 | "url": "https://github.com/sponsors/ai" 1242 | } 1243 | ], 1244 | "license": "MIT", 1245 | "dependencies": { 1246 | "caniuse-lite": "^1.0.30001688", 1247 | "electron-to-chromium": "^1.5.73", 1248 | "node-releases": "^2.0.19", 1249 | "update-browserslist-db": "^1.1.1" 1250 | }, 1251 | "bin": { 1252 | "browserslist": "cli.js" 1253 | }, 1254 | "engines": { 1255 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1256 | } 1257 | }, 1258 | "node_modules/caniuse-lite": { 1259 | "version": "1.0.30001690", 1260 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", 1261 | "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", 1262 | "dev": true, 1263 | "funding": [ 1264 | { 1265 | "type": "opencollective", 1266 | "url": "https://opencollective.com/browserslist" 1267 | }, 1268 | { 1269 | "type": "tidelift", 1270 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1271 | }, 1272 | { 1273 | "type": "github", 1274 | "url": "https://github.com/sponsors/ai" 1275 | } 1276 | ], 1277 | "license": "CC-BY-4.0" 1278 | }, 1279 | "node_modules/character-entities": { 1280 | "version": "1.2.4", 1281 | "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", 1282 | "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", 1283 | "license": "MIT", 1284 | "funding": { 1285 | "type": "github", 1286 | "url": "https://github.com/sponsors/wooorm" 1287 | } 1288 | }, 1289 | "node_modules/character-entities-legacy": { 1290 | "version": "1.1.4", 1291 | "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", 1292 | "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", 1293 | "license": "MIT", 1294 | "funding": { 1295 | "type": "github", 1296 | "url": "https://github.com/sponsors/wooorm" 1297 | } 1298 | }, 1299 | "node_modules/character-reference-invalid": { 1300 | "version": "1.1.4", 1301 | "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", 1302 | "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", 1303 | "license": "MIT", 1304 | "funding": { 1305 | "type": "github", 1306 | "url": "https://github.com/sponsors/wooorm" 1307 | } 1308 | }, 1309 | "node_modules/comma-separated-tokens": { 1310 | "version": "1.0.8", 1311 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", 1312 | "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", 1313 | "license": "MIT", 1314 | "funding": { 1315 | "type": "github", 1316 | "url": "https://github.com/sponsors/wooorm" 1317 | } 1318 | }, 1319 | "node_modules/convert-source-map": { 1320 | "version": "2.0.0", 1321 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1322 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1323 | "dev": true, 1324 | "license": "MIT" 1325 | }, 1326 | "node_modules/csstype": { 1327 | "version": "3.1.3", 1328 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1329 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1330 | "dev": true, 1331 | "license": "MIT" 1332 | }, 1333 | "node_modules/debug": { 1334 | "version": "4.4.0", 1335 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1336 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1337 | "dev": true, 1338 | "license": "MIT", 1339 | "dependencies": { 1340 | "ms": "^2.1.3" 1341 | }, 1342 | "engines": { 1343 | "node": ">=6.0" 1344 | }, 1345 | "peerDependenciesMeta": { 1346 | "supports-color": { 1347 | "optional": true 1348 | } 1349 | } 1350 | }, 1351 | "node_modules/electron-to-chromium": { 1352 | "version": "1.5.75", 1353 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz", 1354 | "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==", 1355 | "dev": true, 1356 | "license": "ISC" 1357 | }, 1358 | "node_modules/esbuild": { 1359 | "version": "0.24.0", 1360 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", 1361 | "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", 1362 | "dev": true, 1363 | "hasInstallScript": true, 1364 | "license": "MIT", 1365 | "bin": { 1366 | "esbuild": "bin/esbuild" 1367 | }, 1368 | "engines": { 1369 | "node": ">=18" 1370 | }, 1371 | "optionalDependencies": { 1372 | "@esbuild/aix-ppc64": "0.24.0", 1373 | "@esbuild/android-arm": "0.24.0", 1374 | "@esbuild/android-arm64": "0.24.0", 1375 | "@esbuild/android-x64": "0.24.0", 1376 | "@esbuild/darwin-arm64": "0.24.0", 1377 | "@esbuild/darwin-x64": "0.24.0", 1378 | "@esbuild/freebsd-arm64": "0.24.0", 1379 | "@esbuild/freebsd-x64": "0.24.0", 1380 | "@esbuild/linux-arm": "0.24.0", 1381 | "@esbuild/linux-arm64": "0.24.0", 1382 | "@esbuild/linux-ia32": "0.24.0", 1383 | "@esbuild/linux-loong64": "0.24.0", 1384 | "@esbuild/linux-mips64el": "0.24.0", 1385 | "@esbuild/linux-ppc64": "0.24.0", 1386 | "@esbuild/linux-riscv64": "0.24.0", 1387 | "@esbuild/linux-s390x": "0.24.0", 1388 | "@esbuild/linux-x64": "0.24.0", 1389 | "@esbuild/netbsd-x64": "0.24.0", 1390 | "@esbuild/openbsd-arm64": "0.24.0", 1391 | "@esbuild/openbsd-x64": "0.24.0", 1392 | "@esbuild/sunos-x64": "0.24.0", 1393 | "@esbuild/win32-arm64": "0.24.0", 1394 | "@esbuild/win32-ia32": "0.24.0", 1395 | "@esbuild/win32-x64": "0.24.0" 1396 | } 1397 | }, 1398 | "node_modules/escalade": { 1399 | "version": "3.2.0", 1400 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1401 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1402 | "dev": true, 1403 | "license": "MIT", 1404 | "engines": { 1405 | "node": ">=6" 1406 | } 1407 | }, 1408 | "node_modules/fault": { 1409 | "version": "1.0.4", 1410 | "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", 1411 | "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", 1412 | "license": "MIT", 1413 | "dependencies": { 1414 | "format": "^0.2.0" 1415 | }, 1416 | "funding": { 1417 | "type": "github", 1418 | "url": "https://github.com/sponsors/wooorm" 1419 | } 1420 | }, 1421 | "node_modules/format": { 1422 | "version": "0.2.2", 1423 | "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", 1424 | "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", 1425 | "engines": { 1426 | "node": ">=0.4.x" 1427 | } 1428 | }, 1429 | "node_modules/fsevents": { 1430 | "version": "2.3.3", 1431 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1432 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1433 | "dev": true, 1434 | "hasInstallScript": true, 1435 | "license": "MIT", 1436 | "optional": true, 1437 | "os": [ 1438 | "darwin" 1439 | ], 1440 | "engines": { 1441 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1442 | } 1443 | }, 1444 | "node_modules/gensync": { 1445 | "version": "1.0.0-beta.2", 1446 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1447 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1448 | "dev": true, 1449 | "license": "MIT", 1450 | "engines": { 1451 | "node": ">=6.9.0" 1452 | } 1453 | }, 1454 | "node_modules/globals": { 1455 | "version": "15.14.0", 1456 | "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", 1457 | "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", 1458 | "dev": true, 1459 | "license": "MIT", 1460 | "engines": { 1461 | "node": ">=18" 1462 | }, 1463 | "funding": { 1464 | "url": "https://github.com/sponsors/sindresorhus" 1465 | } 1466 | }, 1467 | "node_modules/hast-util-parse-selector": { 1468 | "version": "2.2.5", 1469 | "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", 1470 | "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", 1471 | "license": "MIT", 1472 | "funding": { 1473 | "type": "opencollective", 1474 | "url": "https://opencollective.com/unified" 1475 | } 1476 | }, 1477 | "node_modules/hastscript": { 1478 | "version": "6.0.0", 1479 | "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", 1480 | "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", 1481 | "license": "MIT", 1482 | "dependencies": { 1483 | "@types/hast": "^2.0.0", 1484 | "comma-separated-tokens": "^1.0.0", 1485 | "hast-util-parse-selector": "^2.0.0", 1486 | "property-information": "^5.0.0", 1487 | "space-separated-tokens": "^1.0.0" 1488 | }, 1489 | "funding": { 1490 | "type": "opencollective", 1491 | "url": "https://opencollective.com/unified" 1492 | } 1493 | }, 1494 | "node_modules/highlight.js": { 1495 | "version": "10.7.3", 1496 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", 1497 | "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", 1498 | "license": "BSD-3-Clause", 1499 | "engines": { 1500 | "node": "*" 1501 | } 1502 | }, 1503 | "node_modules/highlightjs-vue": { 1504 | "version": "1.0.0", 1505 | "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", 1506 | "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", 1507 | "license": "CC0-1.0" 1508 | }, 1509 | "node_modules/is-alphabetical": { 1510 | "version": "1.0.4", 1511 | "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", 1512 | "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", 1513 | "license": "MIT", 1514 | "funding": { 1515 | "type": "github", 1516 | "url": "https://github.com/sponsors/wooorm" 1517 | } 1518 | }, 1519 | "node_modules/is-alphanumerical": { 1520 | "version": "1.0.4", 1521 | "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", 1522 | "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", 1523 | "license": "MIT", 1524 | "dependencies": { 1525 | "is-alphabetical": "^1.0.0", 1526 | "is-decimal": "^1.0.0" 1527 | }, 1528 | "funding": { 1529 | "type": "github", 1530 | "url": "https://github.com/sponsors/wooorm" 1531 | } 1532 | }, 1533 | "node_modules/is-decimal": { 1534 | "version": "1.0.4", 1535 | "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", 1536 | "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", 1537 | "license": "MIT", 1538 | "funding": { 1539 | "type": "github", 1540 | "url": "https://github.com/sponsors/wooorm" 1541 | } 1542 | }, 1543 | "node_modules/is-hexadecimal": { 1544 | "version": "1.0.4", 1545 | "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", 1546 | "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", 1547 | "license": "MIT", 1548 | "funding": { 1549 | "type": "github", 1550 | "url": "https://github.com/sponsors/wooorm" 1551 | } 1552 | }, 1553 | "node_modules/js-tokens": { 1554 | "version": "4.0.0", 1555 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1556 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1557 | "dev": true, 1558 | "license": "MIT" 1559 | }, 1560 | "node_modules/jsesc": { 1561 | "version": "3.1.0", 1562 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 1563 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 1564 | "dev": true, 1565 | "license": "MIT", 1566 | "bin": { 1567 | "jsesc": "bin/jsesc" 1568 | }, 1569 | "engines": { 1570 | "node": ">=6" 1571 | } 1572 | }, 1573 | "node_modules/json5": { 1574 | "version": "2.2.3", 1575 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1576 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1577 | "dev": true, 1578 | "license": "MIT", 1579 | "bin": { 1580 | "json5": "lib/cli.js" 1581 | }, 1582 | "engines": { 1583 | "node": ">=6" 1584 | } 1585 | }, 1586 | "node_modules/lowlight": { 1587 | "version": "1.20.0", 1588 | "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", 1589 | "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", 1590 | "license": "MIT", 1591 | "dependencies": { 1592 | "fault": "^1.0.0", 1593 | "highlight.js": "~10.7.0" 1594 | }, 1595 | "funding": { 1596 | "type": "github", 1597 | "url": "https://github.com/sponsors/wooorm" 1598 | } 1599 | }, 1600 | "node_modules/lru-cache": { 1601 | "version": "5.1.1", 1602 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1603 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1604 | "dev": true, 1605 | "license": "ISC", 1606 | "dependencies": { 1607 | "yallist": "^3.0.2" 1608 | } 1609 | }, 1610 | "node_modules/ms": { 1611 | "version": "2.1.3", 1612 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1613 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1614 | "dev": true, 1615 | "license": "MIT" 1616 | }, 1617 | "node_modules/nanoid": { 1618 | "version": "3.3.8", 1619 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1620 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1621 | "dev": true, 1622 | "funding": [ 1623 | { 1624 | "type": "github", 1625 | "url": "https://github.com/sponsors/ai" 1626 | } 1627 | ], 1628 | "license": "MIT", 1629 | "bin": { 1630 | "nanoid": "bin/nanoid.cjs" 1631 | }, 1632 | "engines": { 1633 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1634 | } 1635 | }, 1636 | "node_modules/node-releases": { 1637 | "version": "2.0.19", 1638 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 1639 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 1640 | "dev": true, 1641 | "license": "MIT" 1642 | }, 1643 | "node_modules/parse-entities": { 1644 | "version": "2.0.0", 1645 | "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", 1646 | "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", 1647 | "license": "MIT", 1648 | "dependencies": { 1649 | "character-entities": "^1.0.0", 1650 | "character-entities-legacy": "^1.0.0", 1651 | "character-reference-invalid": "^1.0.0", 1652 | "is-alphanumerical": "^1.0.0", 1653 | "is-decimal": "^1.0.0", 1654 | "is-hexadecimal": "^1.0.0" 1655 | }, 1656 | "funding": { 1657 | "type": "github", 1658 | "url": "https://github.com/sponsors/wooorm" 1659 | } 1660 | }, 1661 | "node_modules/picocolors": { 1662 | "version": "1.1.1", 1663 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1664 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1665 | "dev": true, 1666 | "license": "ISC" 1667 | }, 1668 | "node_modules/postcss": { 1669 | "version": "8.4.49", 1670 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", 1671 | "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", 1672 | "dev": true, 1673 | "funding": [ 1674 | { 1675 | "type": "opencollective", 1676 | "url": "https://opencollective.com/postcss/" 1677 | }, 1678 | { 1679 | "type": "tidelift", 1680 | "url": "https://tidelift.com/funding/github/npm/postcss" 1681 | }, 1682 | { 1683 | "type": "github", 1684 | "url": "https://github.com/sponsors/ai" 1685 | } 1686 | ], 1687 | "license": "MIT", 1688 | "dependencies": { 1689 | "nanoid": "^3.3.7", 1690 | "picocolors": "^1.1.1", 1691 | "source-map-js": "^1.2.1" 1692 | }, 1693 | "engines": { 1694 | "node": "^10 || ^12 || >=14" 1695 | } 1696 | }, 1697 | "node_modules/prismjs": { 1698 | "version": "1.29.0", 1699 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", 1700 | "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", 1701 | "license": "MIT", 1702 | "engines": { 1703 | "node": ">=6" 1704 | } 1705 | }, 1706 | "node_modules/property-information": { 1707 | "version": "5.6.0", 1708 | "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", 1709 | "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", 1710 | "license": "MIT", 1711 | "dependencies": { 1712 | "xtend": "^4.0.0" 1713 | }, 1714 | "funding": { 1715 | "type": "github", 1716 | "url": "https://github.com/sponsors/wooorm" 1717 | } 1718 | }, 1719 | "node_modules/react": { 1720 | "resolved": "../node_modules/react", 1721 | "link": true 1722 | }, 1723 | "node_modules/react-dom": { 1724 | "resolved": "../node_modules/react-dom", 1725 | "link": true 1726 | }, 1727 | "node_modules/react-refresh": { 1728 | "version": "0.14.2", 1729 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", 1730 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", 1731 | "dev": true, 1732 | "license": "MIT", 1733 | "engines": { 1734 | "node": ">=0.10.0" 1735 | } 1736 | }, 1737 | "node_modules/react-syntax-highlighter": { 1738 | "version": "15.6.1", 1739 | "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", 1740 | "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", 1741 | "license": "MIT", 1742 | "dependencies": { 1743 | "@babel/runtime": "^7.3.1", 1744 | "highlight.js": "^10.4.1", 1745 | "highlightjs-vue": "^1.0.0", 1746 | "lowlight": "^1.17.0", 1747 | "prismjs": "^1.27.0", 1748 | "refractor": "^3.6.0" 1749 | }, 1750 | "peerDependencies": { 1751 | "react": ">= 0.14.0" 1752 | } 1753 | }, 1754 | "node_modules/react-top-loading-bar": { 1755 | "resolved": "..", 1756 | "link": true 1757 | }, 1758 | "node_modules/refractor": { 1759 | "version": "3.6.0", 1760 | "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", 1761 | "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", 1762 | "license": "MIT", 1763 | "dependencies": { 1764 | "hastscript": "^6.0.0", 1765 | "parse-entities": "^2.0.0", 1766 | "prismjs": "~1.27.0" 1767 | }, 1768 | "funding": { 1769 | "type": "github", 1770 | "url": "https://github.com/sponsors/wooorm" 1771 | } 1772 | }, 1773 | "node_modules/refractor/node_modules/prismjs": { 1774 | "version": "1.27.0", 1775 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", 1776 | "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", 1777 | "license": "MIT", 1778 | "engines": { 1779 | "node": ">=6" 1780 | } 1781 | }, 1782 | "node_modules/regenerator-runtime": { 1783 | "version": "0.14.1", 1784 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 1785 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 1786 | "license": "MIT" 1787 | }, 1788 | "node_modules/rollup": { 1789 | "version": "4.29.1", 1790 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", 1791 | "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", 1792 | "dev": true, 1793 | "license": "MIT", 1794 | "dependencies": { 1795 | "@types/estree": "1.0.6" 1796 | }, 1797 | "bin": { 1798 | "rollup": "dist/bin/rollup" 1799 | }, 1800 | "engines": { 1801 | "node": ">=18.0.0", 1802 | "npm": ">=8.0.0" 1803 | }, 1804 | "optionalDependencies": { 1805 | "@rollup/rollup-android-arm-eabi": "4.29.1", 1806 | "@rollup/rollup-android-arm64": "4.29.1", 1807 | "@rollup/rollup-darwin-arm64": "4.29.1", 1808 | "@rollup/rollup-darwin-x64": "4.29.1", 1809 | "@rollup/rollup-freebsd-arm64": "4.29.1", 1810 | "@rollup/rollup-freebsd-x64": "4.29.1", 1811 | "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", 1812 | "@rollup/rollup-linux-arm-musleabihf": "4.29.1", 1813 | "@rollup/rollup-linux-arm64-gnu": "4.29.1", 1814 | "@rollup/rollup-linux-arm64-musl": "4.29.1", 1815 | "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", 1816 | "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", 1817 | "@rollup/rollup-linux-riscv64-gnu": "4.29.1", 1818 | "@rollup/rollup-linux-s390x-gnu": "4.29.1", 1819 | "@rollup/rollup-linux-x64-gnu": "4.29.1", 1820 | "@rollup/rollup-linux-x64-musl": "4.29.1", 1821 | "@rollup/rollup-win32-arm64-msvc": "4.29.1", 1822 | "@rollup/rollup-win32-ia32-msvc": "4.29.1", 1823 | "@rollup/rollup-win32-x64-msvc": "4.29.1", 1824 | "fsevents": "~2.3.2" 1825 | } 1826 | }, 1827 | "node_modules/semver": { 1828 | "version": "6.3.1", 1829 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 1830 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 1831 | "dev": true, 1832 | "license": "ISC", 1833 | "bin": { 1834 | "semver": "bin/semver.js" 1835 | } 1836 | }, 1837 | "node_modules/source-map-js": { 1838 | "version": "1.2.1", 1839 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1840 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1841 | "dev": true, 1842 | "license": "BSD-3-Clause", 1843 | "engines": { 1844 | "node": ">=0.10.0" 1845 | } 1846 | }, 1847 | "node_modules/space-separated-tokens": { 1848 | "version": "1.1.5", 1849 | "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", 1850 | "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", 1851 | "license": "MIT", 1852 | "funding": { 1853 | "type": "github", 1854 | "url": "https://github.com/sponsors/wooorm" 1855 | } 1856 | }, 1857 | "node_modules/typescript": { 1858 | "version": "5.6.3", 1859 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", 1860 | "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", 1861 | "dev": true, 1862 | "license": "Apache-2.0", 1863 | "bin": { 1864 | "tsc": "bin/tsc", 1865 | "tsserver": "bin/tsserver" 1866 | }, 1867 | "engines": { 1868 | "node": ">=14.17" 1869 | } 1870 | }, 1871 | "node_modules/update-browserslist-db": { 1872 | "version": "1.1.1", 1873 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 1874 | "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 1875 | "dev": true, 1876 | "funding": [ 1877 | { 1878 | "type": "opencollective", 1879 | "url": "https://opencollective.com/browserslist" 1880 | }, 1881 | { 1882 | "type": "tidelift", 1883 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1884 | }, 1885 | { 1886 | "type": "github", 1887 | "url": "https://github.com/sponsors/ai" 1888 | } 1889 | ], 1890 | "license": "MIT", 1891 | "dependencies": { 1892 | "escalade": "^3.2.0", 1893 | "picocolors": "^1.1.0" 1894 | }, 1895 | "bin": { 1896 | "update-browserslist-db": "cli.js" 1897 | }, 1898 | "peerDependencies": { 1899 | "browserslist": ">= 4.21.0" 1900 | } 1901 | }, 1902 | "node_modules/vite": { 1903 | "version": "6.0.5", 1904 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", 1905 | "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", 1906 | "dev": true, 1907 | "license": "MIT", 1908 | "dependencies": { 1909 | "esbuild": "0.24.0", 1910 | "postcss": "^8.4.49", 1911 | "rollup": "^4.23.0" 1912 | }, 1913 | "bin": { 1914 | "vite": "bin/vite.js" 1915 | }, 1916 | "engines": { 1917 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 1918 | }, 1919 | "funding": { 1920 | "url": "https://github.com/vitejs/vite?sponsor=1" 1921 | }, 1922 | "optionalDependencies": { 1923 | "fsevents": "~2.3.3" 1924 | }, 1925 | "peerDependencies": { 1926 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 1927 | "jiti": ">=1.21.0", 1928 | "less": "*", 1929 | "lightningcss": "^1.21.0", 1930 | "sass": "*", 1931 | "sass-embedded": "*", 1932 | "stylus": "*", 1933 | "sugarss": "*", 1934 | "terser": "^5.16.0", 1935 | "tsx": "^4.8.1", 1936 | "yaml": "^2.4.2" 1937 | }, 1938 | "peerDependenciesMeta": { 1939 | "@types/node": { 1940 | "optional": true 1941 | }, 1942 | "jiti": { 1943 | "optional": true 1944 | }, 1945 | "less": { 1946 | "optional": true 1947 | }, 1948 | "lightningcss": { 1949 | "optional": true 1950 | }, 1951 | "sass": { 1952 | "optional": true 1953 | }, 1954 | "sass-embedded": { 1955 | "optional": true 1956 | }, 1957 | "stylus": { 1958 | "optional": true 1959 | }, 1960 | "sugarss": { 1961 | "optional": true 1962 | }, 1963 | "terser": { 1964 | "optional": true 1965 | }, 1966 | "tsx": { 1967 | "optional": true 1968 | }, 1969 | "yaml": { 1970 | "optional": true 1971 | } 1972 | } 1973 | }, 1974 | "node_modules/xtend": { 1975 | "version": "4.0.2", 1976 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1977 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1978 | "license": "MIT", 1979 | "engines": { 1980 | "node": ">=0.4" 1981 | } 1982 | }, 1983 | "node_modules/yallist": { 1984 | "version": "3.1.1", 1985 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1986 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 1987 | "dev": true, 1988 | "license": "ISC" 1989 | } 1990 | } 1991 | } 1992 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-top-loading-bar-example", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc -b && vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "react": "file:../node_modules/react", 12 | "react-dom": "file:../node_modules/react-dom", 13 | "react-top-loading-bar": "file:..", 14 | "react-syntax-highlighter": "^15.6.1" 15 | }, 16 | "devDependencies": { 17 | "@eslint/js": "^9.17.0", 18 | "@types/react": "^19.0.2", 19 | "@types/react-dom": "^19.0.2", 20 | "@types/react-syntax-highlighter": "^15.5.13", 21 | "@vitejs/plugin-react": "^4.3.4", 22 | "globals": "^15.13.0", 23 | "typescript": "~5.6.2", 24 | "vite": "^6.0.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /example/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useRef } from "react"; 2 | import { Light as SyntaxHighlighter } from "react-syntax-highlighter"; 3 | import js from "react-syntax-highlighter/dist/esm/languages/hljs/javascript"; 4 | import atom from "react-syntax-highlighter/dist/esm/styles/hljs/atom-one-dark"; 5 | import LoadingBar, { LoadingBarRef } from "react-top-loading-bar"; 6 | 7 | import "./index.css"; 8 | import { changeColor } from "./changeColor"; 9 | import Button from "./components/Button"; 10 | 11 | SyntaxHighlighter.registerLanguage("javascript", js); 12 | 13 | const App: React.FC = () => { 14 | const [progress, setProgress] = useState(0); 15 | const [barColor, setBarColor] = useState("#f11946"); 16 | const [buttonsColor, setButtonsColor] = useState("red"); 17 | const ref = useRef(null); 18 | const [usingRef, setUsingRef] = useState(true); 19 | const [usingHooks, setUsingHooks] = useState(true); 20 | 21 | const changeMode = (refMode: boolean) => { 22 | if (refMode) { 23 | setProgress(0); 24 | } 25 | 26 | setUsingRef(refMode); 27 | }; 28 | 29 | return ( 30 |
31 | {usingRef ? ( 32 | 33 | ) : ( 34 | setProgress(0)} 39 | /> 40 | )} 41 | 42 |
43 |

react-top-loading-bar

44 |
45 | 46 |
47 | or 48 |
49 | 50 |
51 |
52 |
53 | 58 | {usingRef 59 | ? usingHooks 60 | ? `const { start, complete } = useLoadingBar({ color: "blue", height: 2 }); 61 | \n 62 | ` 63 | : `const ref = useRef(null);\n\n\n\nref.current?.start()` 64 | : `const [progress, setProgress] = useState(0);\n\n setProgress(0)} />`} 66 | 67 |
68 | {usingRef ? ( 69 |
70 | 76 | 82 | 88 |
89 |
90 | ) : ( 91 |
92 | 98 | 104 | 110 | 111 |
112 |
113 | )} 114 | 115 | 125 | 131 | 132 | {usingRef && ( 133 | 141 | )} 142 | 154 | Example 155 | 156 |
157 |
158 | 180 |
181 |
182 | Made with ❤️ by{" "} 183 | 189 | Klendi Goci 190 | 191 |
192 |
193 |
194 | ); 195 | }; 196 | 197 | export default App; 198 | -------------------------------------------------------------------------------- /example/src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/src/changeColor.ts: -------------------------------------------------------------------------------- 1 | export const changeColor = (currentColor: string) => { 2 | function randomInt(min: number, max: number) { 3 | const i = (Math.random() * 32768) >>> 0; 4 | return (i % (min - max)) + min; 5 | } 6 | let colors = ["red", "purple", "green", "teal", "orange", "blue"]; 7 | colors = colors.filter((x) => x !== currentColor); 8 | const i = randomInt(0, colors.length); 9 | 10 | const color = colors[i]; 11 | 12 | let barColor = ""; 13 | switch (color) { 14 | case "red": 15 | barColor = "#f11946"; 16 | break; 17 | case "purple": 18 | barColor = "#8800ff"; 19 | break; 20 | case "green": 21 | barColor = "#28b485"; 22 | break; 23 | case "teal": 24 | barColor = "#00ffe2"; 25 | break; 26 | case "orange": 27 | barColor = "#ff7c05"; 28 | break; 29 | case "blue": 30 | barColor = "#2998ff"; 31 | break; 32 | 33 | default: 34 | barColor = "#f11946"; 35 | break; 36 | } 37 | return { barColor, color }; 38 | }; 39 | -------------------------------------------------------------------------------- /example/src/components/Button.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | 3 | const Button = ({ 4 | children, 5 | onClick, 6 | type, 7 | }: { 8 | children: string; 9 | onClick?: () => void; 10 | type?: "button" | "submit" | "reset"; 11 | }) => { 12 | const [clicked, setClicked] = useState(false); 13 | 14 | const onBtnClick = async () => { 15 | try { 16 | await navigator.clipboard.writeText(children); 17 | 18 | setClicked(true); 19 | if (onClick) onClick(); 20 | 21 | setTimeout(() => { 22 | setClicked(false); 23 | }, 2000); 24 | } catch (error) { 25 | console.error(error); 26 | } 27 | }; 28 | 29 | return ( 30 | 33 | ); 34 | }; 35 | 36 | export default Button; 37 | -------------------------------------------------------------------------------- /example/src/examples/ExampleWithContainer.tsx: -------------------------------------------------------------------------------- 1 | import { LoadingBarContainer, useLoadingBar } from "react-top-loading-bar"; 2 | 3 | const App = () => { 4 | const { start, complete, decrease, increase } = useLoadingBar({ 5 | height: 3, 6 | }); 7 | 8 | return ( 9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | ); 19 | }; 20 | 21 | const Parent = () => { 22 | return ( 23 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default Parent; 34 | -------------------------------------------------------------------------------- /example/src/examples/exampleWithRef.tsx: -------------------------------------------------------------------------------- 1 | import { useRef } from "react"; 2 | import LoadingBar, { LoadingBarRef } from "react-top-loading-bar"; 3 | 4 | const App = () => { 5 | const ref = useRef(null); 6 | 7 | return ( 8 |
9 | 10 | 13 | 16 | 17 |
18 |
19 | ); 20 | }; 21 | 22 | export default App; 23 | -------------------------------------------------------------------------------- /example/src/examples/exampleWithState.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import LoadingBar from "react-top-loading-bar"; 3 | 4 | const App = () => { 5 | const [progress, setProgress] = useState(0); 6 | 7 | return ( 8 |
9 | setProgress(0)} 13 | /> 14 | 15 | 16 | 17 |
18 |
19 | ); 20 | }; 21 | 22 | export default App; 23 | -------------------------------------------------------------------------------- /example/src/index.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Roboto:100,400"); 2 | 3 | body { 4 | margin: 0; 5 | padding: 0; 6 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", 7 | "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", 8 | "Helvetica Neue", sans-serif; 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | color: #b4b4b4; 12 | background: #0a0a0a; 13 | } 14 | 15 | code { 16 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 17 | monospace; 18 | } 19 | 20 | body { 21 | margin: 0; 22 | padding: 0; 23 | font-family: "Roboto", sans-serif; 24 | } 25 | 26 | .buttons-group { 27 | padding-top: 6rem; 28 | text-align: center; 29 | } 30 | 31 | .btn { 32 | padding: 1rem 2rem; 33 | margin: 0.5rem; 34 | outline: none; 35 | border: none; 36 | border-radius: 100rem; 37 | font-size: 16px; 38 | transition: all 0.1s ease-in; 39 | cursor: pointer; 40 | text-decoration: none; 41 | } 42 | 43 | a { 44 | font-size: 16px; 45 | text-decoration: none; 46 | color: white; 47 | } 48 | 49 | .btn:active, 50 | a:active { 51 | transform: scale(1.03) translateY(3px); 52 | } 53 | 54 | .btn.red { 55 | color: white; 56 | background-color: #f11946; 57 | box-shadow: 0 0.5rem 2rem rgba(241, 25, 70, 0.5); 58 | } 59 | 60 | .btn.red:hover { 61 | background-color: #be1737; 62 | } 63 | 64 | .btn.blue { 65 | color: white; 66 | background-color: #2998ff; 67 | box-shadow: 0 0.5rem 2rem rgba(41, 152, 255, 0.5); 68 | } 69 | 70 | .btn.blue:hover { 71 | background-color: #1d7acb; 72 | } 73 | 74 | .btn.purple { 75 | color: white; 76 | background-color: #8800ff; 77 | box-shadow: 0 0.5rem 2rem rgba(136, 0, 255, 0.5); 78 | } 79 | 80 | .btn.purple:hover { 81 | background-color: #6800c5; 82 | } 83 | 84 | .btn.green { 85 | color: white; 86 | background-color: #28b485; 87 | box-shadow: 0 0.5rem 2rem rgba(40, 180, 133, 0.5); 88 | } 89 | 90 | .btn.green:hover { 91 | background-color: #23986f; 92 | } 93 | 94 | .btn.teal { 95 | color: white; 96 | background-color: #0095a2; 97 | box-shadow: 0 0.5rem 2rem rgba(0, 255, 226, 0.5); 98 | } 99 | 100 | .btn.teal:hover { 101 | background-color: #00bcce; 102 | } 103 | 104 | .btn.orange { 105 | color: white; 106 | background-color: #ff7c05; 107 | box-shadow: 0 0.5rem 2rem rgba(255, 86, 0, 0.5); 108 | } 109 | 110 | .btn.orange:hover { 111 | background-color: #e66b04; 112 | } 113 | 114 | .header { 115 | text-align: center; 116 | font-weight: 100; 117 | font-size: 4rem; 118 | margin-top: 1rem; 119 | } 120 | 121 | .text-container { 122 | text-align: center; 123 | margin-bottom: -5rem; 124 | } 125 | 126 | .package-install-text { 127 | display: inline-block; 128 | padding: 1rem 2rem; 129 | border-radius: 50px; 130 | color: #d6d6d6; 131 | background: black; 132 | font-family: "Courier New", Courier, monospace; 133 | font-size: large; 134 | font-weight: 400; 135 | margin: 1em; 136 | transition: all 0.3s; 137 | cursor: pointer; 138 | border: 1px solid rgba(255, 255, 255, 0.25); 139 | } 140 | 141 | .package-install-text:hover { 142 | background: rgba(0, 255, 64, 0.2); 143 | border: 1px solid rgba(0, 173, 43, 0.4); 144 | } 145 | 146 | .github-buttons { 147 | margin-top: 2rem; 148 | } 149 | 150 | .btn.disabled { 151 | background: #c7c7c7; 152 | box-shadow: none; 153 | } 154 | 155 | .btn:hover.disabled { 156 | background: #c7c7c7; 157 | box-shadow: none; 158 | cursor: not-allowed; 159 | } 160 | 161 | /* 162 | 163 | Atom One Dark by Daniel Gamage 164 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax 165 | 166 | base: #282c34 167 | mono-1: #abb2bf 168 | mono-2: #818896 169 | mono-3: #5c6370 170 | hue-1: #56b6c2 171 | hue-2: #61aeee 172 | hue-3: #c678dd 173 | hue-4: #98c379 174 | hue-5: #e06c75 175 | hue-5-2: #be5046 176 | hue-6: #d19a66 177 | hue-6-2: #e6c07b 178 | 179 | */ 180 | 181 | .hljs { 182 | display: block; 183 | overflow-x: auto; 184 | padding: 0.5em; 185 | color: #abb2bf; 186 | } 187 | 188 | .hljs-comment, 189 | .hljs-quote { 190 | color: #5c6370; 191 | font-style: italic; 192 | } 193 | 194 | .hljs-doctag, 195 | .hljs-keyword, 196 | .hljs-formula { 197 | color: #c678dd; 198 | } 199 | 200 | .hljs-section, 201 | .hljs-name, 202 | .hljs-selector-tag, 203 | .hljs-deletion, 204 | .hljs-subst { 205 | color: #e06c75; 206 | } 207 | 208 | .hljs-literal { 209 | color: #56b6c2; 210 | } 211 | 212 | .hljs-string, 213 | .hljs-regexp, 214 | .hljs-addition, 215 | .hljs-attribute, 216 | .hljs-meta-string { 217 | color: #98c379; 218 | } 219 | 220 | .hljs-built_in, 221 | .hljs-class .hljs-title { 222 | color: #e6c07b; 223 | } 224 | 225 | .hljs-attr, 226 | .hljs-variable, 227 | .hljs-template-variable, 228 | .hljs-type, 229 | .hljs-selector-class, 230 | .hljs-selector-attr, 231 | .hljs-selector-pseudo, 232 | .hljs-number { 233 | color: #d19a66; 234 | } 235 | 236 | .hljs-symbol, 237 | .hljs-bullet, 238 | .hljs-link, 239 | .hljs-meta, 240 | .hljs-selector-id, 241 | .hljs-title { 242 | color: #61aeee; 243 | } 244 | 245 | .hljs-emphasis { 246 | font-style: italic; 247 | } 248 | 249 | .hljs-strong { 250 | font-weight: bold; 251 | } 252 | 253 | .hljs-link { 254 | text-decoration: underline; 255 | } 256 | 257 | .code-highlighter { 258 | border-radius: 5px; 259 | display: inline-block; 260 | background-color: #0a0a0a !important; 261 | } 262 | -------------------------------------------------------------------------------- /example/src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react' 2 | import { createRoot } from 'react-dom/client' 3 | import './index.css' 4 | import App from './App.tsx' 5 | 6 | createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /example/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /example/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true 24 | }, 25 | "include": ["src"] 26 | } 27 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /example/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /example/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | base: "/react-top-loading-bar/", 8 | }); 9 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-top-loading-bar", 3 | "version": "3.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-top-loading-bar", 9 | "version": "3.0.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@types/react": "^19.0.2", 13 | "gh-pages": "^6.2.0", 14 | "prettier": "^3.4.2", 15 | "react": "^19.0.0", 16 | "react-dom": "^19.0.0", 17 | "tsup": "^8.3.5", 18 | "typescript": "^5.7.2" 19 | }, 20 | "engines": { 21 | "node": ">=14" 22 | }, 23 | "peerDependencies": { 24 | "react": "^16 || ^17 || ^18 || ^19" 25 | } 26 | }, 27 | "node_modules/@esbuild/aix-ppc64": { 28 | "version": "0.24.2", 29 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 30 | "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 31 | "cpu": [ 32 | "ppc64" 33 | ], 34 | "dev": true, 35 | "license": "MIT", 36 | "optional": true, 37 | "os": [ 38 | "aix" 39 | ], 40 | "engines": { 41 | "node": ">=18" 42 | } 43 | }, 44 | "node_modules/@esbuild/android-arm": { 45 | "version": "0.24.2", 46 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 47 | "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 48 | "cpu": [ 49 | "arm" 50 | ], 51 | "dev": true, 52 | "license": "MIT", 53 | "optional": true, 54 | "os": [ 55 | "android" 56 | ], 57 | "engines": { 58 | "node": ">=18" 59 | } 60 | }, 61 | "node_modules/@esbuild/android-arm64": { 62 | "version": "0.24.2", 63 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 64 | "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 65 | "cpu": [ 66 | "arm64" 67 | ], 68 | "dev": true, 69 | "license": "MIT", 70 | "optional": true, 71 | "os": [ 72 | "android" 73 | ], 74 | "engines": { 75 | "node": ">=18" 76 | } 77 | }, 78 | "node_modules/@esbuild/android-x64": { 79 | "version": "0.24.2", 80 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 81 | "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 82 | "cpu": [ 83 | "x64" 84 | ], 85 | "dev": true, 86 | "license": "MIT", 87 | "optional": true, 88 | "os": [ 89 | "android" 90 | ], 91 | "engines": { 92 | "node": ">=18" 93 | } 94 | }, 95 | "node_modules/@esbuild/darwin-arm64": { 96 | "version": "0.24.2", 97 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 98 | "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 99 | "cpu": [ 100 | "arm64" 101 | ], 102 | "dev": true, 103 | "license": "MIT", 104 | "optional": true, 105 | "os": [ 106 | "darwin" 107 | ], 108 | "engines": { 109 | "node": ">=18" 110 | } 111 | }, 112 | "node_modules/@esbuild/darwin-x64": { 113 | "version": "0.24.2", 114 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 115 | "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 116 | "cpu": [ 117 | "x64" 118 | ], 119 | "dev": true, 120 | "license": "MIT", 121 | "optional": true, 122 | "os": [ 123 | "darwin" 124 | ], 125 | "engines": { 126 | "node": ">=18" 127 | } 128 | }, 129 | "node_modules/@esbuild/freebsd-arm64": { 130 | "version": "0.24.2", 131 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 132 | "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 133 | "cpu": [ 134 | "arm64" 135 | ], 136 | "dev": true, 137 | "license": "MIT", 138 | "optional": true, 139 | "os": [ 140 | "freebsd" 141 | ], 142 | "engines": { 143 | "node": ">=18" 144 | } 145 | }, 146 | "node_modules/@esbuild/freebsd-x64": { 147 | "version": "0.24.2", 148 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 149 | "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 150 | "cpu": [ 151 | "x64" 152 | ], 153 | "dev": true, 154 | "license": "MIT", 155 | "optional": true, 156 | "os": [ 157 | "freebsd" 158 | ], 159 | "engines": { 160 | "node": ">=18" 161 | } 162 | }, 163 | "node_modules/@esbuild/linux-arm": { 164 | "version": "0.24.2", 165 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 166 | "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 167 | "cpu": [ 168 | "arm" 169 | ], 170 | "dev": true, 171 | "license": "MIT", 172 | "optional": true, 173 | "os": [ 174 | "linux" 175 | ], 176 | "engines": { 177 | "node": ">=18" 178 | } 179 | }, 180 | "node_modules/@esbuild/linux-arm64": { 181 | "version": "0.24.2", 182 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 183 | "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 184 | "cpu": [ 185 | "arm64" 186 | ], 187 | "dev": true, 188 | "license": "MIT", 189 | "optional": true, 190 | "os": [ 191 | "linux" 192 | ], 193 | "engines": { 194 | "node": ">=18" 195 | } 196 | }, 197 | "node_modules/@esbuild/linux-ia32": { 198 | "version": "0.24.2", 199 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 200 | "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 201 | "cpu": [ 202 | "ia32" 203 | ], 204 | "dev": true, 205 | "license": "MIT", 206 | "optional": true, 207 | "os": [ 208 | "linux" 209 | ], 210 | "engines": { 211 | "node": ">=18" 212 | } 213 | }, 214 | "node_modules/@esbuild/linux-loong64": { 215 | "version": "0.24.2", 216 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 217 | "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 218 | "cpu": [ 219 | "loong64" 220 | ], 221 | "dev": true, 222 | "license": "MIT", 223 | "optional": true, 224 | "os": [ 225 | "linux" 226 | ], 227 | "engines": { 228 | "node": ">=18" 229 | } 230 | }, 231 | "node_modules/@esbuild/linux-mips64el": { 232 | "version": "0.24.2", 233 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 234 | "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 235 | "cpu": [ 236 | "mips64el" 237 | ], 238 | "dev": true, 239 | "license": "MIT", 240 | "optional": true, 241 | "os": [ 242 | "linux" 243 | ], 244 | "engines": { 245 | "node": ">=18" 246 | } 247 | }, 248 | "node_modules/@esbuild/linux-ppc64": { 249 | "version": "0.24.2", 250 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 251 | "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 252 | "cpu": [ 253 | "ppc64" 254 | ], 255 | "dev": true, 256 | "license": "MIT", 257 | "optional": true, 258 | "os": [ 259 | "linux" 260 | ], 261 | "engines": { 262 | "node": ">=18" 263 | } 264 | }, 265 | "node_modules/@esbuild/linux-riscv64": { 266 | "version": "0.24.2", 267 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 268 | "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 269 | "cpu": [ 270 | "riscv64" 271 | ], 272 | "dev": true, 273 | "license": "MIT", 274 | "optional": true, 275 | "os": [ 276 | "linux" 277 | ], 278 | "engines": { 279 | "node": ">=18" 280 | } 281 | }, 282 | "node_modules/@esbuild/linux-s390x": { 283 | "version": "0.24.2", 284 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 285 | "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 286 | "cpu": [ 287 | "s390x" 288 | ], 289 | "dev": true, 290 | "license": "MIT", 291 | "optional": true, 292 | "os": [ 293 | "linux" 294 | ], 295 | "engines": { 296 | "node": ">=18" 297 | } 298 | }, 299 | "node_modules/@esbuild/linux-x64": { 300 | "version": "0.24.2", 301 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 302 | "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 303 | "cpu": [ 304 | "x64" 305 | ], 306 | "dev": true, 307 | "license": "MIT", 308 | "optional": true, 309 | "os": [ 310 | "linux" 311 | ], 312 | "engines": { 313 | "node": ">=18" 314 | } 315 | }, 316 | "node_modules/@esbuild/netbsd-arm64": { 317 | "version": "0.24.2", 318 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 319 | "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 320 | "cpu": [ 321 | "arm64" 322 | ], 323 | "dev": true, 324 | "license": "MIT", 325 | "optional": true, 326 | "os": [ 327 | "netbsd" 328 | ], 329 | "engines": { 330 | "node": ">=18" 331 | } 332 | }, 333 | "node_modules/@esbuild/netbsd-x64": { 334 | "version": "0.24.2", 335 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 336 | "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 337 | "cpu": [ 338 | "x64" 339 | ], 340 | "dev": true, 341 | "license": "MIT", 342 | "optional": true, 343 | "os": [ 344 | "netbsd" 345 | ], 346 | "engines": { 347 | "node": ">=18" 348 | } 349 | }, 350 | "node_modules/@esbuild/openbsd-arm64": { 351 | "version": "0.24.2", 352 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 353 | "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 354 | "cpu": [ 355 | "arm64" 356 | ], 357 | "dev": true, 358 | "license": "MIT", 359 | "optional": true, 360 | "os": [ 361 | "openbsd" 362 | ], 363 | "engines": { 364 | "node": ">=18" 365 | } 366 | }, 367 | "node_modules/@esbuild/openbsd-x64": { 368 | "version": "0.24.2", 369 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 370 | "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 371 | "cpu": [ 372 | "x64" 373 | ], 374 | "dev": true, 375 | "license": "MIT", 376 | "optional": true, 377 | "os": [ 378 | "openbsd" 379 | ], 380 | "engines": { 381 | "node": ">=18" 382 | } 383 | }, 384 | "node_modules/@esbuild/sunos-x64": { 385 | "version": "0.24.2", 386 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 387 | "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 388 | "cpu": [ 389 | "x64" 390 | ], 391 | "dev": true, 392 | "license": "MIT", 393 | "optional": true, 394 | "os": [ 395 | "sunos" 396 | ], 397 | "engines": { 398 | "node": ">=18" 399 | } 400 | }, 401 | "node_modules/@esbuild/win32-arm64": { 402 | "version": "0.24.2", 403 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 404 | "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 405 | "cpu": [ 406 | "arm64" 407 | ], 408 | "dev": true, 409 | "license": "MIT", 410 | "optional": true, 411 | "os": [ 412 | "win32" 413 | ], 414 | "engines": { 415 | "node": ">=18" 416 | } 417 | }, 418 | "node_modules/@esbuild/win32-ia32": { 419 | "version": "0.24.2", 420 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 421 | "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 422 | "cpu": [ 423 | "ia32" 424 | ], 425 | "dev": true, 426 | "license": "MIT", 427 | "optional": true, 428 | "os": [ 429 | "win32" 430 | ], 431 | "engines": { 432 | "node": ">=18" 433 | } 434 | }, 435 | "node_modules/@esbuild/win32-x64": { 436 | "version": "0.24.2", 437 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 438 | "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 439 | "cpu": [ 440 | "x64" 441 | ], 442 | "dev": true, 443 | "license": "MIT", 444 | "optional": true, 445 | "os": [ 446 | "win32" 447 | ], 448 | "engines": { 449 | "node": ">=18" 450 | } 451 | }, 452 | "node_modules/@isaacs/cliui": { 453 | "version": "8.0.2", 454 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 455 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 456 | "dev": true, 457 | "license": "ISC", 458 | "dependencies": { 459 | "string-width": "^5.1.2", 460 | "string-width-cjs": "npm:string-width@^4.2.0", 461 | "strip-ansi": "^7.0.1", 462 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 463 | "wrap-ansi": "^8.1.0", 464 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 465 | }, 466 | "engines": { 467 | "node": ">=12" 468 | } 469 | }, 470 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 471 | "version": "6.1.0", 472 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 473 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 474 | "dev": true, 475 | "license": "MIT", 476 | "engines": { 477 | "node": ">=12" 478 | }, 479 | "funding": { 480 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 481 | } 482 | }, 483 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": { 484 | "version": "6.2.1", 485 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 486 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 487 | "dev": true, 488 | "license": "MIT", 489 | "engines": { 490 | "node": ">=12" 491 | }, 492 | "funding": { 493 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 494 | } 495 | }, 496 | "node_modules/@isaacs/cliui/node_modules/string-width": { 497 | "version": "5.1.2", 498 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 499 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 500 | "dev": true, 501 | "license": "MIT", 502 | "dependencies": { 503 | "eastasianwidth": "^0.2.0", 504 | "emoji-regex": "^9.2.2", 505 | "strip-ansi": "^7.0.1" 506 | }, 507 | "engines": { 508 | "node": ">=12" 509 | }, 510 | "funding": { 511 | "url": "https://github.com/sponsors/sindresorhus" 512 | } 513 | }, 514 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 515 | "version": "7.1.0", 516 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 517 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 518 | "dev": true, 519 | "license": "MIT", 520 | "dependencies": { 521 | "ansi-regex": "^6.0.1" 522 | }, 523 | "engines": { 524 | "node": ">=12" 525 | }, 526 | "funding": { 527 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 528 | } 529 | }, 530 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 531 | "version": "8.1.0", 532 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 533 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 534 | "dev": true, 535 | "license": "MIT", 536 | "dependencies": { 537 | "ansi-styles": "^6.1.0", 538 | "string-width": "^5.0.1", 539 | "strip-ansi": "^7.0.1" 540 | }, 541 | "engines": { 542 | "node": ">=12" 543 | }, 544 | "funding": { 545 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 546 | } 547 | }, 548 | "node_modules/@jridgewell/gen-mapping": { 549 | "version": "0.3.2", 550 | "dev": true, 551 | "license": "MIT", 552 | "dependencies": { 553 | "@jridgewell/set-array": "^1.0.1", 554 | "@jridgewell/sourcemap-codec": "^1.4.10", 555 | "@jridgewell/trace-mapping": "^0.3.9" 556 | }, 557 | "engines": { 558 | "node": ">=6.0.0" 559 | } 560 | }, 561 | "node_modules/@jridgewell/resolve-uri": { 562 | "version": "3.1.0", 563 | "dev": true, 564 | "license": "MIT", 565 | "engines": { 566 | "node": ">=6.0.0" 567 | } 568 | }, 569 | "node_modules/@jridgewell/set-array": { 570 | "version": "1.1.2", 571 | "dev": true, 572 | "license": "MIT", 573 | "engines": { 574 | "node": ">=6.0.0" 575 | } 576 | }, 577 | "node_modules/@jridgewell/sourcemap-codec": { 578 | "version": "1.4.14", 579 | "dev": true, 580 | "license": "MIT" 581 | }, 582 | "node_modules/@jridgewell/trace-mapping": { 583 | "version": "0.3.15", 584 | "dev": true, 585 | "license": "MIT", 586 | "dependencies": { 587 | "@jridgewell/resolve-uri": "^3.0.3", 588 | "@jridgewell/sourcemap-codec": "^1.4.10" 589 | } 590 | }, 591 | "node_modules/@nodelib/fs.scandir": { 592 | "version": "2.1.5", 593 | "dev": true, 594 | "license": "MIT", 595 | "dependencies": { 596 | "@nodelib/fs.stat": "2.0.5", 597 | "run-parallel": "^1.1.9" 598 | }, 599 | "engines": { 600 | "node": ">= 8" 601 | } 602 | }, 603 | "node_modules/@nodelib/fs.stat": { 604 | "version": "2.0.5", 605 | "dev": true, 606 | "license": "MIT", 607 | "engines": { 608 | "node": ">= 8" 609 | } 610 | }, 611 | "node_modules/@nodelib/fs.walk": { 612 | "version": "1.2.8", 613 | "dev": true, 614 | "license": "MIT", 615 | "dependencies": { 616 | "@nodelib/fs.scandir": "2.1.5", 617 | "fastq": "^1.6.0" 618 | }, 619 | "engines": { 620 | "node": ">= 8" 621 | } 622 | }, 623 | "node_modules/@pkgjs/parseargs": { 624 | "version": "0.11.0", 625 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 626 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 627 | "dev": true, 628 | "license": "MIT", 629 | "optional": true, 630 | "engines": { 631 | "node": ">=14" 632 | } 633 | }, 634 | "node_modules/@rollup/rollup-android-arm-eabi": { 635 | "version": "4.29.1", 636 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", 637 | "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", 638 | "cpu": [ 639 | "arm" 640 | ], 641 | "dev": true, 642 | "license": "MIT", 643 | "optional": true, 644 | "os": [ 645 | "android" 646 | ] 647 | }, 648 | "node_modules/@rollup/rollup-android-arm64": { 649 | "version": "4.29.1", 650 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", 651 | "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", 652 | "cpu": [ 653 | "arm64" 654 | ], 655 | "dev": true, 656 | "license": "MIT", 657 | "optional": true, 658 | "os": [ 659 | "android" 660 | ] 661 | }, 662 | "node_modules/@rollup/rollup-darwin-arm64": { 663 | "version": "4.29.1", 664 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", 665 | "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", 666 | "cpu": [ 667 | "arm64" 668 | ], 669 | "dev": true, 670 | "license": "MIT", 671 | "optional": true, 672 | "os": [ 673 | "darwin" 674 | ] 675 | }, 676 | "node_modules/@rollup/rollup-darwin-x64": { 677 | "version": "4.29.1", 678 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", 679 | "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", 680 | "cpu": [ 681 | "x64" 682 | ], 683 | "dev": true, 684 | "license": "MIT", 685 | "optional": true, 686 | "os": [ 687 | "darwin" 688 | ] 689 | }, 690 | "node_modules/@rollup/rollup-freebsd-arm64": { 691 | "version": "4.29.1", 692 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", 693 | "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", 694 | "cpu": [ 695 | "arm64" 696 | ], 697 | "dev": true, 698 | "license": "MIT", 699 | "optional": true, 700 | "os": [ 701 | "freebsd" 702 | ] 703 | }, 704 | "node_modules/@rollup/rollup-freebsd-x64": { 705 | "version": "4.29.1", 706 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", 707 | "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", 708 | "cpu": [ 709 | "x64" 710 | ], 711 | "dev": true, 712 | "license": "MIT", 713 | "optional": true, 714 | "os": [ 715 | "freebsd" 716 | ] 717 | }, 718 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 719 | "version": "4.29.1", 720 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", 721 | "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", 722 | "cpu": [ 723 | "arm" 724 | ], 725 | "dev": true, 726 | "license": "MIT", 727 | "optional": true, 728 | "os": [ 729 | "linux" 730 | ] 731 | }, 732 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 733 | "version": "4.29.1", 734 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", 735 | "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", 736 | "cpu": [ 737 | "arm" 738 | ], 739 | "dev": true, 740 | "license": "MIT", 741 | "optional": true, 742 | "os": [ 743 | "linux" 744 | ] 745 | }, 746 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 747 | "version": "4.29.1", 748 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", 749 | "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", 750 | "cpu": [ 751 | "arm64" 752 | ], 753 | "dev": true, 754 | "license": "MIT", 755 | "optional": true, 756 | "os": [ 757 | "linux" 758 | ] 759 | }, 760 | "node_modules/@rollup/rollup-linux-arm64-musl": { 761 | "version": "4.29.1", 762 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", 763 | "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", 764 | "cpu": [ 765 | "arm64" 766 | ], 767 | "dev": true, 768 | "license": "MIT", 769 | "optional": true, 770 | "os": [ 771 | "linux" 772 | ] 773 | }, 774 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 775 | "version": "4.29.1", 776 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", 777 | "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", 778 | "cpu": [ 779 | "loong64" 780 | ], 781 | "dev": true, 782 | "license": "MIT", 783 | "optional": true, 784 | "os": [ 785 | "linux" 786 | ] 787 | }, 788 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 789 | "version": "4.29.1", 790 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", 791 | "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", 792 | "cpu": [ 793 | "ppc64" 794 | ], 795 | "dev": true, 796 | "license": "MIT", 797 | "optional": true, 798 | "os": [ 799 | "linux" 800 | ] 801 | }, 802 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 803 | "version": "4.29.1", 804 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", 805 | "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", 806 | "cpu": [ 807 | "riscv64" 808 | ], 809 | "dev": true, 810 | "license": "MIT", 811 | "optional": true, 812 | "os": [ 813 | "linux" 814 | ] 815 | }, 816 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 817 | "version": "4.29.1", 818 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", 819 | "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", 820 | "cpu": [ 821 | "s390x" 822 | ], 823 | "dev": true, 824 | "license": "MIT", 825 | "optional": true, 826 | "os": [ 827 | "linux" 828 | ] 829 | }, 830 | "node_modules/@rollup/rollup-linux-x64-gnu": { 831 | "version": "4.29.1", 832 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", 833 | "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", 834 | "cpu": [ 835 | "x64" 836 | ], 837 | "dev": true, 838 | "license": "MIT", 839 | "optional": true, 840 | "os": [ 841 | "linux" 842 | ] 843 | }, 844 | "node_modules/@rollup/rollup-linux-x64-musl": { 845 | "version": "4.29.1", 846 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", 847 | "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", 848 | "cpu": [ 849 | "x64" 850 | ], 851 | "dev": true, 852 | "license": "MIT", 853 | "optional": true, 854 | "os": [ 855 | "linux" 856 | ] 857 | }, 858 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 859 | "version": "4.29.1", 860 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", 861 | "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", 862 | "cpu": [ 863 | "arm64" 864 | ], 865 | "dev": true, 866 | "license": "MIT", 867 | "optional": true, 868 | "os": [ 869 | "win32" 870 | ] 871 | }, 872 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 873 | "version": "4.29.1", 874 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", 875 | "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", 876 | "cpu": [ 877 | "ia32" 878 | ], 879 | "dev": true, 880 | "license": "MIT", 881 | "optional": true, 882 | "os": [ 883 | "win32" 884 | ] 885 | }, 886 | "node_modules/@rollup/rollup-win32-x64-msvc": { 887 | "version": "4.29.1", 888 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", 889 | "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", 890 | "cpu": [ 891 | "x64" 892 | ], 893 | "dev": true, 894 | "license": "MIT", 895 | "optional": true, 896 | "os": [ 897 | "win32" 898 | ] 899 | }, 900 | "node_modules/@types/react": { 901 | "version": "19.0.2", 902 | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.2.tgz", 903 | "integrity": "sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==", 904 | "dev": true, 905 | "license": "MIT", 906 | "dependencies": { 907 | "csstype": "^3.0.2" 908 | } 909 | }, 910 | "node_modules/ansi-regex": { 911 | "version": "5.0.1", 912 | "dev": true, 913 | "license": "MIT", 914 | "engines": { 915 | "node": ">=8" 916 | } 917 | }, 918 | "node_modules/any-promise": { 919 | "version": "1.3.0", 920 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 921 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 922 | "dev": true, 923 | "license": "MIT" 924 | }, 925 | "node_modules/array-union": { 926 | "version": "2.1.0", 927 | "dev": true, 928 | "license": "MIT", 929 | "engines": { 930 | "node": ">=8" 931 | } 932 | }, 933 | "node_modules/async": { 934 | "version": "3.2.6", 935 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", 936 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", 937 | "dev": true, 938 | "license": "MIT" 939 | }, 940 | "node_modules/balanced-match": { 941 | "version": "1.0.2", 942 | "dev": true, 943 | "license": "MIT" 944 | }, 945 | "node_modules/braces": { 946 | "version": "3.0.2", 947 | "dev": true, 948 | "license": "MIT", 949 | "dependencies": { 950 | "fill-range": "^7.0.1" 951 | }, 952 | "engines": { 953 | "node": ">=8" 954 | } 955 | }, 956 | "node_modules/bundle-require": { 957 | "version": "5.0.0", 958 | "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", 959 | "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", 960 | "dev": true, 961 | "license": "MIT", 962 | "dependencies": { 963 | "load-tsconfig": "^0.2.3" 964 | }, 965 | "engines": { 966 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 967 | }, 968 | "peerDependencies": { 969 | "esbuild": ">=0.18" 970 | } 971 | }, 972 | "node_modules/cac": { 973 | "version": "6.7.14", 974 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 975 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 976 | "dev": true, 977 | "license": "MIT", 978 | "engines": { 979 | "node": ">=8" 980 | } 981 | }, 982 | "node_modules/commondir": { 983 | "version": "1.0.1", 984 | "dev": true, 985 | "license": "MIT" 986 | }, 987 | "node_modules/consola": { 988 | "version": "3.3.0", 989 | "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.0.tgz", 990 | "integrity": "sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==", 991 | "dev": true, 992 | "license": "MIT", 993 | "engines": { 994 | "node": "^14.18.0 || >=16.10.0" 995 | } 996 | }, 997 | "node_modules/cross-spawn": { 998 | "version": "7.0.3", 999 | "dev": true, 1000 | "license": "MIT", 1001 | "dependencies": { 1002 | "path-key": "^3.1.0", 1003 | "shebang-command": "^2.0.0", 1004 | "which": "^2.0.1" 1005 | }, 1006 | "engines": { 1007 | "node": ">= 8" 1008 | } 1009 | }, 1010 | "node_modules/csstype": { 1011 | "version": "3.1.3", 1012 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1013 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1014 | "dev": true, 1015 | "license": "MIT" 1016 | }, 1017 | "node_modules/debug": { 1018 | "version": "4.4.0", 1019 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1020 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1021 | "dev": true, 1022 | "license": "MIT", 1023 | "dependencies": { 1024 | "ms": "^2.1.3" 1025 | }, 1026 | "engines": { 1027 | "node": ">=6.0" 1028 | }, 1029 | "peerDependenciesMeta": { 1030 | "supports-color": { 1031 | "optional": true 1032 | } 1033 | } 1034 | }, 1035 | "node_modules/dir-glob": { 1036 | "version": "3.0.1", 1037 | "dev": true, 1038 | "license": "MIT", 1039 | "dependencies": { 1040 | "path-type": "^4.0.0" 1041 | }, 1042 | "engines": { 1043 | "node": ">=8" 1044 | } 1045 | }, 1046 | "node_modules/eastasianwidth": { 1047 | "version": "0.2.0", 1048 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1049 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1050 | "dev": true, 1051 | "license": "MIT" 1052 | }, 1053 | "node_modules/email-addresses": { 1054 | "version": "5.0.0", 1055 | "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", 1056 | "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", 1057 | "dev": true, 1058 | "license": "MIT" 1059 | }, 1060 | "node_modules/emoji-regex": { 1061 | "version": "9.2.2", 1062 | "dev": true, 1063 | "license": "MIT" 1064 | }, 1065 | "node_modules/esbuild": { 1066 | "version": "0.24.2", 1067 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 1068 | "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 1069 | "dev": true, 1070 | "hasInstallScript": true, 1071 | "license": "MIT", 1072 | "bin": { 1073 | "esbuild": "bin/esbuild" 1074 | }, 1075 | "engines": { 1076 | "node": ">=18" 1077 | }, 1078 | "optionalDependencies": { 1079 | "@esbuild/aix-ppc64": "0.24.2", 1080 | "@esbuild/android-arm": "0.24.2", 1081 | "@esbuild/android-arm64": "0.24.2", 1082 | "@esbuild/android-x64": "0.24.2", 1083 | "@esbuild/darwin-arm64": "0.24.2", 1084 | "@esbuild/darwin-x64": "0.24.2", 1085 | "@esbuild/freebsd-arm64": "0.24.2", 1086 | "@esbuild/freebsd-x64": "0.24.2", 1087 | "@esbuild/linux-arm": "0.24.2", 1088 | "@esbuild/linux-arm64": "0.24.2", 1089 | "@esbuild/linux-ia32": "0.24.2", 1090 | "@esbuild/linux-loong64": "0.24.2", 1091 | "@esbuild/linux-mips64el": "0.24.2", 1092 | "@esbuild/linux-ppc64": "0.24.2", 1093 | "@esbuild/linux-riscv64": "0.24.2", 1094 | "@esbuild/linux-s390x": "0.24.2", 1095 | "@esbuild/linux-x64": "0.24.2", 1096 | "@esbuild/netbsd-arm64": "0.24.2", 1097 | "@esbuild/netbsd-x64": "0.24.2", 1098 | "@esbuild/openbsd-arm64": "0.24.2", 1099 | "@esbuild/openbsd-x64": "0.24.2", 1100 | "@esbuild/sunos-x64": "0.24.2", 1101 | "@esbuild/win32-arm64": "0.24.2", 1102 | "@esbuild/win32-ia32": "0.24.2", 1103 | "@esbuild/win32-x64": "0.24.2" 1104 | } 1105 | }, 1106 | "node_modules/escape-string-regexp": { 1107 | "version": "1.0.5", 1108 | "dev": true, 1109 | "license": "MIT", 1110 | "engines": { 1111 | "node": ">=0.8.0" 1112 | } 1113 | }, 1114 | "node_modules/fast-glob": { 1115 | "version": "3.2.11", 1116 | "dev": true, 1117 | "license": "MIT", 1118 | "dependencies": { 1119 | "@nodelib/fs.stat": "^2.0.2", 1120 | "@nodelib/fs.walk": "^1.2.3", 1121 | "glob-parent": "^5.1.2", 1122 | "merge2": "^1.3.0", 1123 | "micromatch": "^4.0.4" 1124 | }, 1125 | "engines": { 1126 | "node": ">=8.6.0" 1127 | } 1128 | }, 1129 | "node_modules/fastq": { 1130 | "version": "1.13.0", 1131 | "dev": true, 1132 | "license": "ISC", 1133 | "dependencies": { 1134 | "reusify": "^1.0.4" 1135 | } 1136 | }, 1137 | "node_modules/filename-reserved-regex": { 1138 | "version": "2.0.0", 1139 | "dev": true, 1140 | "license": "MIT", 1141 | "engines": { 1142 | "node": ">=4" 1143 | } 1144 | }, 1145 | "node_modules/filenamify": { 1146 | "version": "4.3.0", 1147 | "dev": true, 1148 | "license": "MIT", 1149 | "dependencies": { 1150 | "filename-reserved-regex": "^2.0.0", 1151 | "strip-outer": "^1.0.1", 1152 | "trim-repeated": "^1.0.0" 1153 | }, 1154 | "engines": { 1155 | "node": ">=8" 1156 | }, 1157 | "funding": { 1158 | "url": "https://github.com/sponsors/sindresorhus" 1159 | } 1160 | }, 1161 | "node_modules/fill-range": { 1162 | "version": "7.0.1", 1163 | "dev": true, 1164 | "license": "MIT", 1165 | "dependencies": { 1166 | "to-regex-range": "^5.0.1" 1167 | }, 1168 | "engines": { 1169 | "node": ">=8" 1170 | } 1171 | }, 1172 | "node_modules/find-cache-dir": { 1173 | "version": "3.3.2", 1174 | "dev": true, 1175 | "license": "MIT", 1176 | "dependencies": { 1177 | "commondir": "^1.0.1", 1178 | "make-dir": "^3.0.2", 1179 | "pkg-dir": "^4.1.0" 1180 | }, 1181 | "engines": { 1182 | "node": ">=8" 1183 | }, 1184 | "funding": { 1185 | "url": "https://github.com/avajs/find-cache-dir?sponsor=1" 1186 | } 1187 | }, 1188 | "node_modules/foreground-child": { 1189 | "version": "3.3.0", 1190 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 1191 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 1192 | "dev": true, 1193 | "license": "ISC", 1194 | "dependencies": { 1195 | "cross-spawn": "^7.0.0", 1196 | "signal-exit": "^4.0.1" 1197 | }, 1198 | "engines": { 1199 | "node": ">=14" 1200 | }, 1201 | "funding": { 1202 | "url": "https://github.com/sponsors/isaacs" 1203 | } 1204 | }, 1205 | "node_modules/foreground-child/node_modules/signal-exit": { 1206 | "version": "4.1.0", 1207 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1208 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1209 | "dev": true, 1210 | "license": "ISC", 1211 | "engines": { 1212 | "node": ">=14" 1213 | }, 1214 | "funding": { 1215 | "url": "https://github.com/sponsors/isaacs" 1216 | } 1217 | }, 1218 | "node_modules/fsevents": { 1219 | "version": "2.3.2", 1220 | "dev": true, 1221 | "license": "MIT", 1222 | "optional": true, 1223 | "os": [ 1224 | "darwin" 1225 | ], 1226 | "engines": { 1227 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1228 | } 1229 | }, 1230 | "node_modules/gh-pages": { 1231 | "version": "6.2.0", 1232 | "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.2.0.tgz", 1233 | "integrity": "sha512-HMXJ8th9u5wRXaZCnLcs/d3oVvCHiZkaP5KQExQljYGwJjQbSPyTdHe/Gc1IvYUR/rWiZLxNobIqfoMHKTKjHQ==", 1234 | "dev": true, 1235 | "license": "MIT", 1236 | "dependencies": { 1237 | "async": "^3.2.4", 1238 | "commander": "^11.0.0", 1239 | "email-addresses": "^5.0.0", 1240 | "filenamify": "^4.3.0", 1241 | "find-cache-dir": "^3.3.1", 1242 | "fs-extra": "^11.1.1", 1243 | "globby": "^11.1.0" 1244 | }, 1245 | "bin": { 1246 | "gh-pages": "bin/gh-pages.js", 1247 | "gh-pages-clean": "bin/gh-pages-clean.js" 1248 | }, 1249 | "engines": { 1250 | "node": ">=10" 1251 | } 1252 | }, 1253 | "node_modules/gh-pages/node_modules/commander": { 1254 | "version": "11.1.0", 1255 | "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", 1256 | "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", 1257 | "dev": true, 1258 | "license": "MIT", 1259 | "engines": { 1260 | "node": ">=16" 1261 | } 1262 | }, 1263 | "node_modules/gh-pages/node_modules/fs-extra": { 1264 | "version": "11.2.0", 1265 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", 1266 | "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", 1267 | "dev": true, 1268 | "license": "MIT", 1269 | "dependencies": { 1270 | "graceful-fs": "^4.2.0", 1271 | "jsonfile": "^6.0.1", 1272 | "universalify": "^2.0.0" 1273 | }, 1274 | "engines": { 1275 | "node": ">=14.14" 1276 | } 1277 | }, 1278 | "node_modules/gh-pages/node_modules/jsonfile": { 1279 | "version": "6.1.0", 1280 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 1281 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 1282 | "dev": true, 1283 | "license": "MIT", 1284 | "dependencies": { 1285 | "universalify": "^2.0.0" 1286 | }, 1287 | "optionalDependencies": { 1288 | "graceful-fs": "^4.1.6" 1289 | } 1290 | }, 1291 | "node_modules/gh-pages/node_modules/universalify": { 1292 | "version": "2.0.1", 1293 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 1294 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 1295 | "dev": true, 1296 | "license": "MIT", 1297 | "engines": { 1298 | "node": ">= 10.0.0" 1299 | } 1300 | }, 1301 | "node_modules/glob-parent": { 1302 | "version": "5.1.2", 1303 | "dev": true, 1304 | "license": "ISC", 1305 | "dependencies": { 1306 | "is-glob": "^4.0.1" 1307 | }, 1308 | "engines": { 1309 | "node": ">= 6" 1310 | } 1311 | }, 1312 | "node_modules/globby": { 1313 | "version": "11.1.0", 1314 | "dev": true, 1315 | "license": "MIT", 1316 | "dependencies": { 1317 | "array-union": "^2.1.0", 1318 | "dir-glob": "^3.0.1", 1319 | "fast-glob": "^3.2.9", 1320 | "ignore": "^5.2.0", 1321 | "merge2": "^1.4.1", 1322 | "slash": "^3.0.0" 1323 | }, 1324 | "engines": { 1325 | "node": ">=10" 1326 | }, 1327 | "funding": { 1328 | "url": "https://github.com/sponsors/sindresorhus" 1329 | } 1330 | }, 1331 | "node_modules/graceful-fs": { 1332 | "version": "4.2.8", 1333 | "dev": true, 1334 | "license": "ISC" 1335 | }, 1336 | "node_modules/ignore": { 1337 | "version": "5.2.0", 1338 | "dev": true, 1339 | "license": "MIT", 1340 | "engines": { 1341 | "node": ">= 4" 1342 | } 1343 | }, 1344 | "node_modules/is-extglob": { 1345 | "version": "2.1.1", 1346 | "dev": true, 1347 | "license": "MIT", 1348 | "engines": { 1349 | "node": ">=0.10.0" 1350 | } 1351 | }, 1352 | "node_modules/is-fullwidth-code-point": { 1353 | "version": "3.0.0", 1354 | "dev": true, 1355 | "license": "MIT", 1356 | "engines": { 1357 | "node": ">=8" 1358 | } 1359 | }, 1360 | "node_modules/is-glob": { 1361 | "version": "4.0.3", 1362 | "dev": true, 1363 | "license": "MIT", 1364 | "dependencies": { 1365 | "is-extglob": "^2.1.1" 1366 | }, 1367 | "engines": { 1368 | "node": ">=0.10.0" 1369 | } 1370 | }, 1371 | "node_modules/is-number": { 1372 | "version": "7.0.0", 1373 | "dev": true, 1374 | "license": "MIT", 1375 | "engines": { 1376 | "node": ">=0.12.0" 1377 | } 1378 | }, 1379 | "node_modules/isexe": { 1380 | "version": "2.0.0", 1381 | "dev": true, 1382 | "license": "ISC" 1383 | }, 1384 | "node_modules/jackspeak": { 1385 | "version": "3.4.3", 1386 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1387 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1388 | "dev": true, 1389 | "license": "BlueOak-1.0.0", 1390 | "dependencies": { 1391 | "@isaacs/cliui": "^8.0.2" 1392 | }, 1393 | "funding": { 1394 | "url": "https://github.com/sponsors/isaacs" 1395 | }, 1396 | "optionalDependencies": { 1397 | "@pkgjs/parseargs": "^0.11.0" 1398 | } 1399 | }, 1400 | "node_modules/joycon": { 1401 | "version": "3.1.1", 1402 | "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", 1403 | "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", 1404 | "dev": true, 1405 | "license": "MIT", 1406 | "engines": { 1407 | "node": ">=10" 1408 | } 1409 | }, 1410 | "node_modules/lines-and-columns": { 1411 | "version": "1.2.0", 1412 | "dev": true, 1413 | "license": "MIT", 1414 | "engines": { 1415 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1416 | } 1417 | }, 1418 | "node_modules/load-tsconfig": { 1419 | "version": "0.2.5", 1420 | "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", 1421 | "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", 1422 | "dev": true, 1423 | "license": "MIT", 1424 | "engines": { 1425 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1426 | } 1427 | }, 1428 | "node_modules/lodash.sortby": { 1429 | "version": "4.7.0", 1430 | "dev": true, 1431 | "license": "MIT" 1432 | }, 1433 | "node_modules/make-dir": { 1434 | "version": "3.1.0", 1435 | "dev": true, 1436 | "license": "MIT", 1437 | "dependencies": { 1438 | "semver": "^6.0.0" 1439 | }, 1440 | "engines": { 1441 | "node": ">=8" 1442 | }, 1443 | "funding": { 1444 | "url": "https://github.com/sponsors/sindresorhus" 1445 | } 1446 | }, 1447 | "node_modules/make-dir/node_modules/semver": { 1448 | "version": "6.3.0", 1449 | "dev": true, 1450 | "license": "ISC", 1451 | "bin": { 1452 | "semver": "bin/semver.js" 1453 | } 1454 | }, 1455 | "node_modules/merge2": { 1456 | "version": "1.4.1", 1457 | "dev": true, 1458 | "license": "MIT", 1459 | "engines": { 1460 | "node": ">= 8" 1461 | } 1462 | }, 1463 | "node_modules/micromatch": { 1464 | "version": "4.0.5", 1465 | "dev": true, 1466 | "license": "MIT", 1467 | "dependencies": { 1468 | "braces": "^3.0.2", 1469 | "picomatch": "^2.3.1" 1470 | }, 1471 | "engines": { 1472 | "node": ">=8.6" 1473 | } 1474 | }, 1475 | "node_modules/micromatch/node_modules/picomatch": { 1476 | "version": "2.3.1", 1477 | "dev": true, 1478 | "license": "MIT", 1479 | "engines": { 1480 | "node": ">=8.6" 1481 | }, 1482 | "funding": { 1483 | "url": "https://github.com/sponsors/jonschlinkert" 1484 | } 1485 | }, 1486 | "node_modules/minipass": { 1487 | "version": "7.1.2", 1488 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1489 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1490 | "dev": true, 1491 | "license": "ISC", 1492 | "engines": { 1493 | "node": ">=16 || 14 >=14.17" 1494 | } 1495 | }, 1496 | "node_modules/ms": { 1497 | "version": "2.1.3", 1498 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1499 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1500 | "dev": true, 1501 | "license": "MIT" 1502 | }, 1503 | "node_modules/mz": { 1504 | "version": "2.7.0", 1505 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1506 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1507 | "dev": true, 1508 | "license": "MIT", 1509 | "dependencies": { 1510 | "any-promise": "^1.0.0", 1511 | "object-assign": "^4.0.1", 1512 | "thenify-all": "^1.0.0" 1513 | } 1514 | }, 1515 | "node_modules/nanoid": { 1516 | "version": "3.3.8", 1517 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1518 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1519 | "dev": true, 1520 | "funding": [ 1521 | { 1522 | "type": "github", 1523 | "url": "https://github.com/sponsors/ai" 1524 | } 1525 | ], 1526 | "license": "MIT", 1527 | "optional": true, 1528 | "peer": true, 1529 | "bin": { 1530 | "nanoid": "bin/nanoid.cjs" 1531 | }, 1532 | "engines": { 1533 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1534 | } 1535 | }, 1536 | "node_modules/object-assign": { 1537 | "version": "4.1.1", 1538 | "dev": true, 1539 | "license": "MIT", 1540 | "engines": { 1541 | "node": ">=0.10.0" 1542 | } 1543 | }, 1544 | "node_modules/p-try": { 1545 | "version": "2.2.0", 1546 | "dev": true, 1547 | "license": "MIT", 1548 | "engines": { 1549 | "node": ">=6" 1550 | } 1551 | }, 1552 | "node_modules/package-json-from-dist": { 1553 | "version": "1.0.1", 1554 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 1555 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 1556 | "dev": true, 1557 | "license": "BlueOak-1.0.0" 1558 | }, 1559 | "node_modules/path-exists": { 1560 | "version": "4.0.0", 1561 | "dev": true, 1562 | "license": "MIT", 1563 | "engines": { 1564 | "node": ">=8" 1565 | } 1566 | }, 1567 | "node_modules/path-key": { 1568 | "version": "3.1.1", 1569 | "dev": true, 1570 | "license": "MIT", 1571 | "engines": { 1572 | "node": ">=8" 1573 | } 1574 | }, 1575 | "node_modules/path-scurry": { 1576 | "version": "1.11.1", 1577 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1578 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1579 | "dev": true, 1580 | "license": "BlueOak-1.0.0", 1581 | "dependencies": { 1582 | "lru-cache": "^10.2.0", 1583 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1584 | }, 1585 | "engines": { 1586 | "node": ">=16 || 14 >=14.18" 1587 | }, 1588 | "funding": { 1589 | "url": "https://github.com/sponsors/isaacs" 1590 | } 1591 | }, 1592 | "node_modules/path-scurry/node_modules/lru-cache": { 1593 | "version": "10.4.3", 1594 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1595 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1596 | "dev": true, 1597 | "license": "ISC" 1598 | }, 1599 | "node_modules/path-type": { 1600 | "version": "4.0.0", 1601 | "dev": true, 1602 | "license": "MIT", 1603 | "engines": { 1604 | "node": ">=8" 1605 | } 1606 | }, 1607 | "node_modules/pirates": { 1608 | "version": "4.0.5", 1609 | "dev": true, 1610 | "license": "MIT", 1611 | "engines": { 1612 | "node": ">= 6" 1613 | } 1614 | }, 1615 | "node_modules/pkg-dir": { 1616 | "version": "4.2.0", 1617 | "dev": true, 1618 | "license": "MIT", 1619 | "dependencies": { 1620 | "find-up": "^4.0.0" 1621 | }, 1622 | "engines": { 1623 | "node": ">=8" 1624 | } 1625 | }, 1626 | "node_modules/pkg-dir/node_modules/find-up": { 1627 | "version": "4.1.0", 1628 | "dev": true, 1629 | "license": "MIT", 1630 | "dependencies": { 1631 | "locate-path": "^5.0.0", 1632 | "path-exists": "^4.0.0" 1633 | }, 1634 | "engines": { 1635 | "node": ">=8" 1636 | } 1637 | }, 1638 | "node_modules/pkg-dir/node_modules/locate-path": { 1639 | "version": "5.0.0", 1640 | "dev": true, 1641 | "license": "MIT", 1642 | "dependencies": { 1643 | "p-locate": "^4.1.0" 1644 | }, 1645 | "engines": { 1646 | "node": ">=8" 1647 | } 1648 | }, 1649 | "node_modules/pkg-dir/node_modules/p-limit": { 1650 | "version": "2.3.0", 1651 | "dev": true, 1652 | "license": "MIT", 1653 | "dependencies": { 1654 | "p-try": "^2.0.0" 1655 | }, 1656 | "engines": { 1657 | "node": ">=6" 1658 | }, 1659 | "funding": { 1660 | "url": "https://github.com/sponsors/sindresorhus" 1661 | } 1662 | }, 1663 | "node_modules/pkg-dir/node_modules/p-locate": { 1664 | "version": "4.1.0", 1665 | "dev": true, 1666 | "license": "MIT", 1667 | "dependencies": { 1668 | "p-limit": "^2.2.0" 1669 | }, 1670 | "engines": { 1671 | "node": ">=8" 1672 | } 1673 | }, 1674 | "node_modules/postcss": { 1675 | "version": "8.4.49", 1676 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", 1677 | "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", 1678 | "dev": true, 1679 | "funding": [ 1680 | { 1681 | "type": "opencollective", 1682 | "url": "https://opencollective.com/postcss/" 1683 | }, 1684 | { 1685 | "type": "tidelift", 1686 | "url": "https://tidelift.com/funding/github/npm/postcss" 1687 | }, 1688 | { 1689 | "type": "github", 1690 | "url": "https://github.com/sponsors/ai" 1691 | } 1692 | ], 1693 | "license": "MIT", 1694 | "optional": true, 1695 | "peer": true, 1696 | "dependencies": { 1697 | "nanoid": "^3.3.7", 1698 | "picocolors": "^1.1.1", 1699 | "source-map-js": "^1.2.1" 1700 | }, 1701 | "engines": { 1702 | "node": "^10 || ^12 || >=14" 1703 | } 1704 | }, 1705 | "node_modules/postcss/node_modules/picocolors": { 1706 | "version": "1.1.1", 1707 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1708 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1709 | "dev": true, 1710 | "license": "ISC", 1711 | "optional": true, 1712 | "peer": true 1713 | }, 1714 | "node_modules/prettier": { 1715 | "version": "3.4.2", 1716 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", 1717 | "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", 1718 | "dev": true, 1719 | "license": "MIT", 1720 | "bin": { 1721 | "prettier": "bin/prettier.cjs" 1722 | }, 1723 | "engines": { 1724 | "node": ">=14" 1725 | }, 1726 | "funding": { 1727 | "url": "https://github.com/prettier/prettier?sponsor=1" 1728 | } 1729 | }, 1730 | "node_modules/punycode": { 1731 | "version": "2.1.1", 1732 | "dev": true, 1733 | "license": "MIT", 1734 | "engines": { 1735 | "node": ">=6" 1736 | } 1737 | }, 1738 | "node_modules/queue-microtask": { 1739 | "version": "1.2.3", 1740 | "dev": true, 1741 | "funding": [ 1742 | { 1743 | "type": "github", 1744 | "url": "https://github.com/sponsors/feross" 1745 | }, 1746 | { 1747 | "type": "patreon", 1748 | "url": "https://www.patreon.com/feross" 1749 | }, 1750 | { 1751 | "type": "consulting", 1752 | "url": "https://feross.org/support" 1753 | } 1754 | ], 1755 | "license": "MIT" 1756 | }, 1757 | "node_modules/react": { 1758 | "version": "19.0.0", 1759 | "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", 1760 | "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", 1761 | "dev": true, 1762 | "license": "MIT", 1763 | "engines": { 1764 | "node": ">=0.10.0" 1765 | } 1766 | }, 1767 | "node_modules/react-dom": { 1768 | "version": "19.0.0", 1769 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", 1770 | "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", 1771 | "dev": true, 1772 | "license": "MIT", 1773 | "dependencies": { 1774 | "scheduler": "^0.25.0" 1775 | }, 1776 | "peerDependencies": { 1777 | "react": "^19.0.0" 1778 | } 1779 | }, 1780 | "node_modules/reusify": { 1781 | "version": "1.0.4", 1782 | "dev": true, 1783 | "license": "MIT", 1784 | "engines": { 1785 | "iojs": ">=1.0.0", 1786 | "node": ">=0.10.0" 1787 | } 1788 | }, 1789 | "node_modules/run-parallel": { 1790 | "version": "1.2.0", 1791 | "dev": true, 1792 | "funding": [ 1793 | { 1794 | "type": "github", 1795 | "url": "https://github.com/sponsors/feross" 1796 | }, 1797 | { 1798 | "type": "patreon", 1799 | "url": "https://www.patreon.com/feross" 1800 | }, 1801 | { 1802 | "type": "consulting", 1803 | "url": "https://feross.org/support" 1804 | } 1805 | ], 1806 | "license": "MIT", 1807 | "dependencies": { 1808 | "queue-microtask": "^1.2.2" 1809 | } 1810 | }, 1811 | "node_modules/scheduler": { 1812 | "version": "0.25.0", 1813 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", 1814 | "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", 1815 | "dev": true, 1816 | "license": "MIT" 1817 | }, 1818 | "node_modules/shebang-command": { 1819 | "version": "2.0.0", 1820 | "dev": true, 1821 | "license": "MIT", 1822 | "dependencies": { 1823 | "shebang-regex": "^3.0.0" 1824 | }, 1825 | "engines": { 1826 | "node": ">=8" 1827 | } 1828 | }, 1829 | "node_modules/shebang-regex": { 1830 | "version": "3.0.0", 1831 | "dev": true, 1832 | "license": "MIT", 1833 | "engines": { 1834 | "node": ">=8" 1835 | } 1836 | }, 1837 | "node_modules/slash": { 1838 | "version": "3.0.0", 1839 | "dev": true, 1840 | "license": "MIT", 1841 | "engines": { 1842 | "node": ">=8" 1843 | } 1844 | }, 1845 | "node_modules/source-map-js": { 1846 | "version": "1.2.1", 1847 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1848 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1849 | "dev": true, 1850 | "license": "BSD-3-Clause", 1851 | "optional": true, 1852 | "peer": true, 1853 | "engines": { 1854 | "node": ">=0.10.0" 1855 | } 1856 | }, 1857 | "node_modules/string-width": { 1858 | "version": "4.2.3", 1859 | "dev": true, 1860 | "license": "MIT", 1861 | "dependencies": { 1862 | "emoji-regex": "^8.0.0", 1863 | "is-fullwidth-code-point": "^3.0.0", 1864 | "strip-ansi": "^6.0.1" 1865 | }, 1866 | "engines": { 1867 | "node": ">=8" 1868 | } 1869 | }, 1870 | "node_modules/string-width-cjs": { 1871 | "name": "string-width", 1872 | "version": "4.2.3", 1873 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1874 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1875 | "dev": true, 1876 | "license": "MIT", 1877 | "dependencies": { 1878 | "emoji-regex": "^8.0.0", 1879 | "is-fullwidth-code-point": "^3.0.0", 1880 | "strip-ansi": "^6.0.1" 1881 | }, 1882 | "engines": { 1883 | "node": ">=8" 1884 | } 1885 | }, 1886 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 1887 | "version": "8.0.0", 1888 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1889 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1890 | "dev": true, 1891 | "license": "MIT" 1892 | }, 1893 | "node_modules/string-width/node_modules/emoji-regex": { 1894 | "version": "8.0.0", 1895 | "dev": true, 1896 | "license": "MIT" 1897 | }, 1898 | "node_modules/strip-ansi": { 1899 | "version": "6.0.1", 1900 | "dev": true, 1901 | "license": "MIT", 1902 | "dependencies": { 1903 | "ansi-regex": "^5.0.1" 1904 | }, 1905 | "engines": { 1906 | "node": ">=8" 1907 | } 1908 | }, 1909 | "node_modules/strip-ansi-cjs": { 1910 | "name": "strip-ansi", 1911 | "version": "6.0.1", 1912 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1913 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1914 | "dev": true, 1915 | "license": "MIT", 1916 | "dependencies": { 1917 | "ansi-regex": "^5.0.1" 1918 | }, 1919 | "engines": { 1920 | "node": ">=8" 1921 | } 1922 | }, 1923 | "node_modules/strip-outer": { 1924 | "version": "1.0.1", 1925 | "dev": true, 1926 | "license": "MIT", 1927 | "dependencies": { 1928 | "escape-string-regexp": "^1.0.2" 1929 | }, 1930 | "engines": { 1931 | "node": ">=0.10.0" 1932 | } 1933 | }, 1934 | "node_modules/sucrase": { 1935 | "version": "3.35.0", 1936 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 1937 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 1938 | "dev": true, 1939 | "license": "MIT", 1940 | "dependencies": { 1941 | "@jridgewell/gen-mapping": "^0.3.2", 1942 | "commander": "^4.0.0", 1943 | "glob": "^10.3.10", 1944 | "lines-and-columns": "^1.1.6", 1945 | "mz": "^2.7.0", 1946 | "pirates": "^4.0.1", 1947 | "ts-interface-checker": "^0.1.9" 1948 | }, 1949 | "bin": { 1950 | "sucrase": "bin/sucrase", 1951 | "sucrase-node": "bin/sucrase-node" 1952 | }, 1953 | "engines": { 1954 | "node": ">=16 || 14 >=14.17" 1955 | } 1956 | }, 1957 | "node_modules/sucrase/node_modules/brace-expansion": { 1958 | "version": "2.0.1", 1959 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1960 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1961 | "dev": true, 1962 | "license": "MIT", 1963 | "dependencies": { 1964 | "balanced-match": "^1.0.0" 1965 | } 1966 | }, 1967 | "node_modules/sucrase/node_modules/commander": { 1968 | "version": "4.1.1", 1969 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1970 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 1971 | "dev": true, 1972 | "license": "MIT", 1973 | "engines": { 1974 | "node": ">= 6" 1975 | } 1976 | }, 1977 | "node_modules/sucrase/node_modules/glob": { 1978 | "version": "10.4.5", 1979 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1980 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1981 | "dev": true, 1982 | "license": "ISC", 1983 | "dependencies": { 1984 | "foreground-child": "^3.1.0", 1985 | "jackspeak": "^3.1.2", 1986 | "minimatch": "^9.0.4", 1987 | "minipass": "^7.1.2", 1988 | "package-json-from-dist": "^1.0.0", 1989 | "path-scurry": "^1.11.1" 1990 | }, 1991 | "bin": { 1992 | "glob": "dist/esm/bin.mjs" 1993 | }, 1994 | "funding": { 1995 | "url": "https://github.com/sponsors/isaacs" 1996 | } 1997 | }, 1998 | "node_modules/sucrase/node_modules/minimatch": { 1999 | "version": "9.0.5", 2000 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2001 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2002 | "dev": true, 2003 | "license": "ISC", 2004 | "dependencies": { 2005 | "brace-expansion": "^2.0.1" 2006 | }, 2007 | "engines": { 2008 | "node": ">=16 || 14 >=14.17" 2009 | }, 2010 | "funding": { 2011 | "url": "https://github.com/sponsors/isaacs" 2012 | } 2013 | }, 2014 | "node_modules/thenify": { 2015 | "version": "3.3.1", 2016 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 2017 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 2018 | "dev": true, 2019 | "license": "MIT", 2020 | "dependencies": { 2021 | "any-promise": "^1.0.0" 2022 | } 2023 | }, 2024 | "node_modules/thenify-all": { 2025 | "version": "1.6.0", 2026 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 2027 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 2028 | "dev": true, 2029 | "license": "MIT", 2030 | "dependencies": { 2031 | "thenify": ">= 3.1.0 < 4" 2032 | }, 2033 | "engines": { 2034 | "node": ">=0.8" 2035 | } 2036 | }, 2037 | "node_modules/tinyexec": { 2038 | "version": "0.3.1", 2039 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", 2040 | "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", 2041 | "dev": true, 2042 | "license": "MIT" 2043 | }, 2044 | "node_modules/tinyglobby": { 2045 | "version": "0.2.10", 2046 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", 2047 | "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", 2048 | "dev": true, 2049 | "license": "MIT", 2050 | "dependencies": { 2051 | "fdir": "^6.4.2", 2052 | "picomatch": "^4.0.2" 2053 | }, 2054 | "engines": { 2055 | "node": ">=12.0.0" 2056 | } 2057 | }, 2058 | "node_modules/tinyglobby/node_modules/fdir": { 2059 | "version": "6.4.2", 2060 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", 2061 | "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", 2062 | "dev": true, 2063 | "license": "MIT", 2064 | "peerDependencies": { 2065 | "picomatch": "^3 || ^4" 2066 | }, 2067 | "peerDependenciesMeta": { 2068 | "picomatch": { 2069 | "optional": true 2070 | } 2071 | } 2072 | }, 2073 | "node_modules/tinyglobby/node_modules/picomatch": { 2074 | "version": "4.0.2", 2075 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 2076 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 2077 | "dev": true, 2078 | "license": "MIT", 2079 | "engines": { 2080 | "node": ">=12" 2081 | }, 2082 | "funding": { 2083 | "url": "https://github.com/sponsors/jonschlinkert" 2084 | } 2085 | }, 2086 | "node_modules/to-regex-range": { 2087 | "version": "5.0.1", 2088 | "dev": true, 2089 | "license": "MIT", 2090 | "dependencies": { 2091 | "is-number": "^7.0.0" 2092 | }, 2093 | "engines": { 2094 | "node": ">=8.0" 2095 | } 2096 | }, 2097 | "node_modules/tree-kill": { 2098 | "version": "1.2.2", 2099 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 2100 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 2101 | "dev": true, 2102 | "license": "MIT", 2103 | "bin": { 2104 | "tree-kill": "cli.js" 2105 | } 2106 | }, 2107 | "node_modules/trim-repeated": { 2108 | "version": "1.0.0", 2109 | "dev": true, 2110 | "license": "MIT", 2111 | "dependencies": { 2112 | "escape-string-regexp": "^1.0.2" 2113 | }, 2114 | "engines": { 2115 | "node": ">=0.10.0" 2116 | } 2117 | }, 2118 | "node_modules/ts-interface-checker": { 2119 | "version": "0.1.13", 2120 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 2121 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 2122 | "dev": true, 2123 | "license": "Apache-2.0" 2124 | }, 2125 | "node_modules/tsup": { 2126 | "version": "8.3.5", 2127 | "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.3.5.tgz", 2128 | "integrity": "sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==", 2129 | "dev": true, 2130 | "license": "MIT", 2131 | "dependencies": { 2132 | "bundle-require": "^5.0.0", 2133 | "cac": "^6.7.14", 2134 | "chokidar": "^4.0.1", 2135 | "consola": "^3.2.3", 2136 | "debug": "^4.3.7", 2137 | "esbuild": "^0.24.0", 2138 | "joycon": "^3.1.1", 2139 | "picocolors": "^1.1.1", 2140 | "postcss-load-config": "^6.0.1", 2141 | "resolve-from": "^5.0.0", 2142 | "rollup": "^4.24.0", 2143 | "source-map": "0.8.0-beta.0", 2144 | "sucrase": "^3.35.0", 2145 | "tinyexec": "^0.3.1", 2146 | "tinyglobby": "^0.2.9", 2147 | "tree-kill": "^1.2.2" 2148 | }, 2149 | "bin": { 2150 | "tsup": "dist/cli-default.js", 2151 | "tsup-node": "dist/cli-node.js" 2152 | }, 2153 | "engines": { 2154 | "node": ">=18" 2155 | }, 2156 | "peerDependencies": { 2157 | "@microsoft/api-extractor": "^7.36.0", 2158 | "@swc/core": "^1", 2159 | "postcss": "^8.4.12", 2160 | "typescript": ">=4.5.0" 2161 | }, 2162 | "peerDependenciesMeta": { 2163 | "@microsoft/api-extractor": { 2164 | "optional": true 2165 | }, 2166 | "@swc/core": { 2167 | "optional": true 2168 | }, 2169 | "postcss": { 2170 | "optional": true 2171 | }, 2172 | "typescript": { 2173 | "optional": true 2174 | } 2175 | } 2176 | }, 2177 | "node_modules/tsup/node_modules/@types/estree": { 2178 | "version": "1.0.6", 2179 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 2180 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 2181 | "dev": true, 2182 | "license": "MIT" 2183 | }, 2184 | "node_modules/tsup/node_modules/chokidar": { 2185 | "version": "4.0.3", 2186 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 2187 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 2188 | "dev": true, 2189 | "license": "MIT", 2190 | "dependencies": { 2191 | "readdirp": "^4.0.1" 2192 | }, 2193 | "engines": { 2194 | "node": ">= 14.16.0" 2195 | }, 2196 | "funding": { 2197 | "url": "https://paulmillr.com/funding/" 2198 | } 2199 | }, 2200 | "node_modules/tsup/node_modules/lilconfig": { 2201 | "version": "3.1.3", 2202 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", 2203 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", 2204 | "dev": true, 2205 | "license": "MIT", 2206 | "engines": { 2207 | "node": ">=14" 2208 | }, 2209 | "funding": { 2210 | "url": "https://github.com/sponsors/antonk52" 2211 | } 2212 | }, 2213 | "node_modules/tsup/node_modules/picocolors": { 2214 | "version": "1.1.1", 2215 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2216 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2217 | "dev": true, 2218 | "license": "ISC" 2219 | }, 2220 | "node_modules/tsup/node_modules/postcss-load-config": { 2221 | "version": "6.0.1", 2222 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", 2223 | "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", 2224 | "dev": true, 2225 | "funding": [ 2226 | { 2227 | "type": "opencollective", 2228 | "url": "https://opencollective.com/postcss/" 2229 | }, 2230 | { 2231 | "type": "github", 2232 | "url": "https://github.com/sponsors/ai" 2233 | } 2234 | ], 2235 | "license": "MIT", 2236 | "dependencies": { 2237 | "lilconfig": "^3.1.1" 2238 | }, 2239 | "engines": { 2240 | "node": ">= 18" 2241 | }, 2242 | "peerDependencies": { 2243 | "jiti": ">=1.21.0", 2244 | "postcss": ">=8.0.9", 2245 | "tsx": "^4.8.1", 2246 | "yaml": "^2.4.2" 2247 | }, 2248 | "peerDependenciesMeta": { 2249 | "jiti": { 2250 | "optional": true 2251 | }, 2252 | "postcss": { 2253 | "optional": true 2254 | }, 2255 | "tsx": { 2256 | "optional": true 2257 | }, 2258 | "yaml": { 2259 | "optional": true 2260 | } 2261 | } 2262 | }, 2263 | "node_modules/tsup/node_modules/readdirp": { 2264 | "version": "4.0.2", 2265 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", 2266 | "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", 2267 | "dev": true, 2268 | "license": "MIT", 2269 | "engines": { 2270 | "node": ">= 14.16.0" 2271 | }, 2272 | "funding": { 2273 | "type": "individual", 2274 | "url": "https://paulmillr.com/funding/" 2275 | } 2276 | }, 2277 | "node_modules/tsup/node_modules/resolve-from": { 2278 | "version": "5.0.0", 2279 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2280 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2281 | "dev": true, 2282 | "license": "MIT", 2283 | "engines": { 2284 | "node": ">=8" 2285 | } 2286 | }, 2287 | "node_modules/tsup/node_modules/rollup": { 2288 | "version": "4.29.1", 2289 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", 2290 | "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", 2291 | "dev": true, 2292 | "license": "MIT", 2293 | "dependencies": { 2294 | "@types/estree": "1.0.6" 2295 | }, 2296 | "bin": { 2297 | "rollup": "dist/bin/rollup" 2298 | }, 2299 | "engines": { 2300 | "node": ">=18.0.0", 2301 | "npm": ">=8.0.0" 2302 | }, 2303 | "optionalDependencies": { 2304 | "@rollup/rollup-android-arm-eabi": "4.29.1", 2305 | "@rollup/rollup-android-arm64": "4.29.1", 2306 | "@rollup/rollup-darwin-arm64": "4.29.1", 2307 | "@rollup/rollup-darwin-x64": "4.29.1", 2308 | "@rollup/rollup-freebsd-arm64": "4.29.1", 2309 | "@rollup/rollup-freebsd-x64": "4.29.1", 2310 | "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", 2311 | "@rollup/rollup-linux-arm-musleabihf": "4.29.1", 2312 | "@rollup/rollup-linux-arm64-gnu": "4.29.1", 2313 | "@rollup/rollup-linux-arm64-musl": "4.29.1", 2314 | "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", 2315 | "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", 2316 | "@rollup/rollup-linux-riscv64-gnu": "4.29.1", 2317 | "@rollup/rollup-linux-s390x-gnu": "4.29.1", 2318 | "@rollup/rollup-linux-x64-gnu": "4.29.1", 2319 | "@rollup/rollup-linux-x64-musl": "4.29.1", 2320 | "@rollup/rollup-win32-arm64-msvc": "4.29.1", 2321 | "@rollup/rollup-win32-ia32-msvc": "4.29.1", 2322 | "@rollup/rollup-win32-x64-msvc": "4.29.1", 2323 | "fsevents": "~2.3.2" 2324 | } 2325 | }, 2326 | "node_modules/tsup/node_modules/source-map": { 2327 | "version": "0.8.0-beta.0", 2328 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 2329 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 2330 | "dev": true, 2331 | "license": "BSD-3-Clause", 2332 | "dependencies": { 2333 | "whatwg-url": "^7.0.0" 2334 | }, 2335 | "engines": { 2336 | "node": ">= 8" 2337 | } 2338 | }, 2339 | "node_modules/tsup/node_modules/tr46": { 2340 | "version": "1.0.1", 2341 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 2342 | "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", 2343 | "dev": true, 2344 | "license": "MIT", 2345 | "dependencies": { 2346 | "punycode": "^2.1.0" 2347 | } 2348 | }, 2349 | "node_modules/tsup/node_modules/webidl-conversions": { 2350 | "version": "4.0.2", 2351 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 2352 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 2353 | "dev": true, 2354 | "license": "BSD-2-Clause" 2355 | }, 2356 | "node_modules/tsup/node_modules/whatwg-url": { 2357 | "version": "7.1.0", 2358 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 2359 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 2360 | "dev": true, 2361 | "license": "MIT", 2362 | "dependencies": { 2363 | "lodash.sortby": "^4.7.0", 2364 | "tr46": "^1.0.1", 2365 | "webidl-conversions": "^4.0.2" 2366 | } 2367 | }, 2368 | "node_modules/tsup/node_modules/yaml": { 2369 | "version": "2.6.1", 2370 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", 2371 | "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", 2372 | "dev": true, 2373 | "license": "ISC", 2374 | "optional": true, 2375 | "peer": true, 2376 | "bin": { 2377 | "yaml": "bin.mjs" 2378 | }, 2379 | "engines": { 2380 | "node": ">= 14" 2381 | } 2382 | }, 2383 | "node_modules/typescript": { 2384 | "version": "5.7.2", 2385 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", 2386 | "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", 2387 | "dev": true, 2388 | "license": "Apache-2.0", 2389 | "bin": { 2390 | "tsc": "bin/tsc", 2391 | "tsserver": "bin/tsserver" 2392 | }, 2393 | "engines": { 2394 | "node": ">=14.17" 2395 | } 2396 | }, 2397 | "node_modules/which": { 2398 | "version": "2.0.2", 2399 | "dev": true, 2400 | "license": "ISC", 2401 | "dependencies": { 2402 | "isexe": "^2.0.0" 2403 | }, 2404 | "bin": { 2405 | "node-which": "bin/node-which" 2406 | }, 2407 | "engines": { 2408 | "node": ">= 8" 2409 | } 2410 | }, 2411 | "node_modules/wrap-ansi-cjs": { 2412 | "name": "wrap-ansi", 2413 | "version": "7.0.0", 2414 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2415 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2416 | "dev": true, 2417 | "license": "MIT", 2418 | "dependencies": { 2419 | "ansi-styles": "^4.0.0", 2420 | "string-width": "^4.1.0", 2421 | "strip-ansi": "^6.0.0" 2422 | }, 2423 | "engines": { 2424 | "node": ">=10" 2425 | }, 2426 | "funding": { 2427 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2428 | } 2429 | }, 2430 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 2431 | "version": "4.3.0", 2432 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2433 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2434 | "dev": true, 2435 | "license": "MIT", 2436 | "dependencies": { 2437 | "color-convert": "^2.0.1" 2438 | }, 2439 | "engines": { 2440 | "node": ">=8" 2441 | }, 2442 | "funding": { 2443 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2444 | } 2445 | }, 2446 | "node_modules/wrap-ansi-cjs/node_modules/color-convert": { 2447 | "version": "2.0.1", 2448 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2449 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2450 | "dev": true, 2451 | "license": "MIT", 2452 | "dependencies": { 2453 | "color-name": "~1.1.4" 2454 | }, 2455 | "engines": { 2456 | "node": ">=7.0.0" 2457 | } 2458 | }, 2459 | "node_modules/wrap-ansi-cjs/node_modules/color-name": { 2460 | "version": "1.1.4", 2461 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2462 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2463 | "dev": true, 2464 | "license": "MIT" 2465 | } 2466 | } 2467 | } 2468 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-top-loading-bar", 3 | "version": "3.0.2", 4 | "description": "A very simple, highly customisable react top loader component.", 5 | "author": { 6 | "name": "Klendi Goci", 7 | "email": "klendigocci@gmail.com", 8 | "url": "https://github.com/klendi" 9 | }, 10 | "license": "MIT", 11 | "module": "./dist/index.mjs", 12 | "types": "./dist/index.d.ts", 13 | "exports": { 14 | ".": { 15 | "require": "./dist/index.js", 16 | "import": "./dist/index.mjs", 17 | "types": "./dist/index.d.ts" 18 | } 19 | }, 20 | "source": "src/index.tsx", 21 | "engines": { 22 | "node": ">=14" 23 | }, 24 | "scripts": { 25 | "build": "tsup", 26 | "dev": "tsup --watch", 27 | "prepublishOnly": "npm run build", 28 | "test:build": "npm run build", 29 | "predeploy": "cd example && npm install && npm run build", 30 | "deploy": "gh-pages -d example/dist" 31 | }, 32 | "peerDependencies": { 33 | "react": "^16 || ^17 || ^18 || ^19" 34 | }, 35 | "devDependencies": { 36 | "@types/react": "^19.0.2", 37 | "gh-pages": "^6.2.0", 38 | "prettier": "^3.4.2", 39 | "react": "^19.0.0", 40 | "react-dom": "^19.0.0", 41 | "tsup": "^8.3.5", 42 | "typescript": "^5.7.2" 43 | }, 44 | "files": [ 45 | "dist" 46 | ], 47 | "keywords": [ 48 | "react component", 49 | "react-loading", 50 | "react-loader", 51 | "animated loader", 52 | "react youtube like loader", 53 | "react", 54 | "animated react loader", 55 | "react-animated-loader", 56 | "react-top-loader", 57 | "react", 58 | "reactjs", 59 | "react-component", 60 | "loading-bar", 61 | "youtube-loading-bar", 62 | "loading", 63 | "react-loading-bar", 64 | "redux-loading-bar", 65 | "loading bar", 66 | "smooth", 67 | "animated", 68 | "youtube loading bar", 69 | "top loading bar", 70 | "component" 71 | ], 72 | "homepage": "https://klendi.github.io/react-top-loading-bar", 73 | "repository": { 74 | "type": "git", 75 | "url": "https://github.com/klendi/react-top-loading-bar.git" 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jest": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { 3 | CSSProperties, 4 | useEffect, 5 | useState, 6 | forwardRef, 7 | useImperativeHandle, 8 | useRef, 9 | } from "react"; 10 | import { useInterval } from "./useInterval"; 11 | import { randomInt, randomValue } from "./utils"; 12 | 13 | export interface IProps { 14 | progress?: number; 15 | color?: string; 16 | shadow?: boolean; 17 | background?: string; 18 | height?: number; 19 | onLoaderFinished?: () => void; 20 | className?: string; 21 | containerClassName?: string; 22 | loaderSpeed?: number; 23 | transitionTime?: number; 24 | waitingTime?: number; 25 | style?: CSSProperties; 26 | containerStyle?: CSSProperties; 27 | shadowStyle?: CSSProperties; 28 | } 29 | 30 | export interface LoadingBarRef { 31 | continuousStart: (startingValue?: number, refreshRate?: number) => void; 32 | staticStart: (startingValue?: number) => void; 33 | start: ( 34 | type?: "continuous" | "static", 35 | startingValue?: number, 36 | refreshRate?: number, 37 | ) => void; 38 | complete: () => void; 39 | increase: (value: number) => void; 40 | decrease: (value: number) => void; 41 | getProgress: () => number; 42 | } 43 | 44 | const LoadingBar = forwardRef( 45 | ( 46 | { 47 | progress, 48 | height = 2, 49 | className = "", 50 | color = "red", 51 | background = "transparent", 52 | onLoaderFinished, 53 | transitionTime = 300, 54 | loaderSpeed = 500, 55 | waitingTime = 1000, 56 | shadow = true, 57 | containerStyle = {}, 58 | style = {}, 59 | shadowStyle: shadowStyleProp = {}, 60 | containerClassName = "", 61 | }, 62 | ref, 63 | ) => { 64 | const isMounted = useRef(false); 65 | const [localProgress, localProgressSet] = useState(0); 66 | 67 | const pressedContinuous = useRef<{ 68 | active: boolean; 69 | refreshRate: number; 70 | }>({ active: false, refreshRate: 1000 }); 71 | 72 | const [pressedStaticStart, setStaticStartPressed] = useState<{ 73 | active: boolean; 74 | value: number; 75 | }>({ active: false, value: 60 }); 76 | 77 | const initialLoaderStyle: CSSProperties = { 78 | height: "100%", 79 | background: color, 80 | transition: `all ${loaderSpeed}ms ease`, 81 | width: "0%", 82 | }; 83 | 84 | const loaderContainerStyle: CSSProperties = { 85 | position: "fixed", 86 | top: 0, 87 | left: 0, 88 | height, 89 | background, 90 | zIndex: 99999999999, 91 | width: 100 + "%", 92 | }; 93 | 94 | const initialShadowStyles: CSSProperties = { 95 | boxShadow: `0 0 10px ${color}, 0 0 10px ${color}`, 96 | width: "5%", 97 | opacity: 1, 98 | position: "absolute", 99 | height: "100%", 100 | transition: `all ${loaderSpeed}ms ease`, 101 | transform: "rotate(2deg) translate(0px, -2px)", 102 | left: "-10rem", 103 | }; 104 | 105 | const [loaderStyle, loaderStyleSet] = 106 | useState(initialLoaderStyle); 107 | const [shadowStyle, shadowStyleSet] = 108 | useState(initialShadowStyles); 109 | 110 | useEffect(() => { 111 | isMounted.current = true; 112 | return () => { 113 | isMounted.current = false; 114 | }; 115 | }, []); 116 | 117 | useImperativeHandle(ref, () => ({ 118 | continuousStart(startingValue?: number, refreshRate: number = 1000) { 119 | if (pressedStaticStart.active) return; 120 | if (progress !== undefined) { 121 | console.warn( 122 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 123 | ); 124 | return; 125 | } 126 | 127 | const val = startingValue || randomInt(10, 20); 128 | 129 | pressedContinuous.current = { 130 | active: true, 131 | refreshRate, 132 | }; 133 | 134 | localProgressSet(val); 135 | checkIfFull(val); 136 | }, 137 | staticStart(startingValue?: number) { 138 | if (pressedContinuous.current.active) return; 139 | if (progress !== undefined) { 140 | console.warn( 141 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 142 | ); 143 | return; 144 | } 145 | 146 | const val = startingValue || randomInt(30, 60); 147 | 148 | setStaticStartPressed({ 149 | active: true, 150 | value: val, 151 | }); 152 | localProgressSet(val); 153 | checkIfFull(val); 154 | }, 155 | start(type = "continuous", startingValue?: number, refreshRate?: number) { 156 | if (progress !== undefined) { 157 | console.warn( 158 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 159 | ); 160 | return; 161 | } 162 | 163 | if (type === "continuous") { 164 | pressedContinuous.current = { 165 | active: true, 166 | refreshRate: refreshRate || 1000, 167 | }; 168 | } else { 169 | setStaticStartPressed({ 170 | active: true, 171 | value: startingValue || 20, 172 | }); 173 | } 174 | 175 | const continuousRandom = randomInt(10, 20); 176 | const staticRandom = randomInt(30, 70); 177 | 178 | const val = 179 | startingValue || 180 | (type === "continuous" ? continuousRandom : staticRandom); 181 | 182 | localProgressSet(val); 183 | checkIfFull(val); 184 | }, 185 | complete() { 186 | if (progress !== undefined) { 187 | console.warn( 188 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 189 | ); 190 | return; 191 | } 192 | localProgressSet(100); 193 | checkIfFull(100); 194 | }, 195 | increase(value: number) { 196 | if (progress !== undefined) { 197 | console.warn( 198 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 199 | ); 200 | return; 201 | } 202 | localProgressSet((prev) => { 203 | const newVal = prev + value; 204 | checkIfFull(newVal); 205 | return newVal; 206 | }); 207 | }, 208 | decrease(value: number) { 209 | if (progress !== undefined) { 210 | console.warn( 211 | "react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!", 212 | ); 213 | return; 214 | } 215 | localProgressSet((prev) => { 216 | const newVal = prev - value; 217 | checkIfFull(newVal); 218 | return newVal; 219 | }); 220 | }, 221 | getProgress() { 222 | return localProgress; 223 | }, 224 | })); 225 | 226 | useEffect(() => { 227 | loaderStyleSet({ 228 | ...loaderStyle, 229 | background: color, 230 | }); 231 | 232 | shadowStyleSet({ 233 | ...shadowStyle, 234 | boxShadow: `0 0 10px ${color}, 0 0 5px ${color}`, 235 | }); 236 | }, [color]); 237 | 238 | useEffect(() => { 239 | if (ref) { 240 | if (ref && progress !== undefined) { 241 | console.warn( 242 | 'react-top-loading-bar: You can\'t use both controlling by props and ref methods to control the bar! Please use only props or only ref methods! Ref methods will override props if "ref" property is available.', 243 | ); 244 | return; 245 | } 246 | checkIfFull(localProgress); 247 | } else { 248 | if (progress) checkIfFull(progress); 249 | } 250 | }, [progress]); 251 | 252 | const checkIfFull = (_progress: number) => { 253 | if (_progress >= 100) { 254 | // now it should wait a little 255 | loaderStyleSet({ 256 | ...loaderStyle, 257 | width: "100%", 258 | }); 259 | if (shadow) { 260 | shadowStyleSet({ 261 | ...shadowStyle, 262 | left: _progress - 10 + "%", 263 | }); 264 | } 265 | 266 | setTimeout(() => { 267 | if (!isMounted.current) { 268 | return; 269 | } 270 | // now it can fade out 271 | loaderStyleSet({ 272 | ...loaderStyle, 273 | opacity: 0, 274 | width: "100%", 275 | transition: `all ${transitionTime}ms ease-out`, 276 | color: color, 277 | }); 278 | 279 | setTimeout(() => { 280 | if (!isMounted.current) { 281 | return; 282 | } 283 | // here we wait for it to fade 284 | if (pressedContinuous.current.active) { 285 | // if we have continuous loader just ending, we kill it and reset it 286 | 287 | pressedContinuous.current = { 288 | ...pressedContinuous.current, 289 | active: false, 290 | }; 291 | 292 | localProgressSet(0); 293 | checkIfFull(0); 294 | } 295 | 296 | if (pressedStaticStart.active) { 297 | setStaticStartPressed({ 298 | ...pressedStaticStart, 299 | active: false, 300 | }); 301 | localProgressSet(0); 302 | checkIfFull(0); 303 | } 304 | 305 | if (onLoaderFinished) onLoaderFinished(); 306 | localProgressSet(0); 307 | checkIfFull(0); 308 | }, transitionTime); 309 | }, waitingTime); 310 | } else { 311 | loaderStyleSet((_loaderStyle) => { 312 | return { 313 | ..._loaderStyle, 314 | width: _progress + "%", 315 | opacity: 1, 316 | transition: _progress > 0 ? `all ${loaderSpeed}ms ease` : "", 317 | }; 318 | }); 319 | 320 | if (shadow) { 321 | shadowStyleSet({ 322 | ...shadowStyle, 323 | left: _progress - 5.5 + "%", 324 | transition: _progress > 0 ? `all ${loaderSpeed}ms ease` : "", 325 | }); 326 | } 327 | } 328 | }; 329 | 330 | useInterval( 331 | () => { 332 | const minValue = Math.min(10, (100 - localProgress) / 5); 333 | const maxValue = Math.min(20, (100 - localProgress) / 3); 334 | 335 | const random = randomValue(minValue, maxValue); 336 | 337 | if (localProgress + random < 95) { 338 | localProgressSet(localProgress + random); 339 | checkIfFull(localProgress + random); 340 | } 341 | }, 342 | pressedContinuous.current.active 343 | ? pressedContinuous.current.refreshRate 344 | : null, 345 | ); 346 | 347 | return ( 348 |
352 |
353 | {shadow ? ( 354 |
355 | ) : null} 356 |
357 |
358 | ); 359 | }, 360 | ); 361 | 362 | interface IContext 363 | extends Omit { 364 | setProps: (props: IProps) => void; 365 | } 366 | 367 | const LoaderContext = React.createContext(undefined as any); 368 | 369 | export const LoadingBarContainer = ({ 370 | children, 371 | props, 372 | }: { 373 | children: React.ReactNode; 374 | props?: Omit; 375 | }) => { 376 | const [hookProps, setProps] = useState(props || {}); 377 | 378 | const ref = useRef(null); 379 | 380 | const start = (type: "continuous" | "static" = "continuous") => 381 | ref.current?.start(type); 382 | 383 | return ( 384 | ref.current?.complete(), 388 | getProgress: () => ref.current?.getProgress() || 0, 389 | increase: (value: number) => ref.current?.increase(value), 390 | decrease: (value: number) => ref.current?.decrease(value), 391 | setProps: (props: IProps) => setProps({ ...props, ...hookProps }), 392 | }} 393 | > 394 | 395 | {children} 396 | 397 | ); 398 | }; 399 | 400 | export const useLoadingBar = (props?: IProps): Omit => { 401 | const context = React.useContext(LoaderContext); 402 | 403 | if (!context) { 404 | throw new Error( 405 | "[react-top-loading-bar] useLoadingBar hook must be used within a LoadingBarContainer. Try wrapping parent component in .", 406 | ); 407 | } 408 | 409 | useEffect(() => { 410 | if (props) context.setProps(props); 411 | }, []); 412 | 413 | return { 414 | start: context.start, 415 | complete: context.complete, 416 | increase: context.increase, 417 | decrease: context.decrease, 418 | getProgress: context.getProgress, 419 | }; 420 | }; 421 | 422 | export { LoadingBar as default }; 423 | -------------------------------------------------------------------------------- /src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Default CSS definition for typescript, 3 | * will be overridden with file-specific definitions by rollup 4 | */ 5 | declare module '*.css' { 6 | const content: { [className: string]: string }; 7 | export default content; 8 | } 9 | 10 | interface SvgrComponent extends React.StatelessComponent> {} 11 | 12 | declare module '*.svg' { 13 | const svgUrl: string; 14 | const svgComponent: SvgrComponent; 15 | export default svgUrl; 16 | export { svgComponent as ReactComponent } 17 | } 18 | -------------------------------------------------------------------------------- /src/useInterval.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | /** keep typescript happy */ 4 | const noop = () => {}; 5 | 6 | export function useInterval( 7 | callback: () => void, 8 | delay: number | null | false, 9 | immediate?: boolean, 10 | ) { 11 | const savedCallback = useRef(noop); 12 | 13 | // Remember the latest callback. 14 | useEffect(() => { 15 | savedCallback.current = callback; 16 | }); 17 | 18 | // Execute callback if immediate is set. 19 | useEffect(() => { 20 | if (!immediate) return; 21 | if (delay === null || delay === false) return; 22 | savedCallback.current(); 23 | }, [immediate]); 24 | 25 | // Set up the interval. 26 | useEffect(() => { 27 | if (delay === null || delay === false) return undefined; 28 | const tick = () => savedCallback.current(); 29 | const id = setInterval(tick, delay); 30 | return () => clearInterval(id); 31 | }, [delay]); 32 | } 33 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | export function randomValue(min: number, max: number): number { 2 | return (Math.random() * (max - min + 1) + min) 3 | } 4 | 5 | export function randomInt(min: number, max: number): number { 6 | return Math.floor(randomValue(min, max)) 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "module": "esnext", 5 | "lib": ["dom", "esnext"], 6 | "moduleResolution": "node", 7 | "jsx": "react", 8 | "sourceMap": true, 9 | "declaration": true, 10 | "esModuleInterop": true, 11 | "noImplicitReturns": true, 12 | "noImplicitThis": true, 13 | "noImplicitAny": true, 14 | "strictNullChecks": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "allowSyntheticDefaultImports": true 18 | }, 19 | "include": ["src"], 20 | "exclude": ["node_modules", "dist", "example"] 21 | } 22 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig({ 4 | entry: ["src/index.tsx"], 5 | format: ["cjs", "esm"], 6 | dts: true, 7 | splitting: false, 8 | sourcemap: true, 9 | clean: true, 10 | treeshake: true, 11 | external: ["react"], 12 | minify: true, 13 | globalName: "ReactTopLoadingBar", 14 | }); 15 | --------------------------------------------------------------------------------