├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .postcssrc.json ├── .prettierignore ├── .prettierrc ├── .stylelintrc ├── .travis.yml ├── .whitesource ├── CHANGELOG.md ├── LICENSE ├── README.md ├── _.config.yml ├── __tests__ ├── __snapshots__ │ └── index.tsx.snap └── index.tsx ├── _config.yml ├── demo ├── .babelrc ├── index.html ├── index.tsx ├── mocks.tsx ├── package.json └── yarn.lock ├── eslint.config.mjs ├── package.json ├── renovate.json ├── screenshot.png ├── src ├── index.css └── index.tsx ├── tsconfig-lint.json ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_style = tab 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [{*.json,*.yml}] 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ## GITATTRIBUTES FOR WEB PROJECTS 2 | # 3 | # These settings are for any web project. 4 | # 5 | # Details per file setting: 6 | # text These files should be normalized (i.e. convert CRLF to LF). 7 | # binary These files are binary and should be left untouched. 8 | # 9 | # Note that binary is a macro for -text -diff. 10 | ###################################################################### 11 | 12 | ## AUTO-DETECT 13 | ## Handle line endings automatically for files detected as 14 | ## text and leave all files detected as binary untouched. 15 | ## This will handle all files NOT defined below. 16 | * text=auto 17 | 18 | ## SOURCE CODE 19 | *.bat text eol=crlf 20 | *.coffee text 21 | *.css text 22 | *.htm text 23 | *.html text 24 | *.inc text 25 | *.ini text 26 | *.js text 27 | *.json text 28 | *.jsx text 29 | *.less text 30 | *.od text 31 | *.onlydata text 32 | *.php text 33 | *.pl text 34 | *.py text 35 | *.rb text 36 | *.sass text 37 | *.scm text 38 | *.scss text 39 | *.sh text eol=lf 40 | *.sql text 41 | *.styl text 42 | *.tag text 43 | *.ts text 44 | *.tsx text 45 | *.xml text 46 | *.xhtml text 47 | 48 | ## DOCKER 49 | *.dockerignore text 50 | Dockerfile text 51 | 52 | ## DOCUMENTATION 53 | *.markdown text 54 | *.md text 55 | *.mdwn text 56 | *.mdown text 57 | *.mkd text 58 | *.mkdn text 59 | *.mdtxt text 60 | *.mdtext text 61 | *.txt text 62 | AUTHORS text 63 | CHANGELOG text 64 | CHANGES text 65 | CONTRIBUTING text 66 | COPYING text 67 | copyright text 68 | *COPYRIGHT* text 69 | INSTALL text 70 | license text 71 | LICENSE text 72 | NEWS text 73 | readme text 74 | *README* text 75 | TODO text 76 | 77 | ## TEMPLATES 78 | *.dot text 79 | *.ejs text 80 | *.haml text 81 | *.handlebars text 82 | *.hbs text 83 | *.hbt text 84 | *.jade text 85 | *.latte text 86 | *.mustache text 87 | *.njk text 88 | *.phtml text 89 | *.tmpl text 90 | *.tpl text 91 | *.twig text 92 | 93 | ## LINTERS 94 | .csslintrc text 95 | .eslintrc text 96 | .htmlhintrc text 97 | .jscsrc text 98 | .jshintrc text 99 | .jshintignore text 100 | .stylelintrc text 101 | 102 | ## CONFIGS 103 | *.bowerrc text 104 | *.cnf text 105 | *.conf text 106 | *.config text 107 | .browserslistrc text 108 | .editorconfig text 109 | .gitattributes text 110 | .gitconfig text 111 | .htaccess text 112 | *.npmignore text 113 | *.yaml text 114 | *.yml text 115 | browserslist text 116 | Makefile text 117 | makefile text 118 | 119 | ## HEROKU 120 | Procfile text 121 | .slugignore text 122 | 123 | ## GRAPHICS 124 | *.ai binary 125 | *.bmp binary 126 | *.eps binary 127 | *.gif binary 128 | *.ico binary 129 | *.jng binary 130 | *.jp2 binary 131 | *.jpg binary 132 | *.jpeg binary 133 | *.jpx binary 134 | *.jxr binary 135 | *.pdf binary 136 | *.png binary 137 | *.psb binary 138 | *.psd binary 139 | *.svg text 140 | *.svgz binary 141 | *.tif binary 142 | *.tiff binary 143 | *.wbmp binary 144 | *.webp binary 145 | 146 | ## AUDIO 147 | *.kar binary 148 | *.m4a binary 149 | *.mid binary 150 | *.midi binary 151 | *.mp3 binary 152 | *.ogg binary 153 | *.ra binary 154 | 155 | ## VIDEO 156 | *.3gpp binary 157 | *.3gp binary 158 | *.as binary 159 | *.asf binary 160 | *.asx binary 161 | *.fla binary 162 | *.flv binary 163 | *.m4v binary 164 | *.mng binary 165 | *.mov binary 166 | *.mp4 binary 167 | *.mpeg binary 168 | *.mpg binary 169 | *.ogv binary 170 | *.swc binary 171 | *.swf binary 172 | *.webm binary 173 | 174 | ## ARCHIVES 175 | *.7z binary 176 | *.gz binary 177 | *.jar binary 178 | *.rar binary 179 | *.tar binary 180 | *.zip binary 181 | 182 | ## FONTS 183 | *.ttf binary 184 | *.eot binary 185 | *.otf binary 186 | *.woff binary 187 | *.woff2 binary 188 | 189 | ## EXECUTABLES 190 | *.exe binary 191 | *.pyc binary 192 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [scriptex] 4 | patreon: atanas 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: scriptex 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: scriptex 10 | issuehunt: scriptex 11 | otechie: # Replace with a single Otechie username 12 | custom: ['paypal.me/scriptex', 'revolut.me/scriptex'] 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | strategy: 10 | matrix: 11 | node-version: [lts/*] 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Use Node.js ${{ matrix.node-version }} 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - run: yarn 20 | - run: yarn prod 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules/ 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | .parcel-cache 21 | dist 22 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | # Config folders and files 21 | .github 22 | _config.yml 23 | _.config.yml 24 | .editorconfig 25 | .eslintignore 26 | .eslintrc 27 | .gitattributes 28 | .gitignore 29 | .nvmrc 30 | .postcssrc.json 31 | .prettierignore 32 | .prettierrc 33 | .stylelintignore 34 | .stylelintrc 35 | .travis.yml 36 | .whitesource 37 | renovate.json 38 | tsconfig.json 39 | tsconfig-lint.json 40 | tslint.json 41 | yarn.lock 42 | 43 | CHANGELOG.md 44 | __tests__ 45 | !dist 46 | demo 47 | screenshot.png 48 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | lts/* 2 | -------------------------------------------------------------------------------- /.postcssrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": { 3 | "autoprefixer": {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 4, 4 | "useTabs": true, 5 | "semi": true, 6 | "singleQuote": true, 7 | "jsxSingleQuote": false, 8 | "trailingComma": "none", 9 | "bracketSpacing": true, 10 | "jsxBracketSameLine": false, 11 | "arrowParens": "avoid", 12 | "proseWrap": "preserve" 13 | } 14 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-recommended"] 3 | } 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - 'lts/*' 5 | install: 6 | - yarn 7 | script: 8 | - yarn prod 9 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "success" 7 | }, 8 | "issueSettings": { 9 | "minSeverityLevel": "LOW" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Changelog 2 | 3 | All notable changes to this project will be documented in this file. Dates are displayed in UTC. 4 | 5 | Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). 6 | 7 | #### [1.5.0](https://github.com/scriptex/react-round-carousel/compare/1.4.0...1.5.0) 8 | 9 | > 14 August 2023 10 | 11 | - Update dependency eslint-config-prettier to v9 [`#217`](https://github.com/scriptex/react-round-carousel/pull/217) 12 | - Bump word-wrap from 1.2.3 to 1.2.4 [`#213`](https://github.com/scriptex/react-round-carousel/pull/213) 13 | - Update typescript-eslint monorepo to v6 [`#211`](https://github.com/scriptex/react-round-carousel/pull/211) 14 | - Bump semver from 6.3.0 to 6.3.1 [`#212`](https://github.com/scriptex/react-round-carousel/pull/212) 15 | - Update dependency stylelint-config-recommended to v13 [`#208`](https://github.com/scriptex/react-round-carousel/pull/208) 16 | - Update dependency release-it to v16 [`#209`](https://github.com/scriptex/react-round-carousel/pull/209) 17 | - Bump tough-cookie from 4.1.2 to 4.1.3 [`#210`](https://github.com/scriptex/react-round-carousel/pull/210) 18 | - Update the codebase [`2c24401`](https://github.com/scriptex/react-round-carousel/commit/2c24401913922f429a8fc794db165ba5236ba524) 19 | - Update dependency parcel to v2.9.0 [`90ff167`](https://github.com/scriptex/react-round-carousel/commit/90ff1674cc7ff1f364287b81b63ec535a578d7b6) 20 | - Update dependency parcel to v2.9.3 [`d1dac71`](https://github.com/scriptex/react-round-carousel/commit/d1dac71aecc0020a1183990e1ab0b8f10aa95d59) 21 | 22 | #### [1.4.0](https://github.com/scriptex/react-round-carousel/compare/1.3.1...1.4.0) 23 | 24 | > 19 May 2023 25 | 26 | - Аdd forwardRef and imperativе handle to handle inner methods [`#203`](https://github.com/scriptex/react-round-carousel/pull/203) 27 | - Bump vm2 from 3.9.17 to 3.9.18 [`#204`](https://github.com/scriptex/react-round-carousel/pull/204) 28 | - Bump yaml from 2.1.3 to 2.2.2 [`#202`](https://github.com/scriptex/react-round-carousel/pull/202) 29 | - Bump vm2 from 3.9.16 to 3.9.17 [`#200`](https://github.com/scriptex/react-round-carousel/pull/200) 30 | - Update dependency stylelint-config-recommended to v12 [`#198`](https://github.com/scriptex/react-round-carousel/pull/198) 31 | - Bump vm2 from 3.9.15 to 3.9.16 [`#197`](https://github.com/scriptex/react-round-carousel/pull/197) 32 | - Bump vm2 from 3.9.11 to 3.9.15 [`#196`](https://github.com/scriptex/react-round-carousel/pull/196) 33 | - Update dependency stylelint-config-recommended to v11 [`#189`](https://github.com/scriptex/react-round-carousel/pull/189) 34 | - Update dependency typescript to v5 [`#190`](https://github.com/scriptex/react-round-carousel/pull/190) 35 | - Bump cacheable-request from 10.2.3 to 10.2.7 [`#184`](https://github.com/scriptex/react-round-carousel/pull/184) 36 | - Update dependency stylelint to v15 [`#182`](https://github.com/scriptex/react-round-carousel/pull/182) 37 | - Update dependency stylelint-config-recommended to v10 [`#183`](https://github.com/scriptex/react-round-carousel/pull/183) 38 | - Bump http-cache-semantics from 4.1.0 to 4.1.1 [`#181`](https://github.com/scriptex/react-round-carousel/pull/181) 39 | - Bump json5 from 2.2.1 to 2.2.2 in /demo [`#177`](https://github.com/scriptex/react-round-carousel/pull/177) 40 | - Bump json5 from 2.2.1 to 2.2.2 [`#176`](https://github.com/scriptex/react-round-carousel/pull/176) 41 | - Update typescript-eslint monorepo to v5.46.0 [`#175`](https://github.com/scriptex/react-round-carousel/pull/175) 42 | - Update the demo [`16ab61e`](https://github.com/scriptex/react-round-carousel/commit/16ab61ede049ac74008b800524d67bd92048bdb8) 43 | - Update dependency parcel to v2.8.3 [`078c18a`](https://github.com/scriptex/react-round-carousel/commit/078c18a2fbc5b94dd55a2b42423d1439e653b1fd) 44 | - Update dependency parcel to v2.8.1 [`d2ad646`](https://github.com/scriptex/react-round-carousel/commit/d2ad64638c67dd04b02619a3d0de53db697a9783) 45 | 46 | #### [1.3.1](https://github.com/scriptex/react-round-carousel/compare/1.3.0...1.3.1) 47 | 48 | > 23 November 2022 49 | 50 | - Update dependency eslint to v8.26.0 [`#168`](https://github.com/scriptex/react-round-carousel/pull/168) 51 | - Update dependency touchsweep to v2 [`#167`](https://github.com/scriptex/react-round-carousel/pull/167) 52 | - Update dependency parcel to v2.8.0 [`bafcb90`](https://github.com/scriptex/react-round-carousel/commit/bafcb90fa81281b8a808b357621584f423f073f6) 53 | - Update dependencies [`30e9878`](https://github.com/scriptex/react-round-carousel/commit/30e98783f605e2958f19fb6e943923921235ffc2) 54 | - Update jest monorepo to v29.2.0 [`1173cb4`](https://github.com/scriptex/react-round-carousel/commit/1173cb40f49e92633d9451144ae0c043a35d73ef) 55 | 56 | #### [1.3.0](https://github.com/scriptex/react-round-carousel/compare/1.2.0...1.3.0) 57 | 58 | > 21 September 2022 59 | 60 | - Update metadata [`#164`](https://github.com/scriptex/react-round-carousel/pull/164) 61 | - Update dependency ts-jest to v29 [`#158`](https://github.com/scriptex/react-round-carousel/pull/158) 62 | - Update dependency @types/jest to v29 [`#153`](https://github.com/scriptex/react-round-carousel/pull/153) 63 | - Update dependency jest to v29 [`#152`](https://github.com/scriptex/react-round-carousel/pull/152) 64 | - Update dependency stylelint-config-recommended to v9 [`#148`](https://github.com/scriptex/react-round-carousel/pull/148) 65 | - Update demo [`095ffc4`](https://github.com/scriptex/react-round-carousel/commit/095ffc456be56e06eb2e55b44e1c40df5259f524) 66 | - Update jest monorepo to v29.0.2 [`501dae2`](https://github.com/scriptex/react-round-carousel/commit/501dae243dae06a907241f9ae5de550f5ea7732d) 67 | - Update jest monorepo to v29.0.3 [`7c99a7f`](https://github.com/scriptex/react-round-carousel/commit/7c99a7ff9508ae31e76dc552cbc73bd3f8344c7a) 68 | 69 | #### [1.2.0](https://github.com/scriptex/react-round-carousel/compare/1.1.0...1.2.0) 70 | 71 | > 8 August 2022 72 | 73 | - Bump terser from 5.12.0 to 5.14.2 in /demo [`#147`](https://github.com/scriptex/react-round-carousel/pull/147) 74 | - Bump parse-url from 6.0.0 to 6.0.2 [`#145`](https://github.com/scriptex/react-round-carousel/pull/145) 75 | - Update dependency postcss-cli to v10 [`#144`](https://github.com/scriptex/react-round-carousel/pull/144) 76 | - Update dependency stylelint-config-recommended to v8 [`#141`](https://github.com/scriptex/react-round-carousel/pull/141) 77 | - Update dependency @types/jest to v28 [`#140`](https://github.com/scriptex/react-round-carousel/pull/140) 78 | - Update dependency eslint-plugin-react to v7.30.0 [`#138`](https://github.com/scriptex/react-round-carousel/pull/138) 79 | - Update dependency ts-jest to v28 [`#136`](https://github.com/scriptex/react-round-carousel/pull/136) 80 | - Update dependency release-it to v15 [`#134`](https://github.com/scriptex/react-round-carousel/pull/134) 81 | - Update dependency jest to v28 [`#130`](https://github.com/scriptex/react-round-carousel/pull/130) 82 | - Update dependency @types/react-test-renderer to v18 [`#128`](https://github.com/scriptex/react-round-carousel/pull/128) 83 | - Update dependency @types/react-dom to v18 [`#125`](https://github.com/scriptex/react-round-carousel/pull/125) 84 | - Update dependency @types/react to v18 [`#124`](https://github.com/scriptex/react-round-carousel/pull/124) 85 | - Update react monorepo to v18 [`#123`](https://github.com/scriptex/react-round-carousel/pull/123) 86 | - Bump minimist from 1.2.5 to 1.2.6 in /demo [`#119`](https://github.com/scriptex/react-round-carousel/pull/119) 87 | - Bump minimist from 1.2.5 to 1.2.6 [`#120`](https://github.com/scriptex/react-round-carousel/pull/120) 88 | - Update packages [`2d520ee`](https://github.com/scriptex/react-round-carousel/commit/2d520ee65a5f8101df6f88f9d08e9327dc86bbad) 89 | - Update dependency parcel to v2.4.0 [`c217412`](https://github.com/scriptex/react-round-carousel/commit/c217412ac1a80c786176abf2e861d113dbf81d87) 90 | - Update dependency parcel to v2.6.1 [`2315b72`](https://github.com/scriptex/react-round-carousel/commit/2315b726754c6e3ea39c781725cb383800c6bb8a) 91 | 92 | #### [1.1.0](https://github.com/scriptex/react-round-carousel/compare/1.0.0...1.1.0) 93 | 94 | > 2 March 2022 95 | 96 | - Upgrade packages [`#114`](https://github.com/scriptex/react-round-carousel/pull/114) 97 | - Update actions/checkout action to v3 [`#113`](https://github.com/scriptex/react-round-carousel/pull/113) 98 | - Update actions/setup-node action to v3 [`#111`](https://github.com/scriptex/react-round-carousel/pull/111) 99 | - Update dependency stylelint-config-recommended to v7 [`#109`](https://github.com/scriptex/react-round-carousel/pull/109) 100 | - Update dependency release-it to v14.12.4 [`#107`](https://github.com/scriptex/react-round-carousel/pull/107) 101 | - Bump node-fetch from 2.6.1 to 2.6.7 [`#108`](https://github.com/scriptex/react-round-carousel/pull/108) 102 | - Update dependency stylelint to v14.3.0 [`#106`](https://github.com/scriptex/react-round-carousel/pull/106) 103 | - Bump nanoid from 3.1.30 to 3.2.0 [`#105`](https://github.com/scriptex/react-round-carousel/pull/105) 104 | - Update typescript-eslint monorepo to v5.10.0 [`#104`](https://github.com/scriptex/react-round-carousel/pull/104) 105 | - Bump follow-redirects from 1.14.1 to 1.14.7 in /demo [`#102`](https://github.com/scriptex/react-round-carousel/pull/102) 106 | - Update dependency eslint to v8.7.0 [`#103`](https://github.com/scriptex/react-round-carousel/pull/103) 107 | - Update dependency parcel to v2.2.0 [`#100`](https://github.com/scriptex/react-round-carousel/pull/100) 108 | - Update dependency release-it to v14.12.1 [`#99`](https://github.com/scriptex/react-round-carousel/pull/99) 109 | - Update dependency parcel to v2.1.0 [`#96`](https://github.com/scriptex/react-round-carousel/pull/96) 110 | - Update typescript-eslint monorepo to v5.9.0 [`#94`](https://github.com/scriptex/react-round-carousel/pull/94) 111 | - Update dependency eslint to v8.6.0 [`#93`](https://github.com/scriptex/react-round-carousel/pull/93) 112 | - Update dependency @types/jest to v27.4.0 [`#92`](https://github.com/scriptex/react-round-carousel/pull/92) 113 | - Update dependency eslint-plugin-react to v7.28.0 [`#91`](https://github.com/scriptex/react-round-carousel/pull/91) 114 | - Update dependency stylelint to v14.2.0 [`#90`](https://github.com/scriptex/react-round-carousel/pull/90) 115 | - Update typescript-eslint monorepo to v5.8.0 [`#89`](https://github.com/scriptex/react-round-carousel/pull/89) 116 | - Update dependency eslint to v8.5.0 [`#88`](https://github.com/scriptex/react-round-carousel/pull/88) 117 | - Update typescript-eslint monorepo to v5.7.0 [`#87`](https://github.com/scriptex/react-round-carousel/pull/87) 118 | - Update typescript-eslint monorepo to v5.6.0 [`#86`](https://github.com/scriptex/react-round-carousel/pull/86) 119 | - Update dependency ts-jest to v27.1.0 [`#85`](https://github.com/scriptex/react-round-carousel/pull/85) 120 | - Update dependency eslint to v8.4.0 [`#84`](https://github.com/scriptex/react-round-carousel/pull/84) 121 | - Update typescript-eslint monorepo to v5.5.0 [`#83`](https://github.com/scriptex/react-round-carousel/pull/83) 122 | - Update dependency jest to v27.4.0 [`#82`](https://github.com/scriptex/react-round-carousel/pull/82) 123 | - Update dependency eslint to v8.3.0 [`#81`](https://github.com/scriptex/react-round-carousel/pull/81) 124 | - Update dependency typescript to v4.5.2 [`#80`](https://github.com/scriptex/react-round-carousel/pull/80) 125 | - Update typescript-eslint monorepo to v5.4.0 [`#78`](https://github.com/scriptex/react-round-carousel/pull/78) 126 | - Update dependency stylelint to v14.1.0 [`#77`](https://github.com/scriptex/react-round-carousel/pull/77) 127 | - Update dependency eslint-plugin-react to v7.27.0 [`#76`](https://github.com/scriptex/react-round-carousel/pull/76) 128 | - Update dependency eslint-plugin-react-hooks to v4.3.0 [`#75`](https://github.com/scriptex/react-round-carousel/pull/75) 129 | - Update dependency eslint to v8.2.0 [`#74`](https://github.com/scriptex/react-round-carousel/pull/74) 130 | - Update typescript-eslint monorepo to v5.3.0 [`#72`](https://github.com/scriptex/react-round-carousel/pull/72) 131 | - Update typescript-eslint monorepo to v5.2.0 [`#71`](https://github.com/scriptex/react-round-carousel/pull/71) 132 | - Update dependency eslint to v8.1.0 [`#70`](https://github.com/scriptex/react-round-carousel/pull/70) 133 | - Update dependency stylelint to v14 [`#68`](https://github.com/scriptex/react-round-carousel/pull/68) 134 | - Update dependency stylelint-config-recommended to v6 [`#69`](https://github.com/scriptex/react-round-carousel/pull/69) 135 | - Update dependency ts-jest to v27.0.7 [`#67`](https://github.com/scriptex/react-round-carousel/pull/67) 136 | - Update typescript-eslint monorepo to v5.1.0 [`#66`](https://github.com/scriptex/react-round-carousel/pull/66) 137 | - Update dependency jest to v27.3.0 [`#65`](https://github.com/scriptex/react-round-carousel/pull/65) 138 | - Update typescript-eslint monorepo to v5 [`#64`](https://github.com/scriptex/react-round-carousel/pull/64) 139 | - Update dependency eslint to v8 [`#63`](https://github.com/scriptex/react-round-carousel/pull/63) 140 | - Update typescript-eslint monorepo to v4.33.0 [`#62`](https://github.com/scriptex/react-round-carousel/pull/62) 141 | - Update typescript-eslint monorepo to v4.32.0 [`#60`](https://github.com/scriptex/react-round-carousel/pull/60) 142 | - Update dependency @types/jest to v27.0.2 [`#57`](https://github.com/scriptex/react-round-carousel/pull/57) 143 | - Bump nth-check from 2.0.0 to 2.0.1 in /demo [`#58`](https://github.com/scriptex/react-round-carousel/pull/58) 144 | - Bump tmpl from 1.0.4 to 1.0.5 [`#59`](https://github.com/scriptex/react-round-carousel/pull/59) 145 | - Update dependency eslint-plugin-react to v7.26.0 [`#56`](https://github.com/scriptex/react-round-carousel/pull/56) 146 | - Update dependency jest to v27.2.0 [`#52`](https://github.com/scriptex/react-round-carousel/pull/52) 147 | - Update typescript-eslint monorepo to v4.31.0 [`#51`](https://github.com/scriptex/react-round-carousel/pull/51) 148 | - Update typescript-eslint monorepo to v4.30.0 [`#50`](https://github.com/scriptex/react-round-carousel/pull/50) 149 | - Update dependency eslint-plugin-react to v7.25.0 [`#48`](https://github.com/scriptex/react-round-carousel/pull/48) 150 | - Update dependency jest to v27.1.0 [`#47`](https://github.com/scriptex/react-round-carousel/pull/47) 151 | - Update dependency typescript to v4.4.2 [`#46`](https://github.com/scriptex/react-round-carousel/pull/46) 152 | - Update dependency @types/jest to v27 [`#44`](https://github.com/scriptex/react-round-carousel/pull/44) 153 | - Update dependency release-it to v14.11.0 [`#43`](https://github.com/scriptex/react-round-carousel/pull/43) 154 | - Update typescript-eslint monorepo to v4.29.0 [`#42`](https://github.com/scriptex/react-round-carousel/pull/42) 155 | - Update dependency eslint to v7.32.0 [`#41`](https://github.com/scriptex/react-round-carousel/pull/41) 156 | - Update dependency eslint to v7.31.0 [`#40`](https://github.com/scriptex/react-round-carousel/pull/40) 157 | - Update dependency eslint to v7.30.0 [`#38`](https://github.com/scriptex/react-round-carousel/pull/38) 158 | - Update the demo to use random images [`#37`](https://github.com/scriptex/react-round-carousel/pull/37) 159 | - Upgrade packages [`#36`](https://github.com/scriptex/react-round-carousel/pull/36) 160 | - Update typescript-eslint monorepo to v4.28.0 [`#34`](https://github.com/scriptex/react-round-carousel/pull/34) 161 | - Update dependency release-it to v14.10.0 [`#33`](https://github.com/scriptex/react-round-carousel/pull/33) 162 | - Update dependency eslint to v7.29.0 [`#32`](https://github.com/scriptex/react-round-carousel/pull/32) 163 | - Bump postcss from 7.0.35 to 7.0.36 [`#31`](https://github.com/scriptex/react-round-carousel/pull/31) 164 | - Update typescript-eslint monorepo to v4.27.0 [`#30`](https://github.com/scriptex/react-round-carousel/pull/30) 165 | - Update dependency release-it to v14.9.0 [`#29`](https://github.com/scriptex/react-round-carousel/pull/29) 166 | - Bump trim-newlines from 3.0.0 to 3.0.1 [`#26`](https://github.com/scriptex/react-round-carousel/pull/26) 167 | - Update dependency release-it to v14.8.0 [`#25`](https://github.com/scriptex/react-round-carousel/pull/25) 168 | - Update dependency eslint to v7.28.0 [`#24`](https://github.com/scriptex/react-round-carousel/pull/24) 169 | - Update dependency @types/react-dom to v17.0.6 [`#22`](https://github.com/scriptex/react-round-carousel/pull/22) 170 | - Bump ws from 6.2.1 to 6.2.2 in /demo [`#23`](https://github.com/scriptex/react-round-carousel/pull/23) 171 | - Update typescript-eslint monorepo to v4.26.0 [`#21`](https://github.com/scriptex/react-round-carousel/pull/21) 172 | - Update dependency eslint-plugin-react to v7.24.0 [`#17`](https://github.com/scriptex/react-round-carousel/pull/17) 173 | - Bump ws from 7.4.5 to 7.4.6 [`#16`](https://github.com/scriptex/react-round-carousel/pull/16) 174 | - Update dependency typescript to v4.3.2 [`#14`](https://github.com/scriptex/react-round-carousel/pull/14) 175 | - Update dependency ts-jest to v27 [`#12`](https://github.com/scriptex/react-round-carousel/pull/12) 176 | - Update dependency jest to v27 [`#11`](https://github.com/scriptex/react-round-carousel/pull/11) 177 | - Update dependency release-it to v14.7.0 [`#9`](https://github.com/scriptex/react-round-carousel/pull/9) 178 | - Update typescript-eslint monorepo to v4.25.0 [`#10`](https://github.com/scriptex/react-round-carousel/pull/10) 179 | - Update dependency eslint to v7.27.0 [`#8`](https://github.com/scriptex/react-round-carousel/pull/8) 180 | - Update dependency parcel to v2.0.0-nightly.672 [`#7`](https://github.com/scriptex/react-round-carousel/pull/7) 181 | - Update typescript-eslint monorepo to v4.24.0 [`#6`](https://github.com/scriptex/react-round-carousel/pull/6) 182 | - [ImgBot] Optimize images [`#2`](https://github.com/scriptex/react-round-carousel/pull/2) 183 | - Add demo build [`3852592`](https://github.com/scriptex/react-round-carousel/commit/385259280fd6bebc5c6ffe79bbdf3494d0f8f128) 184 | - Update dependency parcel to v2.0.0-rc.0 [`9d44e51`](https://github.com/scriptex/react-round-carousel/commit/9d44e51f3c3b222f3a5dc967ea3e8e67d1f8060d) 185 | - Update dependency parcel to v2.3.0 [`41f49e7`](https://github.com/scriptex/react-round-carousel/commit/41f49e7ba6d82aad26bdadf886d03b0b88681fc8) 186 | 187 | #### 1.0.0 188 | 189 | > 17 May 2021 190 | 191 | - Add the initial version [`5e360fe`](https://github.com/scriptex/react-round-carousel/commit/5e360fe0228b7c49f021177f1e390798f31e6266) 192 | - Initial commit [`dde6180`](https://github.com/scriptex/react-round-carousel/commit/dde618053aab17a34ea4d56cebc2d8535a629794) 193 | - Release 1.0.0 [`681a218`](https://github.com/scriptex/react-round-carousel/commit/681a21816ddb211dabee71bc25f2c6c00f6f22be) 194 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-Present Atanas Atanasov 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 | [![Github Build](https://github.com/scriptex/react-round-carousel/workflows/Build/badge.svg)](https://github.com/scriptex/react-round-carousel/actions?query=workflow%3ABuild) 2 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/34d3d75710534dc6a38c3584a1dcd068)](https://www.codacy.com/gh/scriptex/react-round-carousel/dashboard?utm_source=github.com&utm_medium=referral&utm_content=scriptex/react-round-carousel&utm_campaign=Badge_Grade) 3 | [![Codebeat Badge](https://codebeat.co/badges/d765a4c8-2c0e-44f2-89c3-fa364fdc14e6)](https://codebeat.co/projects/github-com-scriptex-react-round-carousel-master) 4 | [![CodeFactor Badge](https://www.codefactor.io/repository/github/scriptex/react-round-carousel/badge)](https://www.codefactor.io/repository/github/scriptex/react-round-carousel) 5 | [![DeepScan grade](https://deepscan.io/api/teams/3574/projects/5257/branches/40799/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=3574&pid=5257&bid=40799) 6 | [![Analytics](https://ga-beacon-361907.ew.r.appspot.com/UA-83446952-1/github.com/scriptex/react-round-carousel/README.md?pixel)](https://github.com/scriptex/react-round-carousel/) 7 | 8 | # React Round Carousel 9 | 10 | > An infinitely scrollable 3D carousel component for React 11 | 12 | [![Demo](https://raw.githubusercontent.com/scriptex/react-round-carousel/master/screenshot.png)](https://react-round-carousel.atanas.info/) 13 | 14 | This is an infinitely scrollable, touch enabled, 3D, image carousel component which can be used in a React application. 15 | 16 | ## Visitor stats 17 | 18 | ![GitHub stars](https://img.shields.io/github/stars/scriptex/react-round-carousel?style=social) 19 | ![GitHub forks](https://img.shields.io/github/forks/scriptex/react-round-carousel?style=social) 20 | ![GitHub watchers](https://img.shields.io/github/watchers/scriptex/react-round-carousel?style=social) 21 | ![GitHub followers](https://img.shields.io/github/followers/scriptex?style=social) 22 | 23 | ## Code stats 24 | 25 | ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/scriptex/react-round-carousel) 26 | ![GitHub repo size](https://img.shields.io/github/repo-size/scriptex/react-round-carousel?style=plastic) 27 | ![GitHub language count](https://img.shields.io/github/languages/count/scriptex/react-round-carousel?style=plastic) 28 | ![GitHub top language](https://img.shields.io/github/languages/top/scriptex/react-round-carousel?style=plastic) 29 | ![GitHub last commit](https://img.shields.io/github/last-commit/scriptex/react-round-carousel?style=plastic) 30 | 31 | ## Install 32 | 33 | First install the component using your preferred package manager: 34 | 35 | ```sh 36 | npm i react-round-carousel 37 | 38 | # or 39 | 40 | yarn add react-round-carousel 41 | ``` 42 | 43 | ## Usage 44 | 45 | Then import the component in your application. Here is an example: 46 | 47 | The slides (or items) should have the following shape: 48 | 49 | | Prop | Type | Required | Description | Example | 50 | | --------- | ----------- | -------- | ------------------------------------------------- | -------------------------------------------- | 51 | | `alt` | `string` | false | Alternative text for the slide image | 'This is an example alt text' | 52 | | `image` | `string` | true | Path or URL to an image | 'https://source.unsplash.com/random/210x210' | 53 | | `content` | `ReactNode` | true | A ReactNode representing the content of the slide | `
Slide Title
` | 54 | 55 | ```typescript 56 | import * as React from 'react'; 57 | import { createRoot } from 'react-dom/client'; 58 | 59 | import { Carousel, CarouselRef, CarouselItem } from 'react-round-carousel'; 60 | 61 | // Create an array of Carousel Items 62 | const items: CarouselItem[] = Array(20) 63 | .fill('') 64 | .map((_: string, index: number) => ({ 65 | alt: 'A random photo', 66 | image: `https://picsum.photos/${210 + index}`, 67 | content: ( 68 |
69 | Round Carousel 70 | Slide number {index + 1} 71 |
72 | ) 73 | })); 74 | 75 | const App = () => { 76 | const carouselRef = React.createRef(); 77 | 78 | return ; 79 | }; 80 | 81 | createRoot(document.getElementById('root')!).render(); 82 | ``` 83 | 84 | ## Options 85 | 86 | The component accepts the following configuration options as props: 87 | 88 | | Prop | Type | Required | Description | Default | 89 | | ------------------- | ------------------ | -------- | ----------------------------------------------- | ---------- | 90 | | `classNamePrefix` | `string` | false | CSS classname prefix for the Carousel component | 'carousel' | 91 | | `items` | `CarouselItem` | true | An array of `CarouselItem`s | [] | 92 | | `itemWidth` | `number` | false | Width of each of the carousel items | 210 | 93 | | `nextButtonContent` | `string/ReactNode` | false | Content of the next button | 'Next' | 94 | | `prevButtonContent` | `string/ReactNode` | false | Content of the previous button | 'Previous' | 95 | | `showControls` | `boolean` | false | Show/hide navigation controls | true | 96 | | `slideOnClick` | `boolean` | false | Slide to the clicked slide | false | 97 | 98 | ## Controlling from outside 99 | 100 | It is possible to control the component from outside - for example from a parent component. In order to do so, a React Ref should be used. The `current` reference contains several methods, including: 101 | 102 | - `next` - Slides the carousel to the next slide. 103 | - `prev` - Slides the carousel to the previous slide. 104 | - `getItems` - Returns an array with all items passed to the carousel. 105 | - `getSelectedIndex` - Returns the active slide index of the carousel. 106 | - `setSelectedIndex` - Sets the active slide index of the carousel and slides to this slide. 107 | 108 | The [demo](https://react-round-carousel.atanas.info) shows how to use these methods. 109 | 110 | ## Style 111 | 112 | In order to achieve the layout shown in the [demo](https://react-round-carousel.atanas.info), you should add styles to your markup. 113 | 114 | There is an already existing stylesheet which can be found in the `src` folder and can be imported: 115 | 116 | - in your JS entrypoint 117 | 118 | ```javascript 119 | import 'react-round-carousel/src/index.css'; 120 | ``` 121 | 122 | - in your CSS entrypoint 123 | 124 | ```css 125 | @import 'react-round-carousel/src/index.css'; 126 | ``` 127 | 128 | If you don't want to use the default stylesheet, you can create and use your own. 129 | 130 | ## LICENSE 131 | 132 | MIT 133 | 134 | --- 135 | 136 |
137 | Connect with me: 138 |
139 | 140 |
141 | 142 |
143 | 144 | 145 | 146 |   147 | 148 | 149 | 150 |   151 | 152 | 153 | 154 |   155 | 156 | 157 | 158 |   159 | 160 | 161 | 162 |   163 | 164 | 165 | 166 |   167 | 168 | 169 | 170 |   171 | 172 | 173 | 174 |   175 | 176 | 177 | 178 |   179 | 180 | 181 | 182 |   183 | 184 | 185 | 186 |   187 | 188 | 189 | 190 |
191 | 192 | --- 193 | 194 |
195 | Support and sponsor my work: 196 |
197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 |
226 | -------------------------------------------------------------------------------- /_.config.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - jekyll-relative-links 3 | relative_links: 4 | enabled: true 5 | collections: true 6 | include: 7 | - CONTRIBUTING.md 8 | - README.md 9 | - LICENSE.md 10 | - COPYING.md 11 | - CODE_OF_CONDUCT.md 12 | - CONTRIBUTING.md 13 | - ISSUE_TEMPLATE.md 14 | - PULL_REQUEST_TEMPLATE.md 15 | -------------------------------------------------------------------------------- /__tests__/__snapshots__/index.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Accordion should render properly with ref prop 1`] = ` 4 | 5 | 56 | 70 | 71 | `; 72 | 73 | exports[`Accordion should render properly with ref prop 2`] = ` 74 | 75 | 126 | 140 | 141 | `; 142 | 143 | exports[`Accordion should render properly with ref prop 3`] = ` 144 | 145 | 196 | 210 | 211 | `; 212 | 213 | exports[`Accordion should render properly without ref props 1`] = ` 214 | 215 | 266 | 280 | 281 | `; 282 | -------------------------------------------------------------------------------- /__tests__/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { createRef } from 'react'; 2 | import { render, waitFor, fireEvent } from '@testing-library/react'; 3 | 4 | import { items } from '../demo/mocks'; 5 | import { Carousel, CarouselRef } from '../src'; 6 | 7 | const carouselItems = items 8 | .map(item => ({ 9 | ...item, 10 | image: item.image.replace(/\?.*$/gm, '') 11 | })) 12 | .slice(0, 2); 13 | 14 | describe('Accordion', () => { 15 | it('should render properly with ref prop', async () => { 16 | const ref = createRef(); 17 | const { asFragment, getAllByRole } = await waitFor(() => 18 | render() 19 | ); 20 | 21 | expect(asFragment()).toMatchSnapshot(); 22 | 23 | const carousel = ref.current; 24 | 25 | expect(carousel).toBeDefined(); 26 | expect(carousel?.next).toBeInstanceOf(Function); 27 | expect(carousel?.prev).toBeInstanceOf(Function); 28 | expect(carousel?.getItems).toBeInstanceOf(Function); 29 | expect(carousel?.getSelectedIndex).toBeInstanceOf(Function); 30 | expect(carousel?.setSelectedIndex).toBeInstanceOf(Function); 31 | 32 | expect(carousel?.getItems().length).toEqual(2); 33 | expect(carousel?.getSelectedIndex()).toEqual(0); 34 | 35 | const [prev, next] = getAllByRole('button'); 36 | 37 | await waitFor(() => fireEvent(next, new Event('click'))); 38 | 39 | expect(asFragment()).toMatchSnapshot(); 40 | 41 | await waitFor(() => fireEvent(prev, new Event('click'))); 42 | 43 | expect(asFragment()).toMatchSnapshot(); 44 | }); 45 | 46 | it('should render properly without ref props', () => { 47 | const { asFragment } = render(); 48 | 49 | expect(asFragment()).toMatchSnapshot(); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | -------------------------------------------------------------------------------- /demo/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "@babel/plugin-transform-react-jsx", 5 | { 6 | "runtime": "automatic" 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | React Round Carousel Demo 9 | 10 | 11 | 12 | 16 | 17 | 22 | 23 | 142 | 143 | 158 | 159 | 160 |
161 |

React Round Carousel

162 | 163 |

Install

164 | 165 |

166 | npm install react-round-carousel
167 | 
168 | # or
169 | 
170 | yarn add react-round-carousel
171 | 			
172 | 173 |

Use the module

174 | 175 |

176 | import * as React from 'react';
177 | import { createRoot } from 'react-dom/client';
178 | 
179 | import { Carousel, CarouselItem, CarouselRef } from 'react-round-carousel';
180 | 
181 | // Create an array of Carousel Items
182 | const items: CarouselItem[] = Array(20)
183 | 	.fill('')
184 | 	.map((_: string, index: number) => ({
185 | 	alt: 'A random photo',
186 | 	image: `https://picsum.photos/${210 + index}`,
187 | 	content: (
188 | 		<div>
189 | 		<strong>Round Carousel</strong>
190 | 		<span>Slide number {index + 1}</span>
191 | 		</div>
192 | 	)
193 | 	}));
194 | 
195 | const App = () => {
196 | 	const carouselRef = React.createRef<CarouselRef>();
197 | 
198 | 	return (
199 | 		<Carousel
200 | 			ref={carouselRef}
201 | 			items={items}
202 | 			slideOnClick
203 | 		/>;
204 | 	)
205 | }
206 | 
207 | createRoot(document.getElementById('root')!).render(<App />);
208 |
209 | 210 |
211 | 212 | 213 | 214 | 215 | -------------------------------------------------------------------------------- /demo/index.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from 'react-dom/client'; 2 | import React, { useState, createRef, DetailedHTMLProps } from 'react'; 3 | 4 | import 'scriptex-socials'; 5 | 6 | import { items } from './mocks'; 7 | import { Carousel, CarouselRef } from '../dist/index'; 8 | 9 | const getRandomValue = () => { 10 | const crypto = window.crypto || window.msCrypto; 11 | const array = new Uint8Array(1); 12 | 13 | return crypto.getRandomValues(array)[0] / Math.pow(2, 8); 14 | }; 15 | 16 | declare global { 17 | namespace React { 18 | namespace JSX { 19 | interface IntrinsicElements { 20 | 'social-links': DetailedHTMLProps< 21 | HTMLAttributes, 22 | HTMLElement 23 | >; 24 | } 25 | } 26 | } 27 | 28 | interface Window { 29 | msCrypto: typeof Crypto; 30 | } 31 | } 32 | 33 | const App = () => { 34 | const carouselRef = createRef(); 35 | const [result, setResult] = useState(''); 36 | 37 | return ( 38 | <> 39 | 45 | See code on Github 46 | 47 | 48 |
49 |

External controls

50 | 51 | {result && ( 52 |
 53 | 						{result}
 54 | 					
55 | )} 56 | 57 |
    58 |
  • 59 | 72 |
  • 73 | 74 |
  • 75 | 84 |
  • 85 | 86 |
  • 87 | 96 |
  • 97 | 98 |
  • 99 | 110 |
  • 111 | 112 |
  • 113 | 126 |
  • 127 |
128 |
129 | 130 |
131 |

132 | Carousel with React.ref, external controls and slideOnClick 133 |

134 |
135 | 136 | 137 | 138 |
139 |

140 | Carousel without React.ref, external controls and 141 | slideOnClick 142 |

143 |
144 | 145 | 146 | 147 | 148 | 149 | ); 150 | }; 151 | 152 | createRoot(document.getElementById('root')!).render(); 153 | -------------------------------------------------------------------------------- /demo/mocks.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { CarouselItem } from '../src'; 3 | 4 | const AMOUNT = 20; 5 | 6 | export const items: CarouselItem[] = Array(AMOUNT) 7 | .fill('') 8 | .map((_: string, index: number) => ({ 9 | alt: 'A random Unsplash photo', 10 | image: `https://picsum.photos/${210 + index}`, 11 | content: ( 12 |
13 | Round Carousel 14 | Slide number {index + 1} 15 |
16 | ) 17 | })); 18 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-round-carousel-example", 3 | "version": "1.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "clean": "rm -rf dist", 7 | "start": "yarn clean && parcel index.html", 8 | "build": "yarn clean && parcel build index.html --no-source-maps" 9 | }, 10 | "alias": { 11 | "process": false, 12 | "react": "../node_modules/react", 13 | "react-dom": "../node_modules/react-dom" 14 | }, 15 | "dependencies": { 16 | "scriptex-socials": "1.8.0" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "7.27.4", 20 | "@babel/plugin-transform-react-jsx": "7.27.1", 21 | "@types/react": "19.1.6", 22 | "@types/react-dom": "19.1.5", 23 | "parcel": "2.15.2", 24 | "process": "0.11.10", 25 | "typescript": "5.8.3" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /demo/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.3.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" 8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/code-frame@^7.27.1": 14 | version "7.27.1" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" 16 | integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== 17 | dependencies: 18 | "@babel/helper-validator-identifier" "^7.27.1" 19 | js-tokens "^4.0.0" 20 | picocolors "^1.1.1" 21 | 22 | "@babel/compat-data@^7.27.2": 23 | version "7.27.3" 24 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.3.tgz#cc49c2ac222d69b889bf34c795f537c0c6311111" 25 | integrity sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw== 26 | 27 | "@babel/core@7.27.4": 28 | version "7.27.4" 29 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" 30 | integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== 31 | dependencies: 32 | "@ampproject/remapping" "^2.2.0" 33 | "@babel/code-frame" "^7.27.1" 34 | "@babel/generator" "^7.27.3" 35 | "@babel/helper-compilation-targets" "^7.27.2" 36 | "@babel/helper-module-transforms" "^7.27.3" 37 | "@babel/helpers" "^7.27.4" 38 | "@babel/parser" "^7.27.4" 39 | "@babel/template" "^7.27.2" 40 | "@babel/traverse" "^7.27.4" 41 | "@babel/types" "^7.27.3" 42 | convert-source-map "^2.0.0" 43 | debug "^4.1.0" 44 | gensync "^1.0.0-beta.2" 45 | json5 "^2.2.3" 46 | semver "^6.3.1" 47 | 48 | "@babel/generator@^7.27.1": 49 | version "7.27.1" 50 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" 51 | integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== 52 | dependencies: 53 | "@babel/parser" "^7.27.1" 54 | "@babel/types" "^7.27.1" 55 | "@jridgewell/gen-mapping" "^0.3.5" 56 | "@jridgewell/trace-mapping" "^0.3.25" 57 | jsesc "^3.0.2" 58 | 59 | "@babel/generator@^7.27.3": 60 | version "7.27.3" 61 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.3.tgz#ef1c0f7cfe3b5fc8cbb9f6cc69f93441a68edefc" 62 | integrity sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q== 63 | dependencies: 64 | "@babel/parser" "^7.27.3" 65 | "@babel/types" "^7.27.3" 66 | "@jridgewell/gen-mapping" "^0.3.5" 67 | "@jridgewell/trace-mapping" "^0.3.25" 68 | jsesc "^3.0.2" 69 | 70 | "@babel/helper-annotate-as-pure@^7.27.1": 71 | version "7.27.1" 72 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" 73 | integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== 74 | dependencies: 75 | "@babel/types" "^7.27.1" 76 | 77 | "@babel/helper-compilation-targets@^7.27.2": 78 | version "7.27.2" 79 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" 80 | integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== 81 | dependencies: 82 | "@babel/compat-data" "^7.27.2" 83 | "@babel/helper-validator-option" "^7.27.1" 84 | browserslist "^4.24.0" 85 | lru-cache "^5.1.1" 86 | semver "^6.3.1" 87 | 88 | "@babel/helper-module-imports@^7.27.1": 89 | version "7.27.1" 90 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" 91 | integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== 92 | dependencies: 93 | "@babel/traverse" "^7.27.1" 94 | "@babel/types" "^7.27.1" 95 | 96 | "@babel/helper-module-transforms@^7.27.3": 97 | version "7.27.3" 98 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" 99 | integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== 100 | dependencies: 101 | "@babel/helper-module-imports" "^7.27.1" 102 | "@babel/helper-validator-identifier" "^7.27.1" 103 | "@babel/traverse" "^7.27.3" 104 | 105 | "@babel/helper-plugin-utils@^7.27.1": 106 | version "7.27.1" 107 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" 108 | integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== 109 | 110 | "@babel/helper-string-parser@^7.27.1": 111 | version "7.27.1" 112 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" 113 | integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== 114 | 115 | "@babel/helper-validator-identifier@^7.27.1": 116 | version "7.27.1" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" 118 | integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== 119 | 120 | "@babel/helper-validator-option@^7.27.1": 121 | version "7.27.1" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" 123 | integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== 124 | 125 | "@babel/helpers@^7.27.4": 126 | version "7.27.4" 127 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.4.tgz#c79050c6a0e41e095bfc96d469c85431e9ed7fe7" 128 | integrity sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ== 129 | dependencies: 130 | "@babel/template" "^7.27.2" 131 | "@babel/types" "^7.27.3" 132 | 133 | "@babel/parser@^7.27.1": 134 | version "7.27.1" 135 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.1.tgz#c55d5bed74449d1223701f1869b9ee345cc94cc9" 136 | integrity sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ== 137 | dependencies: 138 | "@babel/types" "^7.27.1" 139 | 140 | "@babel/parser@^7.27.2", "@babel/parser@^7.27.3": 141 | version "7.27.3" 142 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.3.tgz#1b7533f0d908ad2ac545c4d05cbe2fb6dc8cfaaf" 143 | integrity sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw== 144 | dependencies: 145 | "@babel/types" "^7.27.3" 146 | 147 | "@babel/parser@^7.27.4": 148 | version "7.27.4" 149 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.4.tgz#f92e89e4f51847be05427285836fc88341c956df" 150 | integrity sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g== 151 | dependencies: 152 | "@babel/types" "^7.27.3" 153 | 154 | "@babel/plugin-syntax-jsx@^7.27.1": 155 | version "7.27.1" 156 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" 157 | integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== 158 | dependencies: 159 | "@babel/helper-plugin-utils" "^7.27.1" 160 | 161 | "@babel/plugin-transform-react-jsx@7.27.1": 162 | version "7.27.1" 163 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0" 164 | integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== 165 | dependencies: 166 | "@babel/helper-annotate-as-pure" "^7.27.1" 167 | "@babel/helper-module-imports" "^7.27.1" 168 | "@babel/helper-plugin-utils" "^7.27.1" 169 | "@babel/plugin-syntax-jsx" "^7.27.1" 170 | "@babel/types" "^7.27.1" 171 | 172 | "@babel/template@^7.27.1": 173 | version "7.27.1" 174 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.1.tgz#b9e4f55c17a92312774dfbdde1b3c01c547bbae2" 175 | integrity sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg== 176 | dependencies: 177 | "@babel/code-frame" "^7.27.1" 178 | "@babel/parser" "^7.27.1" 179 | "@babel/types" "^7.27.1" 180 | 181 | "@babel/template@^7.27.2": 182 | version "7.27.2" 183 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" 184 | integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== 185 | dependencies: 186 | "@babel/code-frame" "^7.27.1" 187 | "@babel/parser" "^7.27.2" 188 | "@babel/types" "^7.27.1" 189 | 190 | "@babel/traverse@^7.27.1": 191 | version "7.27.1" 192 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" 193 | integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== 194 | dependencies: 195 | "@babel/code-frame" "^7.27.1" 196 | "@babel/generator" "^7.27.1" 197 | "@babel/parser" "^7.27.1" 198 | "@babel/template" "^7.27.1" 199 | "@babel/types" "^7.27.1" 200 | debug "^4.3.1" 201 | globals "^11.1.0" 202 | 203 | "@babel/traverse@^7.27.3": 204 | version "7.27.3" 205 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.3.tgz#8b62a6c2d10f9d921ba7339c90074708509cffae" 206 | integrity sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ== 207 | dependencies: 208 | "@babel/code-frame" "^7.27.1" 209 | "@babel/generator" "^7.27.3" 210 | "@babel/parser" "^7.27.3" 211 | "@babel/template" "^7.27.2" 212 | "@babel/types" "^7.27.3" 213 | debug "^4.3.1" 214 | globals "^11.1.0" 215 | 216 | "@babel/traverse@^7.27.4": 217 | version "7.27.4" 218 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" 219 | integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== 220 | dependencies: 221 | "@babel/code-frame" "^7.27.1" 222 | "@babel/generator" "^7.27.3" 223 | "@babel/parser" "^7.27.4" 224 | "@babel/template" "^7.27.2" 225 | "@babel/types" "^7.27.3" 226 | debug "^4.3.1" 227 | globals "^11.1.0" 228 | 229 | "@babel/types@^7.27.1": 230 | version "7.27.1" 231 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" 232 | integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== 233 | dependencies: 234 | "@babel/helper-string-parser" "^7.27.1" 235 | "@babel/helper-validator-identifier" "^7.27.1" 236 | 237 | "@babel/types@^7.27.3": 238 | version "7.27.3" 239 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.3.tgz#c0257bedf33aad6aad1f406d35c44758321eb3ec" 240 | integrity sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw== 241 | dependencies: 242 | "@babel/helper-string-parser" "^7.27.1" 243 | "@babel/helper-validator-identifier" "^7.27.1" 244 | 245 | "@jridgewell/gen-mapping@^0.3.5": 246 | version "0.3.8" 247 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" 248 | integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== 249 | dependencies: 250 | "@jridgewell/set-array" "^1.2.1" 251 | "@jridgewell/sourcemap-codec" "^1.4.10" 252 | "@jridgewell/trace-mapping" "^0.3.24" 253 | 254 | "@jridgewell/resolve-uri@^3.1.0": 255 | version "3.1.2" 256 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 257 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 258 | 259 | "@jridgewell/set-array@^1.2.1": 260 | version "1.2.1" 261 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" 262 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 263 | 264 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 265 | version "1.5.0" 266 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 267 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 268 | 269 | "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 270 | version "0.3.25" 271 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 272 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 273 | dependencies: 274 | "@jridgewell/resolve-uri" "^3.1.0" 275 | "@jridgewell/sourcemap-codec" "^1.4.14" 276 | 277 | "@lezer/common@^1.0.0": 278 | version "1.2.3" 279 | resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd" 280 | integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== 281 | 282 | "@lezer/lr@^1.0.0": 283 | version "1.4.2" 284 | resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727" 285 | integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== 286 | dependencies: 287 | "@lezer/common" "^1.0.0" 288 | 289 | "@lmdb/lmdb-darwin-arm64@2.8.5": 290 | version "2.8.5" 291 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" 292 | integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== 293 | 294 | "@lmdb/lmdb-darwin-x64@2.8.5": 295 | version "2.8.5" 296 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" 297 | integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== 298 | 299 | "@lmdb/lmdb-linux-arm64@2.8.5": 300 | version "2.8.5" 301 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" 302 | integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== 303 | 304 | "@lmdb/lmdb-linux-arm@2.8.5": 305 | version "2.8.5" 306 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" 307 | integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== 308 | 309 | "@lmdb/lmdb-linux-x64@2.8.5": 310 | version "2.8.5" 311 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" 312 | integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== 313 | 314 | "@lmdb/lmdb-win32-x64@2.8.5": 315 | version "2.8.5" 316 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" 317 | integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== 318 | 319 | "@mischnic/json-sourcemap@^0.1.1": 320 | version "0.1.1" 321 | resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" 322 | integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== 323 | dependencies: 324 | "@lezer/common" "^1.0.0" 325 | "@lezer/lr" "^1.0.0" 326 | json5 "^2.2.1" 327 | 328 | "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": 329 | version "3.0.3" 330 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" 331 | integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== 332 | 333 | "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": 334 | version "3.0.3" 335 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" 336 | integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== 337 | 338 | "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": 339 | version "3.0.3" 340 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" 341 | integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== 342 | 343 | "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": 344 | version "3.0.3" 345 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" 346 | integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== 347 | 348 | "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": 349 | version "3.0.3" 350 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" 351 | integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== 352 | 353 | "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": 354 | version "3.0.3" 355 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" 356 | integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== 357 | 358 | "@parcel/bundler-default@2.15.2": 359 | version "2.15.2" 360 | resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.15.2.tgz#73d97ef9ef53b1388a2eb7c54e2afcec958c4c4c" 361 | integrity sha512-k0psV7OZYs1g6jcJweBjINVZaVTcfFr6PuCQr28biZ85qbc70f5pWzCzY963+dF3XO/QwTzDABZsJUiDf5jPfQ== 362 | dependencies: 363 | "@parcel/diagnostic" "2.15.2" 364 | "@parcel/graph" "3.5.2" 365 | "@parcel/plugin" "2.15.2" 366 | "@parcel/rust" "2.15.2" 367 | "@parcel/utils" "2.15.2" 368 | nullthrows "^1.1.1" 369 | 370 | "@parcel/cache@2.15.2": 371 | version "2.15.2" 372 | resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.15.2.tgz#afe39d523e232bc6ae44642d6d30ca62fcece59b" 373 | integrity sha512-xYVNKWUHT5hCxo+9nBy9xm7NVfk/jswo+SrU12pXtJm4S5kyK7/PaNkiXxnDu/Hiec2s9BqG/7ny5WBX+i/fAw== 374 | dependencies: 375 | "@parcel/fs" "2.15.2" 376 | "@parcel/logger" "2.15.2" 377 | "@parcel/utils" "2.15.2" 378 | lmdb "2.8.5" 379 | 380 | "@parcel/codeframe@2.15.2": 381 | version "2.15.2" 382 | resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.15.2.tgz#1e5dc21fbdfa6064c2dd790ae1e997b1f26f45d4" 383 | integrity sha512-uzcHUXBXV+vUqXE7SR6Et60GauPGTWvc381pVzCzc90VQJyWY/xyRRIgcA+4MLi2+lQj+w4Uq9H9qg+hMx/JFg== 384 | dependencies: 385 | chalk "^4.1.2" 386 | 387 | "@parcel/compressor-raw@2.15.2": 388 | version "2.15.2" 389 | resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.15.2.tgz#6119e4152ecd83e323a62bddf10951bcd5a7bd9b" 390 | integrity sha512-p+Rr70kX6+bcFPtrrKFdNYnZzdSRSWXi8fvLzZtxissX2ANYS1oFdF6ia37pnzVlHhuYcN6HHMIHbDzJmRvMqA== 391 | dependencies: 392 | "@parcel/plugin" "2.15.2" 393 | 394 | "@parcel/config-default@2.15.2": 395 | version "2.15.2" 396 | resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.15.2.tgz#70ff341666ad11ef0c1e1f1c5019638fb9fb8e0f" 397 | integrity sha512-spJWqNnymehtESYM89d/E7P7WgFJ7PpOwr2Y1k1ItdEzuq87FZvudAs8bccXMHD69IgtEes+B0dUSEiOb8YlMQ== 398 | dependencies: 399 | "@parcel/bundler-default" "2.15.2" 400 | "@parcel/compressor-raw" "2.15.2" 401 | "@parcel/namer-default" "2.15.2" 402 | "@parcel/optimizer-css" "2.15.2" 403 | "@parcel/optimizer-html" "2.15.2" 404 | "@parcel/optimizer-image" "2.15.2" 405 | "@parcel/optimizer-svg" "2.15.2" 406 | "@parcel/optimizer-swc" "2.15.2" 407 | "@parcel/packager-css" "2.15.2" 408 | "@parcel/packager-html" "2.15.2" 409 | "@parcel/packager-js" "2.15.2" 410 | "@parcel/packager-raw" "2.15.2" 411 | "@parcel/packager-svg" "2.15.2" 412 | "@parcel/packager-wasm" "2.15.2" 413 | "@parcel/reporter-dev-server" "2.15.2" 414 | "@parcel/resolver-default" "2.15.2" 415 | "@parcel/runtime-browser-hmr" "2.15.2" 416 | "@parcel/runtime-js" "2.15.2" 417 | "@parcel/runtime-rsc" "2.15.2" 418 | "@parcel/runtime-service-worker" "2.15.2" 419 | "@parcel/transformer-babel" "2.15.2" 420 | "@parcel/transformer-css" "2.15.2" 421 | "@parcel/transformer-html" "2.15.2" 422 | "@parcel/transformer-image" "2.15.2" 423 | "@parcel/transformer-js" "2.15.2" 424 | "@parcel/transformer-json" "2.15.2" 425 | "@parcel/transformer-node" "2.15.2" 426 | "@parcel/transformer-postcss" "2.15.2" 427 | "@parcel/transformer-posthtml" "2.15.2" 428 | "@parcel/transformer-raw" "2.15.2" 429 | "@parcel/transformer-react-refresh-wrap" "2.15.2" 430 | "@parcel/transformer-svg" "2.15.2" 431 | 432 | "@parcel/core@2.15.2": 433 | version "2.15.2" 434 | resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.15.2.tgz#b84362d0948ff2c8cebea4d3c3d6b7c6f6c1c5fc" 435 | integrity sha512-yIFtxeLPLbTkpNuXGmnBX1U51unxv+gRoH/I5IcyD/vRL2Kp/cQU6YJWTSGK5sWG1Fgo+1Z2DeYp914Yd4a1WQ== 436 | dependencies: 437 | "@mischnic/json-sourcemap" "^0.1.1" 438 | "@parcel/cache" "2.15.2" 439 | "@parcel/diagnostic" "2.15.2" 440 | "@parcel/events" "2.15.2" 441 | "@parcel/feature-flags" "2.15.2" 442 | "@parcel/fs" "2.15.2" 443 | "@parcel/graph" "3.5.2" 444 | "@parcel/logger" "2.15.2" 445 | "@parcel/package-manager" "2.15.2" 446 | "@parcel/plugin" "2.15.2" 447 | "@parcel/profiler" "2.15.2" 448 | "@parcel/rust" "2.15.2" 449 | "@parcel/source-map" "^2.1.1" 450 | "@parcel/types" "2.15.2" 451 | "@parcel/utils" "2.15.2" 452 | "@parcel/workers" "2.15.2" 453 | base-x "^3.0.11" 454 | browserslist "^4.24.5" 455 | clone "^2.1.2" 456 | dotenv "^16.5.0" 457 | dotenv-expand "^11.0.7" 458 | json5 "^2.2.3" 459 | msgpackr "^1.11.2" 460 | nullthrows "^1.1.1" 461 | semver "^7.7.1" 462 | 463 | "@parcel/diagnostic@2.15.2": 464 | version "2.15.2" 465 | resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.15.2.tgz#6f77032bde57a64a345dfe56c466b9a15f45b49c" 466 | integrity sha512-lsIF59BgfLzN3SP5VM42pa9lilcotEoF42H2RgnqLe3KACcNcbbtvjyjlvac+iaSRix4gEkuZa6376X6p7DkFQ== 467 | dependencies: 468 | "@mischnic/json-sourcemap" "^0.1.1" 469 | nullthrows "^1.1.1" 470 | 471 | "@parcel/error-overlay@2.15.2": 472 | version "2.15.2" 473 | resolved "https://registry.yarnpkg.com/@parcel/error-overlay/-/error-overlay-2.15.2.tgz#e704a7fee7e48181692e7e904a351b612e426dbc" 474 | integrity sha512-bfDWkTQ4jCBUdOSynXo49pCPrVgtYSwobSxMeNhmwpdKbFvavj/09eZkAHikQgcrCF8gBwapik/U2YBTnFt0fg== 475 | 476 | "@parcel/events@2.15.2": 477 | version "2.15.2" 478 | resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.15.2.tgz#afdf680d04109b48aa0df14821a682b67843e9f1" 479 | integrity sha512-CxXVuYz/K3sDIquM+3Pemxhppb8Q/mRayxqxZtXHoKbhiLBeyX+pLz2v9Hr0R7fiN6naV00IG48Zc5aArHXR4w== 480 | 481 | "@parcel/feature-flags@2.15.2": 482 | version "2.15.2" 483 | resolved "https://registry.yarnpkg.com/@parcel/feature-flags/-/feature-flags-2.15.2.tgz#922eaf9332e04529ec169154dc506e6113d40bac" 484 | integrity sha512-6oiuLd3ypk4GY8X9/l/GrngzSddHW8yF8DrYA++TkaPDtTz4llanza/p7RIk/ltdV3hmBxnH4vjWtciJEcbQww== 485 | 486 | "@parcel/fs@2.15.2": 487 | version "2.15.2" 488 | resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.15.2.tgz#29da2f52921848eb25507bf2ab318a9bddf31c81" 489 | integrity sha512-/Xe+eFbxH43vBCZD+L0nkyIKo8i/nYQpRqzum4YTEoG8WHdcwNl12L9dOcM6EwpaCf6amNVjzBQJMwQ+6E1Y4A== 490 | dependencies: 491 | "@parcel/feature-flags" "2.15.2" 492 | "@parcel/rust" "2.15.2" 493 | "@parcel/types-internal" "2.15.2" 494 | "@parcel/utils" "2.15.2" 495 | "@parcel/watcher" "^2.0.7" 496 | "@parcel/workers" "2.15.2" 497 | 498 | "@parcel/graph@3.5.2": 499 | version "3.5.2" 500 | resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.5.2.tgz#d6e1997999dc8f9df37bfff3de376adfe7ecf7c1" 501 | integrity sha512-SsKKRPotNALU5R5r5WOsP+6FsuaNkk9L0Bmu1UzeyyrHiQPO1OVBYCsX+NtsGDAdDX7oOkGqgfkavJHrAG/BFA== 502 | dependencies: 503 | "@parcel/feature-flags" "2.15.2" 504 | nullthrows "^1.1.1" 505 | 506 | "@parcel/logger@2.15.2": 507 | version "2.15.2" 508 | resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.15.2.tgz#e9aae2cd38debdb20c17f2d42c36efbfe971a250" 509 | integrity sha512-naF3dXcvO1lZvtCi6kCTaXhB1cqRwWkRifQRfEei+yp0QZqZF9dmWwZzMOefst/PTl3RaW014vrwFtiegdqsbQ== 510 | dependencies: 511 | "@parcel/diagnostic" "2.15.2" 512 | "@parcel/events" "2.15.2" 513 | 514 | "@parcel/markdown-ansi@2.15.2": 515 | version "2.15.2" 516 | resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.15.2.tgz#0836e1b92c50fb2054b8e36696447c0966dc58e7" 517 | integrity sha512-qioxe3Gw/khhrZXeF3tmJeChoq70prxGqVhJylsnGimxHbxjLo3i8Jo8Thi36GiGcOTYSeyF/2tMo9BW2t2vqA== 518 | dependencies: 519 | chalk "^4.1.2" 520 | 521 | "@parcel/namer-default@2.15.2": 522 | version "2.15.2" 523 | resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.15.2.tgz#f48167886cc17fac217cc44043d8a7a9c82441fb" 524 | integrity sha512-2JtJjqKlJEv34OsZdyfAiRtTwNB/ulsStokCSB/fNCkfJPMtgWHDLFz17O7evJbWIoS1gQbIsmeS5GiMBfWdFw== 525 | dependencies: 526 | "@parcel/diagnostic" "2.15.2" 527 | "@parcel/plugin" "2.15.2" 528 | nullthrows "^1.1.1" 529 | 530 | "@parcel/node-resolver-core@3.6.2": 531 | version "3.6.2" 532 | resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.6.2.tgz#ab17b9c7f17b2bc1185a7e90fff78ded3fa46e5d" 533 | integrity sha512-MOWpFAuKnVMSZSoXZ9OG1Z7BNSW9IVnDA3DM3c8UYrSR8My7Wng0aen0MyjC3s98N1FEwCodESGfu0+7PpZOIA== 534 | dependencies: 535 | "@mischnic/json-sourcemap" "^0.1.1" 536 | "@parcel/diagnostic" "2.15.2" 537 | "@parcel/fs" "2.15.2" 538 | "@parcel/rust" "2.15.2" 539 | "@parcel/utils" "2.15.2" 540 | nullthrows "^1.1.1" 541 | semver "^7.7.1" 542 | 543 | "@parcel/optimizer-css@2.15.2": 544 | version "2.15.2" 545 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.15.2.tgz#1fac1fbbe98e5d968dc7dbf466c2155621f8237d" 546 | integrity sha512-czLiJPe2T2QXuGO3xBIM1a1OnR/UhTwY1efCZzo7CofzklNRu33CDLZuWC2Re/JK1+dO4fYBOs0rdWmGFB5acg== 547 | dependencies: 548 | "@parcel/diagnostic" "2.15.2" 549 | "@parcel/plugin" "2.15.2" 550 | "@parcel/source-map" "^2.1.1" 551 | "@parcel/utils" "2.15.2" 552 | browserslist "^4.24.5" 553 | lightningcss "^1.30.1" 554 | nullthrows "^1.1.1" 555 | 556 | "@parcel/optimizer-html@2.15.2": 557 | version "2.15.2" 558 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-html/-/optimizer-html-2.15.2.tgz#a7bd450eaf0c9bb7b78a97ab0626d4645bbf6819" 559 | integrity sha512-7jcvytsOfvdpXIehkZDD9nYzF5V8Dk6JULffDPA03deB8aiFhvPPXr2gr5h3hc/ZvO220dfAJ63Ie622y0BNrQ== 560 | dependencies: 561 | "@parcel/plugin" "2.15.2" 562 | "@parcel/rust" "2.15.2" 563 | "@parcel/utils" "2.15.2" 564 | 565 | "@parcel/optimizer-image@2.15.2": 566 | version "2.15.2" 567 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.15.2.tgz#f0df41bdd340a721a8e5e75ff81176dbe12bede6" 568 | integrity sha512-KCm70vpyIPO9Ml1ZDp2zg8ghPFUDqZ5zu1ZwLwm3SpP/rZYIb6Y/hPTVz/D17yJp6m4bBUVPNLI6Nl2Li4rktg== 569 | dependencies: 570 | "@parcel/diagnostic" "2.15.2" 571 | "@parcel/plugin" "2.15.2" 572 | "@parcel/rust" "2.15.2" 573 | "@parcel/utils" "2.15.2" 574 | "@parcel/workers" "2.15.2" 575 | 576 | "@parcel/optimizer-svg@2.15.2": 577 | version "2.15.2" 578 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-svg/-/optimizer-svg-2.15.2.tgz#70102cc380a603ae7f8c8cb680f285da5887fd37" 579 | integrity sha512-qyOt5BliHB1Dvi8c9h/95qzC80+7gw3ygMRM+avzuhESLlsGimktBBMHi+L6S1TQFjcHsorCkpcTfu48Vx6hUw== 580 | dependencies: 581 | "@parcel/plugin" "2.15.2" 582 | "@parcel/rust" "2.15.2" 583 | "@parcel/utils" "2.15.2" 584 | 585 | "@parcel/optimizer-swc@2.15.2": 586 | version "2.15.2" 587 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.15.2.tgz#9222664e10c298e4159cc3263aaa304aea1aeabc" 588 | integrity sha512-Ej8Y0VkNRUl7jyX4Xd9C8vTHqHfPXH3kAaEndrc7K1ZfvGeIzw/7OytFJeyJ/KbEIW7XWWtd2r7KaFiEG/8SJA== 589 | dependencies: 590 | "@parcel/diagnostic" "2.15.2" 591 | "@parcel/plugin" "2.15.2" 592 | "@parcel/source-map" "^2.1.1" 593 | "@parcel/utils" "2.15.2" 594 | "@swc/core" "^1.11.24" 595 | nullthrows "^1.1.1" 596 | 597 | "@parcel/package-manager@2.15.2": 598 | version "2.15.2" 599 | resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.15.2.tgz#4b3503cae2f9cc08d04a25357d8c8a8098096ceb" 600 | integrity sha512-0n8QupNyXp9CJZV6LohBpAqopLecQrave4kHG/T9CeCeqlJcQnYs+N+zio4mPlv7jXpnJHy+CF96Ce2wy/n1+Q== 601 | dependencies: 602 | "@parcel/diagnostic" "2.15.2" 603 | "@parcel/fs" "2.15.2" 604 | "@parcel/logger" "2.15.2" 605 | "@parcel/node-resolver-core" "3.6.2" 606 | "@parcel/types" "2.15.2" 607 | "@parcel/utils" "2.15.2" 608 | "@parcel/workers" "2.15.2" 609 | "@swc/core" "^1.11.24" 610 | semver "^7.7.1" 611 | 612 | "@parcel/packager-css@2.15.2": 613 | version "2.15.2" 614 | resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.15.2.tgz#915af6716aecbc1daba603e455c3e4fab8a6eaa9" 615 | integrity sha512-LZrFXC8bj7isdfKZIPS8OhFUWgZNmGXZJVfl7KLUD4D8GfNX0yKxBb4wtdfuQjlr1KMyw0WluchTXads4oVcMg== 616 | dependencies: 617 | "@parcel/diagnostic" "2.15.2" 618 | "@parcel/plugin" "2.15.2" 619 | "@parcel/source-map" "^2.1.1" 620 | "@parcel/utils" "2.15.2" 621 | lightningcss "^1.30.1" 622 | nullthrows "^1.1.1" 623 | 624 | "@parcel/packager-html@2.15.2": 625 | version "2.15.2" 626 | resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.15.2.tgz#18ef56dedeb3229b5c1eb772178b2f2659d029b4" 627 | integrity sha512-+uvMAZW3r2h1IS+UD3QfCmcFwJb3pPPyQOGK/ks5pYcY0Bqxfvco+5vAbMBofZ6b6RS9YCUvBtJbe1FFx4A3Jw== 628 | dependencies: 629 | "@parcel/plugin" "2.15.2" 630 | "@parcel/rust" "2.15.2" 631 | "@parcel/types" "2.15.2" 632 | "@parcel/utils" "2.15.2" 633 | 634 | "@parcel/packager-js@2.15.2": 635 | version "2.15.2" 636 | resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.15.2.tgz#136cbebd17c34ffa6d7586760c702c8ab28a3320" 637 | integrity sha512-kEXuKduZH/ynxm5zOUZSp6kV+/eyKbHn+zILXfFB7VeHuNyATfm8GTcSUhLYFHAoOncXorE51KI6KDMuKPejjA== 638 | dependencies: 639 | "@parcel/diagnostic" "2.15.2" 640 | "@parcel/plugin" "2.15.2" 641 | "@parcel/rust" "2.15.2" 642 | "@parcel/source-map" "^2.1.1" 643 | "@parcel/types" "2.15.2" 644 | "@parcel/utils" "2.15.2" 645 | globals "^13.24.0" 646 | nullthrows "^1.1.1" 647 | 648 | "@parcel/packager-raw@2.15.2": 649 | version "2.15.2" 650 | resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.15.2.tgz#b625eb266ed89f315cb1a7de2c17c30510e79397" 651 | integrity sha512-S4Gve8k9+qUj2c3wmbNmMQNqwsJ6E6o7ww/Z3CZ1M1i6UcegRVnK1usElw+6+j2L1sXdt/6pIUZvCg3DA9j3sA== 652 | dependencies: 653 | "@parcel/plugin" "2.15.2" 654 | 655 | "@parcel/packager-svg@2.15.2": 656 | version "2.15.2" 657 | resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.15.2.tgz#d2067b0e9e246828d9d94aab889a9ead2b80491a" 658 | integrity sha512-oTdoPl1mcJ0JeKPz5/ZZFlM+UM9YNsutRm8l6H2k6dcht2mbOt8e0OZQcRIiHmTcY8eEsF3bXmo/qXWB+PcihA== 659 | dependencies: 660 | "@parcel/plugin" "2.15.2" 661 | "@parcel/rust" "2.15.2" 662 | "@parcel/types" "2.15.2" 663 | "@parcel/utils" "2.15.2" 664 | 665 | "@parcel/packager-wasm@2.15.2": 666 | version "2.15.2" 667 | resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.15.2.tgz#6ae2abab1749dfb3742cece0d569c913a5d58b32" 668 | integrity sha512-LqDdXeC/cbjGc4qZjOJvpx4PmuQL0+kQVmO3AvnUIee+C2T2LgdTG7qhzJGJcihdvkvxZjKZI9fQgrjy9EFDuA== 669 | dependencies: 670 | "@parcel/plugin" "2.15.2" 671 | 672 | "@parcel/plugin@2.15.2": 673 | version "2.15.2" 674 | resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.15.2.tgz#cdc5746084c632631b538372f81486154026c2c2" 675 | integrity sha512-5ii1OpD/lGdpvy5AS1jChpCwEZP0eFaucy8szOjmfl4oZIeaHRHbZ5R0/3O1Hy8tY1IJF87HUKd+XV0iyD48zA== 676 | dependencies: 677 | "@parcel/types" "2.15.2" 678 | 679 | "@parcel/profiler@2.15.2": 680 | version "2.15.2" 681 | resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.15.2.tgz#9b4fe21fc21c513dc2637121dc04b9be11b219e5" 682 | integrity sha512-hLTI6TIRr/tGgjTbsCqW4Avl2x8FMAHLDlDhNYjivX6ccfZmilEJnIcdKr2QtdgcaSulfRLTd5bt6uJWJ2ecKg== 683 | dependencies: 684 | "@parcel/diagnostic" "2.15.2" 685 | "@parcel/events" "2.15.2" 686 | "@parcel/types-internal" "2.15.2" 687 | chrome-trace-event "^1.0.2" 688 | 689 | "@parcel/reporter-cli@2.15.2": 690 | version "2.15.2" 691 | resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.15.2.tgz#5eff7d003cb43fa6e801400e11cb9c6973021f36" 692 | integrity sha512-R2WuHr+0FafsR9WNibR8ssyX8bHwXzMA91OdmeLMaAG5Dc/xv6yTIZuvOCdlCAfbBkcRiMnLWTQ3hQI1bqkC4g== 693 | dependencies: 694 | "@parcel/plugin" "2.15.2" 695 | "@parcel/types" "2.15.2" 696 | "@parcel/utils" "2.15.2" 697 | chalk "^4.1.2" 698 | term-size "^2.2.1" 699 | 700 | "@parcel/reporter-dev-server@2.15.2": 701 | version "2.15.2" 702 | resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.15.2.tgz#63cc58d0c2863298cbeb50599378e291d39a8d52" 703 | integrity sha512-xJzb+IfcZfD2Ml4GYhHFovQ4vbWpFP/bd9cM9TuzyfCbaaf0NEN18uY3kRFCUDYOWs7aLOMzqL3eI5Hw6zh+Pw== 704 | dependencies: 705 | "@parcel/codeframe" "2.15.2" 706 | "@parcel/plugin" "2.15.2" 707 | "@parcel/source-map" "^2.1.1" 708 | "@parcel/utils" "2.15.2" 709 | 710 | "@parcel/reporter-tracer@2.15.2": 711 | version "2.15.2" 712 | resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.15.2.tgz#5da3c419c743ca60c088b4b86fe44bc182b5ca5b" 713 | integrity sha512-jtmNPMXVuuqO4WmIgYifAtKhMWblAZmRnqc5dVZfUBWPeqGKrbH2k89cYtZfvMbLon8/Glv6WDOt91oyDfjuKg== 714 | dependencies: 715 | "@parcel/plugin" "2.15.2" 716 | "@parcel/utils" "2.15.2" 717 | chrome-trace-event "^1.0.3" 718 | nullthrows "^1.1.1" 719 | 720 | "@parcel/resolver-default@2.15.2": 721 | version "2.15.2" 722 | resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.15.2.tgz#8c0836a9eee9ce3135708d76a332fe37f91251dd" 723 | integrity sha512-CuCCPEu3jwyLplbLDrahq0CstmIHchKefmX0JGpqCJBJBVdO89SHV5hUr8Se7hfy8uamD41wW10d51oAmyjXMA== 724 | dependencies: 725 | "@parcel/node-resolver-core" "3.6.2" 726 | "@parcel/plugin" "2.15.2" 727 | 728 | "@parcel/runtime-browser-hmr@2.15.2": 729 | version "2.15.2" 730 | resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.15.2.tgz#84371e4d6bcf89635bd331295fa0f60fafece9a5" 731 | integrity sha512-4QtuKAT3NphDrGpRVXyGOrG/gR6cjLIqPkqamTEuAVc13bmjK9XJ5Q4l1L3kjIIlQrRPg9MlHJcZ7VR3PuWWRQ== 732 | dependencies: 733 | "@parcel/plugin" "2.15.2" 734 | "@parcel/utils" "2.15.2" 735 | 736 | "@parcel/runtime-js@2.15.2": 737 | version "2.15.2" 738 | resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.15.2.tgz#ceced258f619184d240a25c68143443d9a8511fc" 739 | integrity sha512-5GGL/7rH6N54u7lAjX8mJKsumFiCyUcpz9wbygG4gkzMcRmGRnp+tctKI9f0GPfcMfKhdypOHfduc5SAuMX03w== 740 | dependencies: 741 | "@parcel/diagnostic" "2.15.2" 742 | "@parcel/plugin" "2.15.2" 743 | "@parcel/utils" "2.15.2" 744 | nullthrows "^1.1.1" 745 | 746 | "@parcel/runtime-rsc@2.15.2": 747 | version "2.15.2" 748 | resolved "https://registry.yarnpkg.com/@parcel/runtime-rsc/-/runtime-rsc-2.15.2.tgz#e61d76cfa37a41568d061bb63dc24922e9afdcb4" 749 | integrity sha512-k0cYvrPUXpvV+neplTkJ1P/LkJzQmtF4eU3js+/kzyOU3zhUSgrLNHJmj6ibuWVYHENW2QtasvpsXjvE2knqTg== 750 | dependencies: 751 | "@parcel/plugin" "2.15.2" 752 | "@parcel/rust" "2.15.2" 753 | "@parcel/utils" "2.15.2" 754 | nullthrows "^1.1.1" 755 | 756 | "@parcel/runtime-service-worker@2.15.2": 757 | version "2.15.2" 758 | resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.15.2.tgz#f316372bee54d9a01f81e08a5bc929e9151e248c" 759 | integrity sha512-5+nV46pqa+7xFscLr4NRSeyXR8i+PSOoECRUzrv4UJRVbeCeE4bfqMYXs+rMbSrBillOLZyydNUQUT56xo9W6A== 760 | dependencies: 761 | "@parcel/plugin" "2.15.2" 762 | "@parcel/utils" "2.15.2" 763 | nullthrows "^1.1.1" 764 | 765 | "@parcel/rust-darwin-arm64@2.15.2": 766 | version "2.15.2" 767 | resolved "https://registry.yarnpkg.com/@parcel/rust-darwin-arm64/-/rust-darwin-arm64-2.15.2.tgz#e48e39f9bc3d22c206a40549218b2ab92233674e" 768 | integrity sha512-IK5mo/7bNym1ODMWD92D2URGcAq2K/9BasRlfjWI/Gh74l3lH4EFadUfgM88L+MVCV3WTg8ht5ZA0Iyp+IQ1JQ== 769 | 770 | "@parcel/rust-darwin-x64@2.15.2": 771 | version "2.15.2" 772 | resolved "https://registry.yarnpkg.com/@parcel/rust-darwin-x64/-/rust-darwin-x64-2.15.2.tgz#2139173951bd84716de0ab3145b7ebcd4556dc25" 773 | integrity sha512-J30ukJXCzXsYNlYvYsaPEAEzfCZGXVIkXtPSVpWPwcaReqFUyT2bm4I8DHoeas0JwMNaeNlJhksaJA/iomqlwA== 774 | 775 | "@parcel/rust-linux-arm-gnueabihf@2.15.2": 776 | version "2.15.2" 777 | resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm-gnueabihf/-/rust-linux-arm-gnueabihf-2.15.2.tgz#9dad08fff94b702cfc88f570bdda62f938852a0e" 778 | integrity sha512-WpPddkviw8IkRRnT/dRyD3Uzvy6Yuoy5vvtDmpnrR2bJnEz5uQI3TlhMtQo7R+j6aIrDsGFJKBeo9Z0ga0ebNQ== 779 | 780 | "@parcel/rust-linux-arm64-gnu@2.15.2": 781 | version "2.15.2" 782 | resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm64-gnu/-/rust-linux-arm64-gnu-2.15.2.tgz#023a01dab40374648135758ef7725fae75d54a80" 783 | integrity sha512-RzD7Gw0QqyUoWaVrtCU+v5J5pg6bybVNknqlEY4jfcJDgJHsM1V91DwJwxnI4ikG/uMedl0I40dl59x/Vo01Ow== 784 | 785 | "@parcel/rust-linux-arm64-musl@2.15.2": 786 | version "2.15.2" 787 | resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm64-musl/-/rust-linux-arm64-musl-2.15.2.tgz#0ca91c7c7565c25d2e2c35c7734135bcd4f3da29" 788 | integrity sha512-mWoL7kCITrEOO0GQ+LqGUylX+6b3nsV60Lzrz2N0Pgzz3EbGS0d4gDKkjxpi6BoR+h4KL7nLhj4hhbm0OHIc4A== 789 | 790 | "@parcel/rust-linux-x64-gnu@2.15.2": 791 | version "2.15.2" 792 | resolved "https://registry.yarnpkg.com/@parcel/rust-linux-x64-gnu/-/rust-linux-x64-gnu-2.15.2.tgz#d4b5272c50cf9fc3f7d5317de7147891f2633293" 793 | integrity sha512-aI8bKZTEZNYmgURiAfrgpmaoEArnMRvosfsOKnGykTjmHgsBxO/CGguFj5a4wlAZTVWcTGfs4krnUKtF9Hw6Rw== 794 | 795 | "@parcel/rust-linux-x64-musl@2.15.2": 796 | version "2.15.2" 797 | resolved "https://registry.yarnpkg.com/@parcel/rust-linux-x64-musl/-/rust-linux-x64-musl-2.15.2.tgz#30cd063b408856c1784676e376f1bf799fbce563" 798 | integrity sha512-FpQOraPTjGfbHipjdbYpQLlMIRDoVL+Kl9ak+6mt0SbvP3QaXGosQXyhw0ZoNszqVLjIwC0OHEjAHdtcO6ZUvQ== 799 | 800 | "@parcel/rust-win32-x64-msvc@2.15.2": 801 | version "2.15.2" 802 | resolved "https://registry.yarnpkg.com/@parcel/rust-win32-x64-msvc/-/rust-win32-x64-msvc-2.15.2.tgz#fd858deb0c4728b1cea53b97bda8db60e69b491f" 803 | integrity sha512-aSXkPc+KYAT6MnYgw2urXuDvipPkD90uJBKtSn3MY+fGOfzEluK7j0F5NdH88oTzrGVhRQxnxfe3Fc+IRhsaFQ== 804 | 805 | "@parcel/rust@2.15.2": 806 | version "2.15.2" 807 | resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.15.2.tgz#5ec0f6a0d83b4ed942ca0efd2d73f9a2673702fb" 808 | integrity sha512-6ZIVsSnkwxvDDVaxiYK4bWtVaJBYaFQuRvcxfCMQHEzFpWl9mdZVbCs3+g69Ere7a3e2sk87B41d/FIhoaz5xw== 809 | optionalDependencies: 810 | "@parcel/rust-darwin-arm64" "2.15.2" 811 | "@parcel/rust-darwin-x64" "2.15.2" 812 | "@parcel/rust-linux-arm-gnueabihf" "2.15.2" 813 | "@parcel/rust-linux-arm64-gnu" "2.15.2" 814 | "@parcel/rust-linux-arm64-musl" "2.15.2" 815 | "@parcel/rust-linux-x64-gnu" "2.15.2" 816 | "@parcel/rust-linux-x64-musl" "2.15.2" 817 | "@parcel/rust-win32-x64-msvc" "2.15.2" 818 | 819 | "@parcel/source-map@^2.1.1": 820 | version "2.1.1" 821 | resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" 822 | integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== 823 | dependencies: 824 | detect-libc "^1.0.3" 825 | 826 | "@parcel/transformer-babel@2.15.2": 827 | version "2.15.2" 828 | resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.15.2.tgz#44c37a5ac5fbf7aaae1c262bf95488f76367126b" 829 | integrity sha512-9oGx0wJhKY+Lh6PLY05m36IS6r6oOxpAQZhna2S5AYcfcf10ZsL8afOJTE8JBXbfg35dp97jeB4iuSHYTXr6NA== 830 | dependencies: 831 | "@parcel/diagnostic" "2.15.2" 832 | "@parcel/plugin" "2.15.2" 833 | "@parcel/source-map" "^2.1.1" 834 | "@parcel/utils" "2.15.2" 835 | browserslist "^4.24.5" 836 | json5 "^2.2.3" 837 | nullthrows "^1.1.1" 838 | semver "^7.7.1" 839 | 840 | "@parcel/transformer-css@2.15.2": 841 | version "2.15.2" 842 | resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.15.2.tgz#60046f12ac0f3484cd7d524e7998074ef9efaa2f" 843 | integrity sha512-NlybdCOr8r0LiPc7FIkeZp0mjfVB0Ht9B9eM3gUf2rOA1iM9/KGZNlu1AKVInyLRerybFqrGwHgx/qMGmbL3JA== 844 | dependencies: 845 | "@parcel/diagnostic" "2.15.2" 846 | "@parcel/plugin" "2.15.2" 847 | "@parcel/source-map" "^2.1.1" 848 | "@parcel/utils" "2.15.2" 849 | browserslist "^4.24.5" 850 | lightningcss "^1.30.1" 851 | nullthrows "^1.1.1" 852 | 853 | "@parcel/transformer-html@2.15.2": 854 | version "2.15.2" 855 | resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.15.2.tgz#c4b8b656fa539ade1311059570018a1c41c7126a" 856 | integrity sha512-P0xptyNVKTgXr6HovvL3kCUw7eA3s2aZpAdliOhnFfzXUCG6Na/XN8TW5TOiNo41bcxsYwLpfrZz0N20AVJ4qw== 857 | dependencies: 858 | "@parcel/diagnostic" "2.15.2" 859 | "@parcel/plugin" "2.15.2" 860 | "@parcel/rust" "2.15.2" 861 | 862 | "@parcel/transformer-image@2.15.2": 863 | version "2.15.2" 864 | resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.15.2.tgz#4e92565baa582848cb4df17b79bc8ab1220784a2" 865 | integrity sha512-5WpKkEDMppaO21MO/5Rikr+DDRjkh3mPalpnH/DQLNEv0fKOakSNWDRR7FuV5ozSVREeQurTvbb4tAFAxOQx1w== 866 | dependencies: 867 | "@parcel/plugin" "2.15.2" 868 | "@parcel/utils" "2.15.2" 869 | "@parcel/workers" "2.15.2" 870 | nullthrows "^1.1.1" 871 | 872 | "@parcel/transformer-js@2.15.2": 873 | version "2.15.2" 874 | resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.15.2.tgz#c11e23d67b4d6d6f36730426ca5d7512d8358750" 875 | integrity sha512-zVDc5Pc3/Cbn3GGsGjj+k/WjQLJCdwsKlYfpYiTXvSuXDpb4FCcYgr6F+wbSHb+/VikYIVH1RwH4kjCuIuNtew== 876 | dependencies: 877 | "@parcel/diagnostic" "2.15.2" 878 | "@parcel/plugin" "2.15.2" 879 | "@parcel/rust" "2.15.2" 880 | "@parcel/source-map" "^2.1.1" 881 | "@parcel/utils" "2.15.2" 882 | "@parcel/workers" "2.15.2" 883 | "@swc/helpers" "^0.5.0" 884 | browserslist "^4.24.5" 885 | nullthrows "^1.1.1" 886 | regenerator-runtime "^0.14.1" 887 | semver "^7.7.1" 888 | 889 | "@parcel/transformer-json@2.15.2": 890 | version "2.15.2" 891 | resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.15.2.tgz#d40fafb918e2710cdb0bf0f09367babe731e60dc" 892 | integrity sha512-ycGhhk+DeipU0jtdGZesIx0X++h3qLkT77N6B2cTyD+BXAlKYUh++QIaLyDgTu7VwqSIt5msDg5jLWdamH7Rkw== 893 | dependencies: 894 | "@parcel/plugin" "2.15.2" 895 | json5 "^2.2.3" 896 | 897 | "@parcel/transformer-node@2.15.2": 898 | version "2.15.2" 899 | resolved "https://registry.yarnpkg.com/@parcel/transformer-node/-/transformer-node-2.15.2.tgz#5824b9cb295eca04530fd423bf380be4bfc0e15e" 900 | integrity sha512-H3IsKE2nVSEnqQH0DtjHQTTPqRw3gdXv9dROlwkU53O3cAIAtHDJYWmmDLMqhLl68vOYTvlkDT03rGrjnk8rDg== 901 | dependencies: 902 | "@parcel/plugin" "2.15.2" 903 | 904 | "@parcel/transformer-postcss@2.15.2": 905 | version "2.15.2" 906 | resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.15.2.tgz#9a276eacc8d070cc181492bf5386c4828e4436d1" 907 | integrity sha512-3vLJqsFhOwsUS6lFnBZhU//OrfdLPM4uPBsm7XDLl45B2+FcW3T2H32uSGW6Ue1q1MawkVeNShuy293luh7gmA== 908 | dependencies: 909 | "@parcel/diagnostic" "2.15.2" 910 | "@parcel/plugin" "2.15.2" 911 | "@parcel/rust" "2.15.2" 912 | "@parcel/utils" "2.15.2" 913 | clone "^2.1.2" 914 | nullthrows "^1.1.1" 915 | postcss-value-parser "^4.2.0" 916 | semver "^7.7.1" 917 | 918 | "@parcel/transformer-posthtml@2.15.2": 919 | version "2.15.2" 920 | resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.15.2.tgz#7b92439d0bad55b7ad42a18833f1d2ea68913a6a" 921 | integrity sha512-khdk3IfQLnlryu695kEDQHsvw02jGSJsbgqHoOdIxEbMltxB1JMfJBOOiTm+JEXXQlgD1ttX59CQD4vC7sIT0Q== 922 | dependencies: 923 | "@parcel/plugin" "2.15.2" 924 | "@parcel/utils" "2.15.2" 925 | 926 | "@parcel/transformer-raw@2.15.2": 927 | version "2.15.2" 928 | resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.15.2.tgz#9737b1f3a392bf46303cd42f428b213700d31d83" 929 | integrity sha512-c/7rzEnpWJJmQbZiwFgL57ETUIIiiySBoVmtuF22yNjGQc1Znthg/ee8pT755UfE1hDCT6Kh/XLWv1Bt3C64CQ== 930 | dependencies: 931 | "@parcel/plugin" "2.15.2" 932 | 933 | "@parcel/transformer-react-refresh-wrap@2.15.2": 934 | version "2.15.2" 935 | resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.15.2.tgz#7d2e368c33afc1ec001ff9067959db3bb0e4eecb" 936 | integrity sha512-ReH5qjJbT1Tj7ZYi1KIck2amNTiWqY6m31Ml3I6JeApg7djnz+EwbzPmbpKkcFmR+wxt82DtQdXO3Y7BOJsZDQ== 937 | dependencies: 938 | "@parcel/error-overlay" "2.15.2" 939 | "@parcel/plugin" "2.15.2" 940 | "@parcel/utils" "2.15.2" 941 | react-refresh "^0.16.0" 942 | 943 | "@parcel/transformer-svg@2.15.2": 944 | version "2.15.2" 945 | resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.15.2.tgz#731057aede2869a0591880d427ab7b716ba4dd80" 946 | integrity sha512-R5Q0JgDtywSmojvqqa6TDmXDbKCfBBgu4tR0mzo3VicEObmiatRT49BFWHbdenfTf5tKpRplfH88leMPuDVVAg== 947 | dependencies: 948 | "@parcel/diagnostic" "2.15.2" 949 | "@parcel/plugin" "2.15.2" 950 | "@parcel/rust" "2.15.2" 951 | 952 | "@parcel/types-internal@2.15.2": 953 | version "2.15.2" 954 | resolved "https://registry.yarnpkg.com/@parcel/types-internal/-/types-internal-2.15.2.tgz#7dbc632dcb8821d193871e4ddd29f9d7dd2336d3" 955 | integrity sha512-nmMpYeG4le49nvr8FsJYGEwhCZxcrm89tvkX8xGod1yXcShEZNWVVY9ezZLKxMrVMdBveqNUW8IZCij5iFDqdQ== 956 | dependencies: 957 | "@parcel/diagnostic" "2.15.2" 958 | "@parcel/feature-flags" "2.15.2" 959 | "@parcel/source-map" "^2.1.1" 960 | utility-types "^3.11.0" 961 | 962 | "@parcel/types@2.15.2": 963 | version "2.15.2" 964 | resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.15.2.tgz#21d4ef0d83af7dac2d61a7aedf8c6c3c450489df" 965 | integrity sha512-APVvBVVG8RIMLN5hERa2POkPkEtrNUqRbQlKpoNYlIYZaYxKzb9+4MH4cVkmkGfYk3FGU3K5RnxSxMMWsu4tdw== 966 | dependencies: 967 | "@parcel/types-internal" "2.15.2" 968 | "@parcel/workers" "2.15.2" 969 | 970 | "@parcel/utils@2.15.2": 971 | version "2.15.2" 972 | resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.15.2.tgz#fa5292c17064105e0266c7df5064dc3434532de8" 973 | integrity sha512-SQ77yZyeLZf5Teq5aMAViuXKoN7JRnYZ7Pdere1FD8ZuS7E34THA4jjJKxKu9Bqtezgm+gpN1gMbSKMBfbmIZA== 974 | dependencies: 975 | "@parcel/codeframe" "2.15.2" 976 | "@parcel/diagnostic" "2.15.2" 977 | "@parcel/logger" "2.15.2" 978 | "@parcel/markdown-ansi" "2.15.2" 979 | "@parcel/rust" "2.15.2" 980 | "@parcel/source-map" "^2.1.1" 981 | chalk "^4.1.2" 982 | nullthrows "^1.1.1" 983 | 984 | "@parcel/watcher-android-arm64@2.5.0": 985 | version "2.5.0" 986 | resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" 987 | integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== 988 | 989 | "@parcel/watcher-darwin-arm64@2.5.0": 990 | version "2.5.0" 991 | resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" 992 | integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== 993 | 994 | "@parcel/watcher-darwin-x64@2.5.0": 995 | version "2.5.0" 996 | resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" 997 | integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== 998 | 999 | "@parcel/watcher-freebsd-x64@2.5.0": 1000 | version "2.5.0" 1001 | resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" 1002 | integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== 1003 | 1004 | "@parcel/watcher-linux-arm-glibc@2.5.0": 1005 | version "2.5.0" 1006 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" 1007 | integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== 1008 | 1009 | "@parcel/watcher-linux-arm-musl@2.5.0": 1010 | version "2.5.0" 1011 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" 1012 | integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== 1013 | 1014 | "@parcel/watcher-linux-arm64-glibc@2.5.0": 1015 | version "2.5.0" 1016 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" 1017 | integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== 1018 | 1019 | "@parcel/watcher-linux-arm64-musl@2.5.0": 1020 | version "2.5.0" 1021 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" 1022 | integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== 1023 | 1024 | "@parcel/watcher-linux-x64-glibc@2.5.0": 1025 | version "2.5.0" 1026 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" 1027 | integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== 1028 | 1029 | "@parcel/watcher-linux-x64-musl@2.5.0": 1030 | version "2.5.0" 1031 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" 1032 | integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== 1033 | 1034 | "@parcel/watcher-win32-arm64@2.5.0": 1035 | version "2.5.0" 1036 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" 1037 | integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== 1038 | 1039 | "@parcel/watcher-win32-ia32@2.5.0": 1040 | version "2.5.0" 1041 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" 1042 | integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== 1043 | 1044 | "@parcel/watcher-win32-x64@2.5.0": 1045 | version "2.5.0" 1046 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" 1047 | integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== 1048 | 1049 | "@parcel/watcher@^2.0.7": 1050 | version "2.5.0" 1051 | resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" 1052 | integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== 1053 | dependencies: 1054 | detect-libc "^1.0.3" 1055 | is-glob "^4.0.3" 1056 | micromatch "^4.0.5" 1057 | node-addon-api "^7.0.0" 1058 | optionalDependencies: 1059 | "@parcel/watcher-android-arm64" "2.5.0" 1060 | "@parcel/watcher-darwin-arm64" "2.5.0" 1061 | "@parcel/watcher-darwin-x64" "2.5.0" 1062 | "@parcel/watcher-freebsd-x64" "2.5.0" 1063 | "@parcel/watcher-linux-arm-glibc" "2.5.0" 1064 | "@parcel/watcher-linux-arm-musl" "2.5.0" 1065 | "@parcel/watcher-linux-arm64-glibc" "2.5.0" 1066 | "@parcel/watcher-linux-arm64-musl" "2.5.0" 1067 | "@parcel/watcher-linux-x64-glibc" "2.5.0" 1068 | "@parcel/watcher-linux-x64-musl" "2.5.0" 1069 | "@parcel/watcher-win32-arm64" "2.5.0" 1070 | "@parcel/watcher-win32-ia32" "2.5.0" 1071 | "@parcel/watcher-win32-x64" "2.5.0" 1072 | 1073 | "@parcel/workers@2.15.2": 1074 | version "2.15.2" 1075 | resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.15.2.tgz#f83153399ad560cf072ef4cdc7485c9b64c507b9" 1076 | integrity sha512-uQWM3Zzkk+vzFYrLQvU/oeM1LC6/EDPvpdgtvdwkUqYC6O1Oei+9cWz6Uv5UDCwizeJKt+3PyE2rB9idbEkmsQ== 1077 | dependencies: 1078 | "@parcel/diagnostic" "2.15.2" 1079 | "@parcel/logger" "2.15.2" 1080 | "@parcel/profiler" "2.15.2" 1081 | "@parcel/types-internal" "2.15.2" 1082 | "@parcel/utils" "2.15.2" 1083 | nullthrows "^1.1.1" 1084 | 1085 | "@swc/core-darwin-arm64@1.11.24": 1086 | version "1.11.24" 1087 | resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.24.tgz#c9fcc9c4bad0511fed26210449556d2b33fb2d9a" 1088 | integrity sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA== 1089 | 1090 | "@swc/core-darwin-x64@1.11.24": 1091 | version "1.11.24" 1092 | resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.11.24.tgz#048ea3ee43281264a62fccb5a944b76d1c56eb24" 1093 | integrity sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ== 1094 | 1095 | "@swc/core-linux-arm-gnueabihf@1.11.24": 1096 | version "1.11.24" 1097 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.24.tgz#f01ba657a81c67d8fb9f681712e65abf1324cec6" 1098 | integrity sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw== 1099 | 1100 | "@swc/core-linux-arm64-gnu@1.11.24": 1101 | version "1.11.24" 1102 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.24.tgz#9aefca7f7f87c8312c2fa714c1eb731411d8596c" 1103 | integrity sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg== 1104 | 1105 | "@swc/core-linux-arm64-musl@1.11.24": 1106 | version "1.11.24" 1107 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.24.tgz#e4805484779bbc59b639eab4f8e45166f3d7a4f7" 1108 | integrity sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw== 1109 | 1110 | "@swc/core-linux-x64-gnu@1.11.24": 1111 | version "1.11.24" 1112 | resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.24.tgz#e8d8cc50a49903880944379590b73733e150a5d4" 1113 | integrity sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg== 1114 | 1115 | "@swc/core-linux-x64-musl@1.11.24": 1116 | version "1.11.24" 1117 | resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.24.tgz#f3c46212eb8a793f6a42a36b2a9017a9b1462737" 1118 | integrity sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw== 1119 | 1120 | "@swc/core-win32-arm64-msvc@1.11.24": 1121 | version "1.11.24" 1122 | resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.24.tgz#b1c3327d81a5f94415ac0b1713e192df1c121fbd" 1123 | integrity sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ== 1124 | 1125 | "@swc/core-win32-ia32-msvc@1.11.24": 1126 | version "1.11.24" 1127 | resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.24.tgz#6a944dd6111ec5fae3cf5925b73701e49b109edc" 1128 | integrity sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ== 1129 | 1130 | "@swc/core-win32-x64-msvc@1.11.24": 1131 | version "1.11.24" 1132 | resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.24.tgz#eebb5d5ece2710aeb25cc58bd7c5c4c2c046f030" 1133 | integrity sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w== 1134 | 1135 | "@swc/core@^1.11.24": 1136 | version "1.11.24" 1137 | resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.11.24.tgz#340425648296964f815c940b8da00fcdb1ff2abd" 1138 | integrity sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg== 1139 | dependencies: 1140 | "@swc/counter" "^0.1.3" 1141 | "@swc/types" "^0.1.21" 1142 | optionalDependencies: 1143 | "@swc/core-darwin-arm64" "1.11.24" 1144 | "@swc/core-darwin-x64" "1.11.24" 1145 | "@swc/core-linux-arm-gnueabihf" "1.11.24" 1146 | "@swc/core-linux-arm64-gnu" "1.11.24" 1147 | "@swc/core-linux-arm64-musl" "1.11.24" 1148 | "@swc/core-linux-x64-gnu" "1.11.24" 1149 | "@swc/core-linux-x64-musl" "1.11.24" 1150 | "@swc/core-win32-arm64-msvc" "1.11.24" 1151 | "@swc/core-win32-ia32-msvc" "1.11.24" 1152 | "@swc/core-win32-x64-msvc" "1.11.24" 1153 | 1154 | "@swc/counter@^0.1.3": 1155 | version "0.1.3" 1156 | resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" 1157 | integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== 1158 | 1159 | "@swc/helpers@^0.5.0": 1160 | version "0.5.15" 1161 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" 1162 | integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== 1163 | dependencies: 1164 | tslib "^2.8.0" 1165 | 1166 | "@swc/types@^0.1.21": 1167 | version "0.1.21" 1168 | resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.21.tgz#6fcadbeca1d8bc89e1ab3de4948cef12344a38c0" 1169 | integrity sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ== 1170 | dependencies: 1171 | "@swc/counter" "^0.1.3" 1172 | 1173 | "@trysound/sax@0.2.0": 1174 | version "0.2.0" 1175 | resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" 1176 | integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== 1177 | 1178 | "@types/react-dom@19.1.5": 1179 | version "19.1.5" 1180 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.5.tgz#cdfe2c663742887372f54804b16e8dbc26bd794a" 1181 | integrity sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg== 1182 | 1183 | "@types/react@19.1.6": 1184 | version "19.1.6" 1185 | resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.6.tgz#dee39f3e1e9a7d693f156a5840570b6d57f325ea" 1186 | integrity sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q== 1187 | dependencies: 1188 | csstype "^3.0.2" 1189 | 1190 | ansi-styles@^4.1.0: 1191 | version "4.3.0" 1192 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 1193 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 1194 | dependencies: 1195 | color-convert "^2.0.1" 1196 | 1197 | base-x@^3.0.11: 1198 | version "3.0.11" 1199 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" 1200 | integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== 1201 | dependencies: 1202 | safe-buffer "^5.0.1" 1203 | 1204 | boolbase@^1.0.0: 1205 | version "1.0.0" 1206 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 1207 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== 1208 | 1209 | braces@^3.0.3: 1210 | version "3.0.3" 1211 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 1212 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 1213 | dependencies: 1214 | fill-range "^7.1.1" 1215 | 1216 | browserslist@^4.24.0: 1217 | version "4.24.3" 1218 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" 1219 | integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== 1220 | dependencies: 1221 | caniuse-lite "^1.0.30001688" 1222 | electron-to-chromium "^1.5.73" 1223 | node-releases "^2.0.19" 1224 | update-browserslist-db "^1.1.1" 1225 | 1226 | browserslist@^4.24.5: 1227 | version "4.24.5" 1228 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" 1229 | integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== 1230 | dependencies: 1231 | caniuse-lite "^1.0.30001716" 1232 | electron-to-chromium "^1.5.149" 1233 | node-releases "^2.0.19" 1234 | update-browserslist-db "^1.1.3" 1235 | 1236 | caniuse-lite@^1.0.30001688: 1237 | version "1.0.30001690" 1238 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" 1239 | integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== 1240 | 1241 | caniuse-lite@^1.0.30001716: 1242 | version "1.0.30001718" 1243 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz#dae13a9c80d517c30c6197515a96131c194d8f82" 1244 | integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== 1245 | 1246 | chalk@^4.1.2: 1247 | version "4.1.2" 1248 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1249 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1250 | dependencies: 1251 | ansi-styles "^4.1.0" 1252 | supports-color "^7.1.0" 1253 | 1254 | cheerio-select@^2.1.0: 1255 | version "2.1.0" 1256 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 1257 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 1258 | dependencies: 1259 | boolbase "^1.0.0" 1260 | css-select "^5.1.0" 1261 | css-what "^6.1.0" 1262 | domelementtype "^2.3.0" 1263 | domhandler "^5.0.3" 1264 | domutils "^3.0.1" 1265 | 1266 | cheerio@^1.0.0-rc.12: 1267 | version "1.0.0" 1268 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81" 1269 | integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww== 1270 | dependencies: 1271 | cheerio-select "^2.1.0" 1272 | dom-serializer "^2.0.0" 1273 | domhandler "^5.0.3" 1274 | domutils "^3.1.0" 1275 | encoding-sniffer "^0.2.0" 1276 | htmlparser2 "^9.1.0" 1277 | parse5 "^7.1.2" 1278 | parse5-htmlparser2-tree-adapter "^7.0.0" 1279 | parse5-parser-stream "^7.1.2" 1280 | undici "^6.19.5" 1281 | whatwg-mimetype "^4.0.0" 1282 | 1283 | chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: 1284 | version "1.0.4" 1285 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" 1286 | integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== 1287 | 1288 | clone@^2.1.2: 1289 | version "2.1.2" 1290 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" 1291 | integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== 1292 | 1293 | color-convert@^2.0.1: 1294 | version "2.0.1" 1295 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1296 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1297 | dependencies: 1298 | color-name "~1.1.4" 1299 | 1300 | color-name@~1.1.4: 1301 | version "1.1.4" 1302 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1303 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1304 | 1305 | commander@^12.0.0, commander@^12.1.0: 1306 | version "12.1.0" 1307 | resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" 1308 | integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== 1309 | 1310 | commander@^7.2.0: 1311 | version "7.2.0" 1312 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 1313 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 1314 | 1315 | convert-source-map@^2.0.0: 1316 | version "2.0.0" 1317 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" 1318 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 1319 | 1320 | css-select@^5.1.0: 1321 | version "5.1.0" 1322 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 1323 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 1324 | dependencies: 1325 | boolbase "^1.0.0" 1326 | css-what "^6.1.0" 1327 | domhandler "^5.0.2" 1328 | domutils "^3.0.1" 1329 | nth-check "^2.0.1" 1330 | 1331 | css-tree@^2.3.1: 1332 | version "2.3.1" 1333 | resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" 1334 | integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== 1335 | dependencies: 1336 | mdn-data "2.0.30" 1337 | source-map-js "^1.0.1" 1338 | 1339 | css-tree@~2.2.0: 1340 | version "2.2.1" 1341 | resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" 1342 | integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== 1343 | dependencies: 1344 | mdn-data "2.0.28" 1345 | source-map-js "^1.0.1" 1346 | 1347 | css-what@^6.1.0: 1348 | version "6.1.0" 1349 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" 1350 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 1351 | 1352 | csso@^5.0.5: 1353 | version "5.0.5" 1354 | resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" 1355 | integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== 1356 | dependencies: 1357 | css-tree "~2.2.0" 1358 | 1359 | csstype@^3.0.2: 1360 | version "3.1.3" 1361 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" 1362 | integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== 1363 | 1364 | debug@^4.1.0, debug@^4.3.1: 1365 | version "4.4.0" 1366 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 1367 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 1368 | dependencies: 1369 | ms "^2.1.3" 1370 | 1371 | detect-libc@^1.0.3: 1372 | version "1.0.3" 1373 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 1374 | integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== 1375 | 1376 | detect-libc@^2.0.1: 1377 | version "2.0.3" 1378 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" 1379 | integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== 1380 | 1381 | detect-libc@^2.0.3: 1382 | version "2.0.4" 1383 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" 1384 | integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== 1385 | 1386 | dom-serializer@^2.0.0: 1387 | version "2.0.0" 1388 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 1389 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 1390 | dependencies: 1391 | domelementtype "^2.3.0" 1392 | domhandler "^5.0.2" 1393 | entities "^4.2.0" 1394 | 1395 | domelementtype@^2.3.0: 1396 | version "2.3.0" 1397 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" 1398 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== 1399 | 1400 | domhandler@^5.0.2, domhandler@^5.0.3: 1401 | version "5.0.3" 1402 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 1403 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 1404 | dependencies: 1405 | domelementtype "^2.3.0" 1406 | 1407 | domutils@^3.0.1, domutils@^3.1.0: 1408 | version "3.2.1" 1409 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.1.tgz#b39f4c390a1ae6f6a2c56a5f5a16d6438b6bce28" 1410 | integrity sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw== 1411 | dependencies: 1412 | dom-serializer "^2.0.0" 1413 | domelementtype "^2.3.0" 1414 | domhandler "^5.0.3" 1415 | 1416 | dotenv-expand@^11.0.7: 1417 | version "11.0.7" 1418 | resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" 1419 | integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== 1420 | dependencies: 1421 | dotenv "^16.4.5" 1422 | 1423 | dotenv@^16.4.5: 1424 | version "16.4.7" 1425 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" 1426 | integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== 1427 | 1428 | dotenv@^16.5.0: 1429 | version "16.5.0" 1430 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" 1431 | integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== 1432 | 1433 | electron-to-chromium@^1.5.149: 1434 | version "1.5.155" 1435 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz#809dd0ae9ae1db87c358e0c0c17c09a2ffc432d1" 1436 | integrity sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng== 1437 | 1438 | electron-to-chromium@^1.5.73: 1439 | version "1.5.76" 1440 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" 1441 | integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== 1442 | 1443 | encoding-sniffer@^0.2.0: 1444 | version "0.2.0" 1445 | resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" 1446 | integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== 1447 | dependencies: 1448 | iconv-lite "^0.6.3" 1449 | whatwg-encoding "^3.1.1" 1450 | 1451 | entities@^4.2.0, entities@^4.5.0: 1452 | version "4.5.0" 1453 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 1454 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 1455 | 1456 | escalade@^3.2.0: 1457 | version "3.2.0" 1458 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 1459 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 1460 | 1461 | fill-range@^7.1.1: 1462 | version "7.1.1" 1463 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 1464 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1465 | dependencies: 1466 | to-regex-range "^5.0.1" 1467 | 1468 | gensync@^1.0.0-beta.2: 1469 | version "1.0.0-beta.2" 1470 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1471 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1472 | 1473 | get-port@^4.2.0: 1474 | version "4.2.0" 1475 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" 1476 | integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== 1477 | 1478 | globals@^11.1.0: 1479 | version "11.12.0" 1480 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1481 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1482 | 1483 | globals@^13.24.0: 1484 | version "13.24.0" 1485 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" 1486 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== 1487 | dependencies: 1488 | type-fest "^0.20.2" 1489 | 1490 | has-flag@^4.0.0: 1491 | version "4.0.0" 1492 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1493 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1494 | 1495 | htmlparser2@^9.1.0: 1496 | version "9.1.0" 1497 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" 1498 | integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== 1499 | dependencies: 1500 | domelementtype "^2.3.0" 1501 | domhandler "^5.0.3" 1502 | domutils "^3.1.0" 1503 | entities "^4.5.0" 1504 | 1505 | iconv-lite@0.6.3, iconv-lite@^0.6.3: 1506 | version "0.6.3" 1507 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 1508 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1509 | dependencies: 1510 | safer-buffer ">= 2.1.2 < 3.0.0" 1511 | 1512 | is-extglob@^2.1.1: 1513 | version "2.1.1" 1514 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1515 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1516 | 1517 | is-glob@^4.0.3: 1518 | version "4.0.3" 1519 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1520 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1521 | dependencies: 1522 | is-extglob "^2.1.1" 1523 | 1524 | is-number@^7.0.0: 1525 | version "7.0.0" 1526 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1527 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1528 | 1529 | js-tokens@^4.0.0: 1530 | version "4.0.0" 1531 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1532 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1533 | 1534 | jsesc@^3.0.2: 1535 | version "3.1.0" 1536 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" 1537 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== 1538 | 1539 | json5@^2.2.1, json5@^2.2.3: 1540 | version "2.2.3" 1541 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1542 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1543 | 1544 | lightningcss-darwin-arm64@1.30.1: 1545 | version "1.30.1" 1546 | resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae" 1547 | integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ== 1548 | 1549 | lightningcss-darwin-x64@1.30.1: 1550 | version "1.30.1" 1551 | resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22" 1552 | integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA== 1553 | 1554 | lightningcss-freebsd-x64@1.30.1: 1555 | version "1.30.1" 1556 | resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4" 1557 | integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig== 1558 | 1559 | lightningcss-linux-arm-gnueabihf@1.30.1: 1560 | version "1.30.1" 1561 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908" 1562 | integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q== 1563 | 1564 | lightningcss-linux-arm64-gnu@1.30.1: 1565 | version "1.30.1" 1566 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009" 1567 | integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw== 1568 | 1569 | lightningcss-linux-arm64-musl@1.30.1: 1570 | version "1.30.1" 1571 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe" 1572 | integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ== 1573 | 1574 | lightningcss-linux-x64-gnu@1.30.1: 1575 | version "1.30.1" 1576 | resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157" 1577 | integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw== 1578 | 1579 | lightningcss-linux-x64-musl@1.30.1: 1580 | version "1.30.1" 1581 | resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26" 1582 | integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ== 1583 | 1584 | lightningcss-win32-arm64-msvc@1.30.1: 1585 | version "1.30.1" 1586 | resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039" 1587 | integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA== 1588 | 1589 | lightningcss-win32-x64-msvc@1.30.1: 1590 | version "1.30.1" 1591 | resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352" 1592 | integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg== 1593 | 1594 | lightningcss@^1.30.1: 1595 | version "1.30.1" 1596 | resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d" 1597 | integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg== 1598 | dependencies: 1599 | detect-libc "^2.0.3" 1600 | optionalDependencies: 1601 | lightningcss-darwin-arm64 "1.30.1" 1602 | lightningcss-darwin-x64 "1.30.1" 1603 | lightningcss-freebsd-x64 "1.30.1" 1604 | lightningcss-linux-arm-gnueabihf "1.30.1" 1605 | lightningcss-linux-arm64-gnu "1.30.1" 1606 | lightningcss-linux-arm64-musl "1.30.1" 1607 | lightningcss-linux-x64-gnu "1.30.1" 1608 | lightningcss-linux-x64-musl "1.30.1" 1609 | lightningcss-win32-arm64-msvc "1.30.1" 1610 | lightningcss-win32-x64-msvc "1.30.1" 1611 | 1612 | lmdb@2.8.5: 1613 | version "2.8.5" 1614 | resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" 1615 | integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== 1616 | dependencies: 1617 | msgpackr "^1.9.5" 1618 | node-addon-api "^6.1.0" 1619 | node-gyp-build-optional-packages "5.1.1" 1620 | ordered-binary "^1.4.1" 1621 | weak-lru-cache "^1.2.2" 1622 | optionalDependencies: 1623 | "@lmdb/lmdb-darwin-arm64" "2.8.5" 1624 | "@lmdb/lmdb-darwin-x64" "2.8.5" 1625 | "@lmdb/lmdb-linux-arm" "2.8.5" 1626 | "@lmdb/lmdb-linux-arm64" "2.8.5" 1627 | "@lmdb/lmdb-linux-x64" "2.8.5" 1628 | "@lmdb/lmdb-win32-x64" "2.8.5" 1629 | 1630 | lru-cache@^5.1.1: 1631 | version "5.1.1" 1632 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1633 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1634 | dependencies: 1635 | yallist "^3.0.2" 1636 | 1637 | mdn-data@2.0.28: 1638 | version "2.0.28" 1639 | resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" 1640 | integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== 1641 | 1642 | mdn-data@2.0.30: 1643 | version "2.0.30" 1644 | resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" 1645 | integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== 1646 | 1647 | micromatch@^4.0.5: 1648 | version "4.0.8" 1649 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1650 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1651 | dependencies: 1652 | braces "^3.0.3" 1653 | picomatch "^2.3.1" 1654 | 1655 | ms@^2.1.3: 1656 | version "2.1.3" 1657 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1658 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1659 | 1660 | msgpackr-extract@^3.0.2: 1661 | version "3.0.3" 1662 | resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" 1663 | integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== 1664 | dependencies: 1665 | node-gyp-build-optional-packages "5.2.2" 1666 | optionalDependencies: 1667 | "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" 1668 | "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" 1669 | "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" 1670 | "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" 1671 | "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" 1672 | "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" 1673 | 1674 | msgpackr@^1.11.2: 1675 | version "1.11.3" 1676 | resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.3.tgz#db518224044e58074348b8f2dcd6be7a8d873e53" 1677 | integrity sha512-mNdO4s/W54QCghwGNSqO5ULVJ6QUimP/1hRlWVx5f7frTLaClg+4sBRjUTgP1OrBRgVtkH1tI9vi4Dqg/JX3Kg== 1678 | optionalDependencies: 1679 | msgpackr-extract "^3.0.2" 1680 | 1681 | msgpackr@^1.9.5: 1682 | version "1.11.2" 1683 | resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d" 1684 | integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g== 1685 | optionalDependencies: 1686 | msgpackr-extract "^3.0.2" 1687 | 1688 | node-addon-api@^6.1.0: 1689 | version "6.1.0" 1690 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" 1691 | integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== 1692 | 1693 | node-addon-api@^7.0.0: 1694 | version "7.1.1" 1695 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" 1696 | integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== 1697 | 1698 | node-gyp-build-optional-packages@5.1.1: 1699 | version "5.1.1" 1700 | resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" 1701 | integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== 1702 | dependencies: 1703 | detect-libc "^2.0.1" 1704 | 1705 | node-gyp-build-optional-packages@5.2.2: 1706 | version "5.2.2" 1707 | resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" 1708 | integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== 1709 | dependencies: 1710 | detect-libc "^2.0.1" 1711 | 1712 | node-releases@^2.0.19: 1713 | version "2.0.19" 1714 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" 1715 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 1716 | 1717 | nth-check@^2.0.1: 1718 | version "2.1.1" 1719 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" 1720 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== 1721 | dependencies: 1722 | boolbase "^1.0.0" 1723 | 1724 | nullthrows@^1.1.1: 1725 | version "1.1.1" 1726 | resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" 1727 | integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== 1728 | 1729 | ordered-binary@^1.4.1: 1730 | version "1.5.3" 1731 | resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.3.tgz#8bee2aa7a82c3439caeb1e80c272fd4cf51170fb" 1732 | integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA== 1733 | 1734 | parcel@2.15.2: 1735 | version "2.15.2" 1736 | resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.15.2.tgz#bfe8b4450b45242e3f6d61181ef4d2fe41bd5694" 1737 | integrity sha512-+ZFhK66uYSwEju8gd3d1qDrBO9JzUNjySnjVJHm9M2boHVDOJl0ZcMQNHTQD9Oyhcba6sf3yIQecjNK1+UvpWg== 1738 | dependencies: 1739 | "@parcel/config-default" "2.15.2" 1740 | "@parcel/core" "2.15.2" 1741 | "@parcel/diagnostic" "2.15.2" 1742 | "@parcel/events" "2.15.2" 1743 | "@parcel/feature-flags" "2.15.2" 1744 | "@parcel/fs" "2.15.2" 1745 | "@parcel/logger" "2.15.2" 1746 | "@parcel/package-manager" "2.15.2" 1747 | "@parcel/reporter-cli" "2.15.2" 1748 | "@parcel/reporter-dev-server" "2.15.2" 1749 | "@parcel/reporter-tracer" "2.15.2" 1750 | "@parcel/utils" "2.15.2" 1751 | chalk "^4.1.2" 1752 | commander "^12.1.0" 1753 | get-port "^4.2.0" 1754 | 1755 | parse5-htmlparser2-tree-adapter@^7.0.0: 1756 | version "7.1.0" 1757 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" 1758 | integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== 1759 | dependencies: 1760 | domhandler "^5.0.3" 1761 | parse5 "^7.0.0" 1762 | 1763 | parse5-parser-stream@^7.1.2: 1764 | version "7.1.2" 1765 | resolved "https://registry.yarnpkg.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1" 1766 | integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== 1767 | dependencies: 1768 | parse5 "^7.0.0" 1769 | 1770 | parse5@^7.0.0, parse5@^7.1.2: 1771 | version "7.2.1" 1772 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" 1773 | integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== 1774 | dependencies: 1775 | entities "^4.5.0" 1776 | 1777 | picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: 1778 | version "1.1.1" 1779 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 1780 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1781 | 1782 | picomatch@^2.3.1: 1783 | version "2.3.1" 1784 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1785 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1786 | 1787 | postcss-value-parser@^4.2.0: 1788 | version "4.2.0" 1789 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 1790 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 1791 | 1792 | process@0.11.10: 1793 | version "0.11.10" 1794 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1795 | integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 1796 | 1797 | react-refresh@^0.16.0: 1798 | version "0.16.0" 1799 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.16.0.tgz#e7d45625f05c9709466d09348a25d22f79b2ad23" 1800 | integrity sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A== 1801 | 1802 | regenerator-runtime@^0.14.1: 1803 | version "0.14.1" 1804 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" 1805 | integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== 1806 | 1807 | safe-buffer@^5.0.1: 1808 | version "5.2.1" 1809 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1810 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1811 | 1812 | "safer-buffer@>= 2.1.2 < 3.0.0": 1813 | version "2.1.2" 1814 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1815 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1816 | 1817 | scriptex-socials@1.8.0: 1818 | version "1.8.0" 1819 | resolved "https://registry.yarnpkg.com/scriptex-socials/-/scriptex-socials-1.8.0.tgz#91288d6df16ec3f75dde1da472f2af2925c14a12" 1820 | integrity sha512-l/ldo7B3CKDwh63Dubx5s3NQsqOE+CRMGy9wgVoEjAk7pAf8gQNr30LXRK+XKlximI79gvLsRycuMaFvQAMQGw== 1821 | dependencies: 1822 | cheerio "^1.0.0-rc.12" 1823 | commander "^12.0.0" 1824 | svgo "^3.3.2" 1825 | 1826 | semver@^6.3.1: 1827 | version "6.3.1" 1828 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1829 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1830 | 1831 | semver@^7.7.1: 1832 | version "7.7.2" 1833 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" 1834 | integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== 1835 | 1836 | source-map-js@^1.0.1: 1837 | version "1.2.1" 1838 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" 1839 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 1840 | 1841 | supports-color@^7.1.0: 1842 | version "7.2.0" 1843 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1844 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1845 | dependencies: 1846 | has-flag "^4.0.0" 1847 | 1848 | svgo@^3.3.2: 1849 | version "3.3.2" 1850 | resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" 1851 | integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== 1852 | dependencies: 1853 | "@trysound/sax" "0.2.0" 1854 | commander "^7.2.0" 1855 | css-select "^5.1.0" 1856 | css-tree "^2.3.1" 1857 | css-what "^6.1.0" 1858 | csso "^5.0.5" 1859 | picocolors "^1.0.0" 1860 | 1861 | term-size@^2.2.1: 1862 | version "2.2.1" 1863 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" 1864 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 1865 | 1866 | to-regex-range@^5.0.1: 1867 | version "5.0.1" 1868 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1869 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1870 | dependencies: 1871 | is-number "^7.0.0" 1872 | 1873 | tslib@^2.8.0: 1874 | version "2.8.1" 1875 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" 1876 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== 1877 | 1878 | type-fest@^0.20.2: 1879 | version "0.20.2" 1880 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1881 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1882 | 1883 | typescript@5.8.3: 1884 | version "5.8.3" 1885 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" 1886 | integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== 1887 | 1888 | undici@^6.19.5: 1889 | version "6.21.3" 1890 | resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a" 1891 | integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw== 1892 | 1893 | update-browserslist-db@^1.1.1: 1894 | version "1.1.1" 1895 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" 1896 | integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== 1897 | dependencies: 1898 | escalade "^3.2.0" 1899 | picocolors "^1.1.0" 1900 | 1901 | update-browserslist-db@^1.1.3: 1902 | version "1.1.3" 1903 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" 1904 | integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== 1905 | dependencies: 1906 | escalade "^3.2.0" 1907 | picocolors "^1.1.1" 1908 | 1909 | utility-types@^3.11.0: 1910 | version "3.11.0" 1911 | resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" 1912 | integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== 1913 | 1914 | weak-lru-cache@^1.2.2: 1915 | version "1.2.2" 1916 | resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" 1917 | integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== 1918 | 1919 | whatwg-encoding@^3.1.1: 1920 | version "3.1.1" 1921 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" 1922 | integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== 1923 | dependencies: 1924 | iconv-lite "0.6.3" 1925 | 1926 | whatwg-mimetype@^4.0.0: 1927 | version "4.0.0" 1928 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" 1929 | integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== 1930 | 1931 | yallist@^3.0.2: 1932 | version "3.1.1" 1933 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 1934 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 1935 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import globals from 'globals'; 2 | 3 | import react from 'eslint-plugin-react'; 4 | import prettier from 'eslint-config-prettier'; 5 | import reactHooks from 'eslint-plugin-react-hooks'; 6 | import tsEsLint from '@typescript-eslint/eslint-plugin'; 7 | import tsEsLintParser from '@typescript-eslint/parser'; 8 | 9 | export default [ 10 | { 11 | files: [ 12 | 'src/**/*.{ts,tsx}', 13 | 'demo/**/*.{ts,tsx}', 14 | '__tests__/**/*.{ts,tsx}' 15 | ], 16 | languageOptions: { 17 | globals: { 18 | ...globals.browser, 19 | ...globals.node 20 | }, 21 | parser: tsEsLintParser, 22 | parserOptions: { 23 | project: 'tsconfig-lint.json', 24 | sourceType: 'module' 25 | } 26 | }, 27 | plugins: { 28 | react, 29 | prettier, 30 | reactHooks, 31 | tsEsLint 32 | }, 33 | ignores: ['postcss.config.js'], 34 | rules: { 35 | 'no-console': 'error' 36 | }, 37 | settings: { 38 | react: { 39 | version: 'detect' 40 | } 41 | } 42 | } 43 | ]; 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-round-carousel", 3 | "version": "1.5.0", 4 | "description": "An infinitely scrollable 3D carousel component for React", 5 | "keywords": [ 6 | "3D", 7 | "Carousel", 8 | "3D Carousel", 9 | "React Carousel", 10 | "React Component", 11 | "React 3D Carousel", 12 | "React 3D Component" 13 | ], 14 | "homepage": "https://react-round-carousel.atanas.info", 15 | "bugs": { 16 | "url": "https://github.com/scriptex/react-round-carousel/issues", 17 | "email": "hi@atanas.info" 18 | }, 19 | "license": "MIT", 20 | "author": "Atanas Atanasov (https://atanas.info)", 21 | "funding": "https://github.com/sponsors/scriptex", 22 | "main": "dist/index.js", 23 | "style": "dist/index.css", 24 | "types": "dist/index.d.ts", 25 | "repository": { 26 | "type": "git", 27 | "url": "github:scriptex/react-round-carousel" 28 | }, 29 | "scripts": { 30 | "clear": "rm -rf dist", 31 | "css": "postcss src/index.css -o dist/index.css", 32 | "start": "tsc -w", 33 | "build": "yarn clear && yarn css && tsc", 34 | "test": "jest --env jsdom", 35 | "lint": "yarn lint:ts && yarn lint:css", 36 | "lint:ts": "eslint", 37 | "lint:css": "stylelint ./**/*.css", 38 | "prod": "yarn lint && yarn test && yarn build", 39 | "release-minor": "release-it minor --ci", 40 | "release-patch": "release-it patch --ci", 41 | "release-major": "release-it major --ci", 42 | "changelog-local": "npx auto-changelog" 43 | }, 44 | "dependencies": { 45 | "react": "19.1.0", 46 | "react-dom": "19.1.0", 47 | "touchsweep": "2.2.0", 48 | "uuid": "11.1.0" 49 | }, 50 | "devDependencies": { 51 | "@testing-library/dom": "10.4.0", 52 | "@testing-library/react": "16.3.0", 53 | "@types/jest": "29.5.14", 54 | "@types/react": "19.1.6", 55 | "@types/react-dom": "19.1.5", 56 | "@types/uuid": "10.0.0", 57 | "@typescript-eslint/eslint-plugin": "8.33.0", 58 | "@typescript-eslint/parser": "8.33.0", 59 | "autoprefixer": "10.4.21", 60 | "eslint": "9.27.0", 61 | "eslint-config-prettier": "10.1.5", 62 | "eslint-plugin-react": "7.37.5", 63 | "eslint-plugin-react-hooks": "5.2.0", 64 | "jest": "29.7.0", 65 | "jest-environment-jsdom": "29.7.0", 66 | "postcss": "8.5.4", 67 | "postcss-cli": "11.0.1", 68 | "release-it": "19.0.3", 69 | "stylelint": "16.20.0", 70 | "stylelint-config-recommended": "16.0.0", 71 | "ts-jest": "29.3.4", 72 | "typescript": "5.8.3" 73 | }, 74 | "peerDependencies": { 75 | "react": "^16.9.0 || ^17 || ^18 || ^19", 76 | "react-dom": "^16.9.0 || ^17 || ^18 || ^19", 77 | "touchsweep": "^1 || ^2", 78 | "uuid": "^11.0.0" 79 | }, 80 | "jest": { 81 | "moduleFileExtensions": [ 82 | "ts", 83 | "tsx", 84 | "js" 85 | ], 86 | "transform": { 87 | "\\.(ts|tsx)$": "ts-jest" 88 | }, 89 | "testRegex": "/__tests__/.*\\.(ts|tsx|js)$" 90 | }, 91 | "release-it": { 92 | "hooks": { 93 | "after:release": "yarn changelog-local && git add CHANGELOG.md && git commit -m \"Update CHANGELOG.md with the latest changes\" && git push" 94 | }, 95 | "git": { 96 | "changelog": "git log --pretty=format:\"* %s (%h)\" ${from}...${to}", 97 | "requireCleanWorkingDir": true, 98 | "requireBranch": false, 99 | "requireUpstream": false, 100 | "requireCommits": false, 101 | "addUntrackedFiles": false, 102 | "commit": true, 103 | "commitMessage": "Release ${version}", 104 | "commitArgs": [], 105 | "tag": true, 106 | "tagName": null, 107 | "tagAnnotation": "Release ${version}", 108 | "tagArgs": [], 109 | "push": true, 110 | "pushArgs": [ 111 | "--follow-tags" 112 | ], 113 | "pushRepo": "" 114 | }, 115 | "npm": { 116 | "publish": false, 117 | "publishPath": ".", 118 | "tag": null, 119 | "otp": null, 120 | "ignoreVersion": false, 121 | "skipChecks": false, 122 | "timeout": 10 123 | }, 124 | "github": { 125 | "release": false, 126 | "releaseName": "Release ${version}", 127 | "releaseNotes": null, 128 | "preRelease": false, 129 | "draft": false, 130 | "tokenRef": "GITHUB_TOKEN", 131 | "assets": null, 132 | "host": null, 133 | "timeout": 0, 134 | "proxy": null, 135 | "skipChecks": false 136 | }, 137 | "gitlab": { 138 | "release": false, 139 | "releaseName": "Release ${version}", 140 | "releaseNotes": null, 141 | "tokenRef": "GITLAB_TOKEN", 142 | "assets": null, 143 | "origin": null, 144 | "skipChecks": false 145 | } 146 | }, 147 | "browserslist": [ 148 | "> 1%", 149 | "last 2 versions" 150 | ] 151 | } 152 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base", 4 | ":automergePatch", 5 | ":automergeMinor", 6 | ":automergeBranch", 7 | ":disableDependencyDashboard", 8 | "group:allNonMajor" 9 | ], 10 | "travis": { 11 | "enabled": true 12 | }, 13 | "assignees": ["@scriptex"], 14 | "labels": ["dependencies"], 15 | "rebaseWhen": "conflicted", 16 | "vulnerabilityAlerts": { 17 | "labels": ["security"], 18 | "assignees": ["@scriptex"] 19 | }, 20 | "rangeStrategy": "replace", 21 | "major": { 22 | "automerge": false 23 | }, 24 | "schedule": ["* * 16,30 * *"] 25 | } 26 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scriptex/react-round-carousel/542cf8bfa48f4e2f3f67fb42b796b912e06d747a/screenshot.png -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | .carousel { 2 | width: 13.125rem; 3 | height: 13.125rem; 4 | position: relative; 5 | margin: 0 auto; 6 | perspective: 62.5rem; 7 | } 8 | 9 | .carousel__container { 10 | width: 100%; 11 | height: 100%; 12 | position: absolute; 13 | transform-style: preserve-3d; 14 | transition: transform 1s; 15 | } 16 | 17 | .carousel__slide { 18 | position: absolute; 19 | width: 11.875rem; 20 | height: 11.875rem; 21 | left: 0.625rem; 22 | top: 0.625rem; 23 | border: 0.125rem solid; 24 | transition: transform 1s, opacity 1s; 25 | } 26 | 27 | .carousel__slide img { 28 | width: 100%; 29 | height: auto; 30 | display: block; 31 | } 32 | 33 | .carousel__slide-overlay { 34 | color: #fff; 35 | text-align: center; 36 | display: flex; 37 | flex-flow: row wrap; 38 | align-items: center; 39 | justify-content: center; 40 | align-content: center; 41 | position: absolute; 42 | top: 0; 43 | right: 0; 44 | bottom: 0; 45 | left: 0; 46 | opacity: 0; 47 | transition: opacity 0.35s ease-in-out; 48 | background-color: rgba(0, 0, 0, 0.7); 49 | user-select: none; 50 | } 51 | 52 | .carousel__slide-overlay span, 53 | .carousel__slide-overlay strong { 54 | display: block; 55 | flex: 0 0 100%; 56 | } 57 | 58 | .carousel__slide:hover .carousel__slide-overlay { 59 | opacity: 1; 60 | } 61 | 62 | .carousel__controls { 63 | display: flex; 64 | flex-flow: row wrap; 65 | align-items: center; 66 | justify-content: center; 67 | } 68 | 69 | .carousel__control { 70 | font-size: 0; 71 | line-height: 0; 72 | text-indent: -100%; 73 | width: 2.5rem; 74 | height: 2.5rem; 75 | display: block; 76 | position: relative; 77 | border: 1px solid; 78 | margin: 0 2rem; 79 | background: rgba(0, 0, 0, 0.7); 80 | border-radius: 50%; 81 | box-shadow: none; 82 | } 83 | 84 | .carousel__control::before, 85 | .carousel__control::after { 86 | content: ''; 87 | display: block; 88 | position: absolute; 89 | top: 0; 90 | right: 0; 91 | bottom: 0; 92 | left: 0; 93 | margin: auto; 94 | } 95 | 96 | .carousel__control::before { 97 | width: 50%; 98 | height: 1px; 99 | background-color: #fff; 100 | } 101 | 102 | .carousel__control::after { 103 | content: ''; 104 | width: 0.9375rem; 105 | height: 0.9375rem; 106 | display: inline-block; 107 | vertical-align: middle; 108 | border-color: #fff; 109 | border-style: solid; 110 | border-width: 0 0 1px 1px; 111 | margin: auto; 112 | transform: rotate(-135deg); 113 | transform-origin: 50% 50%; 114 | transition: all 0.35s ease-in-out; 115 | } 116 | 117 | .carousel__control--prev::after { 118 | transform: rotate(45deg); 119 | } 120 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import TouchSweep from 'touchsweep'; 2 | import { v4 as uuid } from 'uuid'; 3 | import { 4 | FC, 5 | useRef, 6 | useMemo, 7 | useState, 8 | useEffect, 9 | LegacyRef, 10 | ReactNode, 11 | forwardRef, 12 | useCallback, 13 | CSSProperties, 14 | useImperativeHandle 15 | } from 'react'; 16 | 17 | export type CarouselItem = Readonly<{ 18 | alt?: string; 19 | image: string; 20 | content: ReactNode; 21 | onClick?: () => void; 22 | }>; 23 | 24 | export type DecoratedCarouselItem = CarouselItem & Readonly<{ id: string }>; 25 | 26 | export type CarouselProps = Readonly<{ 27 | ref?: LegacyRef; 28 | items: CarouselItem[]; 29 | itemWidth?: number; 30 | showControls?: boolean; 31 | slideOnClick?: boolean; 32 | classNamePrefix?: string; 33 | nextButtonContent?: string | ReactNode; 34 | prevButtonContent?: string | ReactNode; 35 | }>; 36 | 37 | export type CarouselRef = Readonly<{ 38 | next: () => void; 39 | prev: () => void; 40 | getItems: () => DecoratedCarouselItem[]; 41 | getSelectedIndex: () => number; 42 | setSelectedIndex: (index: number) => void; 43 | }>; 44 | 45 | export const Carousel: FC = forwardRef( 46 | ( 47 | { 48 | items, 49 | itemWidth = 210, 50 | showControls = true, 51 | slideOnClick = false, 52 | classNamePrefix = 'carousel', 53 | prevButtonContent = 'Previous', 54 | nextButtonContent = 'Next' 55 | }: CarouselProps, 56 | CarouselRef 57 | ) => { 58 | const data: DecoratedCarouselItem[] = useMemo( 59 | () => 60 | items.map(item => ({ 61 | ...item, 62 | ...((item as unknown as DecoratedCarouselItem).id 63 | ? ({} as unknown as DecoratedCarouselItem) 64 | : { id: uuid() }) 65 | })), 66 | [items] 67 | ); 68 | 69 | const len = useMemo(() => data.length, [data.length]); 70 | const theta = useMemo(() => 360 / len, [len]); 71 | 72 | const radius = useMemo( 73 | () => Math.round(itemWidth / 2 / Math.tan(Math.PI / len)), 74 | [itemWidth, len] 75 | ); 76 | 77 | const ref = useRef(null); 78 | const [selectedIndex, setSelectedIndex] = useState(0); 79 | 80 | const getSlideStyle = useCallback( 81 | (index: number): CSSProperties => { 82 | const style: CSSProperties = {}; 83 | 84 | if (index < len) { 85 | const cellAngle = theta * index; 86 | 87 | style.opacity = 1; 88 | style.transform = `rotateY(${cellAngle}deg) translateZ(${radius}px)`; 89 | } else { 90 | style.opacity = 0; 91 | style.transform = 'none'; 92 | } 93 | 94 | return style; 95 | }, 96 | [len, radius, theta] 97 | ); 98 | 99 | const getItemStyle = useCallback((): CSSProperties => { 100 | const angle = theta * selectedIndex * -1; 101 | 102 | return { 103 | transform: `translateZ(${-1 * radius}px) rotateY(${angle}deg)` 104 | }; 105 | }, [radius, selectedIndex, theta]); 106 | 107 | const getClassName = useCallback( 108 | (parts: string | string[]) => 109 | Array.isArray(parts) 110 | ? parts 111 | .map((part: string) => `${classNamePrefix}${part}`) 112 | .join(' ') 113 | : `${classNamePrefix}${parts}`, 114 | [classNamePrefix] 115 | ); 116 | 117 | const prev = useCallback( 118 | () => setSelectedIndex(selectedIndex - 1), 119 | [selectedIndex] 120 | ); 121 | 122 | const next = useCallback( 123 | () => setSelectedIndex(selectedIndex + 1), 124 | [selectedIndex] 125 | ); 126 | 127 | useEffect(() => { 128 | const area = ref?.current; 129 | const touchsweep = new TouchSweep(area ?? undefined); 130 | 131 | area?.addEventListener('swipeleft', next); 132 | area?.addEventListener('swiperight', prev); 133 | 134 | return () => { 135 | touchsweep.unbind(); 136 | 137 | area?.removeEventListener('swipeleft', next); 138 | area?.removeEventListener('swiperight', prev); 139 | }; 140 | }); 141 | 142 | useImperativeHandle( 143 | CarouselRef, 144 | (): CarouselRef => ({ 145 | next, 146 | prev, 147 | getItems: () => data, 148 | getSelectedIndex: () => selectedIndex, 149 | setSelectedIndex: (index: number) => setSelectedIndex(index) 150 | }) 151 | ); 152 | 153 | return ( 154 | <> 155 |
156 |
160 | {data.map( 161 | (item: DecoratedCarouselItem, index: number) => ( 162 |
{ 166 | if (item.onClick) item.onClick(); 167 | 168 | if (slideOnClick) 169 | setSelectedIndex(index); 170 | }} 171 | className={getClassName('__slide')} 172 | > 173 | {item.alt} 174 | 175 |
180 | {item.content} 181 |
182 |
183 | ) 184 | )} 185 |
186 |
187 | 188 | {showControls && ( 189 |
190 | 199 | 200 | 209 |
210 | )} 211 | 212 | ); 213 | } 214 | ); 215 | 216 | export default Carousel; 217 | -------------------------------------------------------------------------------- /tsconfig-lint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["demo/**/*", "__tests__/**/*", "src/**/*"], 4 | "exclude": ["node_modules"] 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "alwaysStrict": true, 4 | "allowSyntheticDefaultImports": true, 5 | "allowJs": false, 6 | "baseUrl": "./", 7 | "checkJs": false, 8 | "declaration": true, 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "importHelpers": true, 13 | "jsx": "react-jsx", 14 | "lib": ["dom", "esNext"], 15 | "module": "commonjs", 16 | "moduleResolution": "node", 17 | "noEmit": false, 18 | "noEmitHelpers": true, 19 | "noEmitOnError": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noImplicitAny": true, 22 | "noImplicitReturns": true, 23 | "noImplicitThis": true, 24 | "noStrictGenericChecks": false, 25 | "outDir": "./dist", 26 | "pretty": true, 27 | "removeComments": false, 28 | "skipLibCheck": true, 29 | "strict": true, 30 | "strictBindCallApply": true, 31 | "strictFunctionTypes": true, 32 | "strictPropertyInitialization": true, 33 | "strictNullChecks": true, 34 | "sourceMap": false, 35 | "target": "es5", 36 | "typeRoots": ["node_modules/@types"] 37 | }, 38 | "compileOnSave": true, 39 | "include": ["src/**/*"], 40 | "exclude": ["node_modules"] 41 | } 42 | --------------------------------------------------------------------------------