diff --git a/.eslintrc.js b/.eslintrc.js index df432eb..ff00609 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,14 +1,5 @@ module.exports = { - env: { - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:vue/vue3-recommended", - "prettier", - ], - rules: { - // override/add rules settings here, such as: - // 'vue/no-unused-vars': 'error' - } -} + rules: { + 'no-console': 'off', + }, +}; diff --git a/.gitea/issue_template/ISSUE_TEMPLATE.yml b/.gitea/issue_template/ISSUE_TEMPLATE.yml index 8486a5f..96e6c28 100644 --- a/.gitea/issue_template/ISSUE_TEMPLATE.yml +++ b/.gitea/issue_template/ISSUE_TEMPLATE.yml @@ -26,7 +26,7 @@ body: id: configuration attributes: label: Configuration - description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/docs/FAQ/export-config/)). + description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/tips/#export-the-configuration)). value: | ``` { diff --git a/.gitea/issue_template/QUESTION_TEMPLATE.yml b/.gitea/issue_template/QUESTION_TEMPLATE.yml deleted file mode 100644 index 41301ae..0000000 --- a/.gitea/issue_template/QUESTION_TEMPLATE.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: New question -about: Use this template when you don't know how to do something -title: "[Question] " -labels: - - question -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill information. - - - type: textarea - id: environment - attributes: - label: Environment - value: | - * Custom menu version: - * Nextcloud version: - * PHP version: - * Web server (Nginx, Apache2): - * Web browser and version (Firefox 80, Google Chrome 74, etc): - validations: - required: true - - - type: textarea - id: question - attributes: - label: Question - validations: - required: true diff --git a/.gitea/issue_template/config.yml b/.gitea/issue_template/config.yml deleted file mode 100644 index d065f39..0000000 --- a/.gitea/issue_template/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Documentation - url: https://deblan.gitnet.page/side_menu_doc/ - about: Official documentation web site - - name: Ask a question in our Matrix room - about: If you prefer a chat-like conversation or in need for quick help, this might be an alternative to opening an issue. - url: https://matrix.to/#/#custommenu:neutralnetwork.org diff --git a/.gitignore b/.gitignore index 0b4ab44..d10e458 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ /node_modules /l10n/* /releases +/package-lock.json !/l10n/.gitkeep +/yarn*.log diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index a2065a9..0000000 --- a/.prettierrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "bracketSpacing": true, - "bracketSameLine": false, - "semi": false, - "singleQuote": true, - "singleAttributePerLine": true, - "printWidth": 160 -} diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..34f13eb --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,95 @@ +pipeline: + dependencies: + image: node:16 + pull: true + commands: + - npm i + when: + event: [tag, push, pull_request] + branch: [master, develop, feature/*, fix/*, translations] + + osv-detector: + image: gitnet.fr/deblan/osv-detector:v0.10 + commands: + - osv-detector package-lock.json + failure: ignore + + build-js: + image: node:16 + commands: + - npm run build + when: + branch: [master, develop, feature/*, fix/*, translations] + event: [tag, push, pull_request] + + build-translations: + image: deblan/php:8.0 + commands: + - php bin/generate_l10n.php + when: + branch: [master, develop, feature/*, fix/*, translations] + event: [tag, push, pull_request] + + create-signature: + image: nextcloud:25 + secrets: [app_certificate, app_public_certificate] + environment: + SQLITE_DATABASE: /var/www/data/data.db + NEXTCLOUD_ADMIN_USER: admin + NEXTCLOUD_ADMIN_PASSWORD: admin + commands: + - echo "$APP_CERTIFICATE" > "/tmp/side_menu.key" + - echo "$APP_PUBLIC_CERTIFICATE" > "/tmp/side_menu.crt" + - mkdir /tmp/app + - cp -r README.md CHANGELOG.md appinfo css lib img l10n js src templates screenshots vendor /tmp/app + - /usr/src/nextcloud/occ integrity:sign-app + --privateKey=/tmp/side_menu.key + --certificate=/tmp/side_menu.crt + --path=/tmp/app + - mv /tmp/app/appinfo/signature.json appinfo/ + when: + event: [tag] + + # check-code-quality: + # image: sonarsource/sonar-scanner-cli + # secrets: [sonar_token, sonar_host, sonar_project] + # commands: + # - sonar-scanner + # -Dsonar.projectKey=$SONAR_PROJECT + # -Dsonar.sources=. + # -Dsonar.host.url=$SONAR_HOST + # -Dsonar.pullrequest.key=$CI_COMMIT_PULL_REQUEST + # -Dsonar.pullrequest.branch=$CI_COMMIT_SOURCE_BRANCH + # -Dsonar.pullrequest.base=$CI_COMMIT_TARGET_BRANCH + # failure: ignore + # when: + # event: [pull_request] + + create-package: + image: deblan/php:8.0 + volumes: + - /var/www/html/artifacts:/var/www/html/artifacts + secrets: [app_certificate] + commands: + - apt-get update + - apt-get install -y zip make + - mkdir -p "$HOME/.nextcloud/certificates" + - echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key" + - export VERSION=$(grep "" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never) + - export RELEASE_DIRECTORY="/var/www/html/artifacts/deblan/side_menu" + - make release + when: + event: [tag] + + push-release: + image: plugins/gitea-release + volumes: + - /var/www/html/artifacts:/var/www/html/artifacts + settings: + api_key: + from_secret: gitnet_api_key + base_url: https://gitnet.fr + note: ${CI_COMMIT_MESSAGE} + files: /var/www/html/artifacts/deblan/side_menu/${CI_COMMIT_TAG/v//}/* + when: + event: [tag] diff --git a/.woodpecker/.build.yml b/.woodpecker/.build.yml deleted file mode 100644 index 38526c5..0000000 --- a/.woodpecker/.build.yml +++ /dev/null @@ -1,22 +0,0 @@ -variables: - volumes: &volumes - - /data/${CI_REPO}:/builds - -when: - event: [tag, push, pull_request, manual] - branch: [master, develop, feature/*, fix/*, bugfix/*, translations] - -steps: - "Build JS": - image: node:20 - commands: - - make build - - "Build translations": - image: deblan/php:8.3 - commands: - - php bin/generate_l10n.php - - "Build cache": - image: gitnet.fr/deblan/woodpecker-cache - volumes: *volumes diff --git a/.woodpecker/.publish.yml b/.woodpecker/.publish.yml deleted file mode 100644 index ac39564..0000000 --- a/.woodpecker/.publish.yml +++ /dev/null @@ -1,66 +0,0 @@ -variables: - volumes: &volumes - - /data/${CI_REPO}:/builds - - /var/www/html/artifacts:/var/www/html/artifacts - -depends_on: - - build - -when: - event: [tag] - -steps: - "Verify tag and app version": - image: alpine - commands: - - TAG=${CI_COMMIT_TAG/v//} - - grep "$TAG" appinfo/info.xml - - "Create signature": - image: nextcloud:25 - volumes: *volumes - environment: - APP_CERTIFICATE: - from_secret: app_certificate - APP_PUBLIC_CERTIFICATE: - from_secret: app_public_certificate - SQLITE_DATABASE: /var/www/data/data.db - NEXTCLOUD_ADMIN_USER: admin - NEXTCLOUD_ADMIN_PASSWORD: admin - commands: - - cd "/builds/$CI_COMMIT_SHA" - - echo "$APP_CERTIFICATE" > "/tmp/side_menu.key" - - echo "$APP_PUBLIC_CERTIFICATE" > "/tmp/side_menu.crt" - - mkdir /tmp/app - - cp -r README.md CHANGELOG.md appinfo lib img l10n js src templates screenshots vendor /tmp/app - - /usr/src/nextcloud/occ integrity:sign-app - --privateKey=/tmp/side_menu.key - --certificate=/tmp/side_menu.crt - --path=/tmp/app - - mv /tmp/app/appinfo/signature.json appinfo/ - - "Create package": - image: deblan/php:8.3 - volumes: *volumes - environment: - APP_CERTIFICATE: - from_secret: app_certificate - commands: - - cd "/builds/$CI_COMMIT_SHA" - - apt-get update - - apt-get install -y zip make - - mkdir -p "$HOME/.nextcloud/certificates" - - echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key" - - export VERSION=$(grep "" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never) - - export RELEASE_DIRECTORY="/var/www/html/artifacts/deblan/side_menu" - - make release - - "Push release": - image: plugins/gitea-release - volumes: *volumes - settings: - api_key: - from_secret: gitnet_api_key - base_url: https://gitnet.fr - # note: ${CI_COMMIT_MESSAGE} - files: /var/www/html/artifacts/deblan/side_menu/${CI_COMMIT_TAG/v//}/* diff --git a/.woodpecker/.security.yml b/.woodpecker/.security.yml deleted file mode 100644 index 50612c6..0000000 --- a/.woodpecker/.security.yml +++ /dev/null @@ -1,17 +0,0 @@ -variables: - volumes: &volumes - - /data/${CI_REPO}:/builds - -depends_on: - - build - -skip_clone: true - -steps: - "Check dependencies": - image: gitnet.fr/deblan/osv-detector:v0.10 - volumes: *volumes - commands: - - cd "/builds/$CI_COMMIT_SHA" - - osv-detector package-lock.json - failure: ignore diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae875d..d59a7d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,182 +1,5 @@ ## [Unreleased] -## 5.2.2 -### Fixed -* fix #464: add Intl.Segmenter polyfill -### Added -* add new translations - -## 5.2.1 -### Added -* chore: set side_menu as package name -### Fixed -* fix(LangRepository): check orm capabilities to query entities -* fix(admin/\*SaveButton): cast settings to string - -## 5.2.0 -### Added -* add compatibility with NC33 -### Fixed -* fix #468: force nextcloud logo display css rule (opener-only) - -## 5.1.3 -### Fixed -* fix #445: fix build by adding package-lock.json - -## 5.1.2 -### Added -* add new translations -### Fixed -* fix #441: Side bar not working with Nextcloud 32 (thanks to AndyXheli) - -## 5.1.1 -### Fixed -* fix(build): define appName to fix this error: "The `@nextcloud/vue` library was used without setting / replacing the `appName`" -* fix #349: add custom controller to retrieve core apps - -## 5.1.0 -### Added -* fix #425: allow to set a color using hex code -### Fixed -* #422: usage of `OC\AppFramework\Http\Request` instead of `$_SERVER` - -## 5.0.3 -### Fixed -* fix #422: undefined array key "HTTP_USER_AGENT" - -## 5.0.2 -### Fixed -* fix #413: add user-agent check for memories mobile app -* fix #418: allow non admin user to access their settings - -## 5.0.1 -### Fixed -* fix(StandardMenu): appLimit must return a value > 0 - -## 5.0.0 -### Fixed -* fix apps's order in the standard menu -### Added -* add new translations -* add route `/apps/side_menu/user/config` -* add new UI for admin and personals settings -### Changed -* migrate to Vue 3 and so add/update or remove dependencies -* replace CSS with SCSS -* remove route `/apps/side_menu/js/script` -* remove generated Javascript using PHP -* rewrite the standard menu of Nextcloud -### Security -* fix CVE-2023-44270 -* fix CVE-2024-9506 -* fix CVE-2024-6783 - -## 4.1.1 -### Fixed -* fix(CssController): add missing NoCSRFRequired import (#397) -* fix(SideMenu): ncApps must be an array (#369) - -## 4.1.0 -### Added -* add compatibility with NC31 -### Fixed -* fix(service): add service constructor arguments -* fix(settings): remove non-existing and unused ILogger service -### Changed -* refactor(controller): usage of attributes instead of annotations - -## 4.0.1 -### Fixed -* fix top menu labels (fix #368) -* fix #369: The menu is displayed even if there are no apps - -## 4.0.0 -### Added -* add compatibility with NC30 - -## 3.13.1 -### Fixed -* fix #354: remove the opener when the menu is always displayed -* fix extra margin between the logo and the opener - -## 3.13.0 -### Added -* show apps generated with Tables (fix #349) -* add constructor property promotion -### Fixed -* remove .app-navigation--close translationX for always-displayed menu (fix #348) - -## 3.12.0 -### Added -* add compatibility with NC29 - -## 3.11.8 -### Fixed -* move the logo inside #nextcloud element (fix #278 #239) [NC26] - -## 3.11.7 -### Added -* update translations -* update ci steps names -* fully apply Nextcloud AppMenu.vue updates -### Fixed -* add accessibility to open and close buttons (#311) -* add missing label on the 'save' button in personal settings (fix #318) -### Changed -* upgrade axios -* upgrade css-loader - -## 3.11.6 -### Fixed -* add --background-invert-if-bright in top menu (fix #326) - -## 3.11.5 -### Fixed -* add missing label on buttons for accessiblity (fix #311) - -## 3.11.4 -### Fixed -* add label on buttons for accessiblity (fix #311) - -## 3.11.3 -### Fixed -* fix menu icon in decks, collectives and other apps (#302) - -## 3.11.2 -### Fixed -* add default translations for Slovak - fix #298 - -## 3.11.1 -### Added -* add Portuguese (Brazil) translations - Thanks to igorfreire -### Fixed -* add width to .side-menu-categories for side menu with categories display - fix #294 - -## 3.11.0 -### Added -* add a search component in menus - fix #282 -### Fixed -* remove the label of the link to personal settings - fix #283 - -## 3.10.3 -### Fixed -* change the way to load nextcloud components (NcActionLink/NcActions) - fix #274 -* update @nexcloud/* packages - -## 3.10.2 -### Fixed -* add missing properties - -## 3.10.1 -### Fixed -* fix #269: use php7 syntax - -## 3.10.0 -### Added -* add compatibility with NC28 -### Fixed -* fix NC28 error: remove deprecated method `OC_App::getNavigation()` - ## 3.9.1 ### Fixed * fix fixed menu on dashboard (#262) @@ -226,7 +49,7 @@ ## 3.5.1 ### Added -* add translations (thanks to p-bo and gallegonovato) +* add translations (thanks to p-bo adn gallegonovato) ### Fixed * fix #189: sorting not applied on mobile @@ -355,323 +178,323 @@ ## 2.3.2 ### Fixed -* fix hidden menu +- fix hidden menu ## 2.3.1 ### Fixed -* fix #88: does not work with default menu +- fix #88: does not work with default menu ## 2.3.0 ### Added -* fix #82: add an option to keep visible an app in both menus -* fix #83: add custom categories -* add auto-reload when settings are saved +- fix #82: add an option to keep visible an app in both menus +- fix #83: add custom categories +- add auto-reload when settings are saved ## 2.2.0 ### Added -* fix #84: update icons -* fix #85: use Nextcloud colors by default +- fix #84: update icons +- fix #85: use Nextcloud colors by default ### Fixed -* fix categories order in large menu +- fix categories order in large menu ## 2.1.0 ### Added -* add compatibility with Nextcloud 23 +- add compatibility with Nextcloud 23 ## 2.0.1 ### Fixed -* fix #78: Top menu is broken - invisible apps are shown -* fix #77: Update personal settings - HTTP error 412 (Precondition Failed) -* fix js error on the personal settings page (undefined sortable) +- fix #78: Top menu is broken - invisible apps are shown +- fix #77: Update personal settings - HTTP error 412 (Precondition Failed) +- fix js error on the personal settings page (undefined sortable) ## 2.0.0 ### Fixed -* fix #66: removing usage of setInterval -* fix #73: icon background +- fix #66: removing usage of setInterval +- fix #73: icon background ### Changed -* fix #67: replace jQuery with Vanilla JS +- fix #67: replace jQuery with Vanilla JS ### Removed -* Nextcloud 18 is not supported anymore +- Nextcloud 18 is not supported anymore ## 1.28.0 ### Added -* fix #63: add a new side menu with categories +- fix #63: add a new side menu with categories ## 1.27.2 ### Fixed -* fix #62: hide app notification icon +- fix #62: hide app notification icon ## 1.27.1 ### Fixed -* fix German translation render +- fix German translation render ## 1.27.0 ### Added -* hide personal settings access when settings are forced by the administrator +- hide personal settings access when settings are forced by the administrator ### Fixed -* improve German translations +- improve German translations ## 1.26.0 ### Added -* add Czech translation +- add Czech translation ## 1.25.2 ### Fixed -* fix CHANGELOG +- fix CHANGELOG ## 1.25.1 ### Added -* add PHP version as dependency -* add chinese translation +- add PHP version as dependency +- add chinese translation ### Fixed -* fix CHANGELOG +- fix CHANGELOG ## 1.25.0 ### Added -* add compatibility with Nextcloud 22 -* add CHANGELOG.md (fix #59) -* update app icon +- add compatibility with Nextcloud 22 +- add CHANGELOG.md (fix #59) +- update app icon ## 1.24.0 ### Added -* add option to define the background opacity (fix #53) -* add missing translations +- add option to define the background opacity (fix #53) +- add missing translations ## 1.23.1 ### Fixed -* fix but wih dark mode opener option +- fix but wih dark mode opener option ## 1.23.0 ### Added -* add support of dark Theme and Breeze Dark -* add support of Nextcloud 21 +- add support of dark Theme and Breeze Dark +- add support of Nextcloud 21 ## 1.22.2 ### Fixed -* fix regression: apps does not open in new tab (fix #55) +- fix regression: apps does not open in new tab (fix #55) ## 1.22.1 ### Fixed -* fix regression: apps does not open in new tab +- fix regression: apps does not open in new tab ## 1.22.0 ### Added -* Add option to sort categories (fix #53) -* Update admin UI +- Add option to sort categories (fix #53) +- Update admin UI ## 1.21.0 ### Added -* [FEATURE] Logo in the menu links to main page of installation (#51) +- [FEATURE] Logo in the menu links to main page of installation (#51) ## 1.20.1 ### Fixed -* Fix translations +- Fix translations ## 1.20.0 ### Added -* [FEATURE] Ability to remove apps from the Big Menu (#49) +- [FEATURE] Ability to remove apps from the Big Menu (#49) ## 1.19.1 ### Fixed -* fix #47: setting for list/grid view in files app flashes and dissapears +- fix #47: setting for list/grid view in files app flashes and dissapears ## 1.19.0 ### Added -* add option: the menu is enabled by default for users (fix #46) +- add option: the menu is enabled by default for users (fix #46) ## 1.18.0 ### Added -* add option to show link to settings (fix #44) -* refactor menus using several components +- add option to show link to settings (fix #44) +- refactor menus using several components ## 1.17.0 ### Added -* compliance with the app checker -* add an action to export the configuration -* add an action to purge the cache +- compliance with the app checker +- add an action to export the configuration +- add an action to purge the cache ## 1.16.3 ### Fixed -* fix links that must be opened in new window (https://help.nextcloud.com/t/external-petit-probleme-concernant-lapplication-external-sites-ou-sites-externes/94884/11) +- fix links that must be opened in new window (https://help.nextcloud.com/t/external-petit-probleme-concernant-lapplication-external-sites-ou-sites-externes/94884/11) ## 1.16.2 ### Fixed -* fix issue with personal settings when global settings are forced +- fix issue with personal settings when global settings are forced ## 1.16.1 ### Fixed -* fix #42: add cache to manage failures to access apps.nextcloud.com -* fix #41: side menu was hover apps list +- fix #42: add cache to manage failures to access apps.nextcloud.com +- fix #41: side menu was hover apps list ## 1.16.0 ### Added -* add an option to force settings to users (fix #38) +- add an option to force settings to users (fix #38) ## 1.15.0 ### Changed -* New name +- New name ### Fixed -* Fix #36: always displayed is not expanding +- Fix #36: always displayed is not expanding ## 1.14.0 ### Added -* add an api accessed by components -* add a config proxy in controllers +- add an api accessed by components +- add a config proxy in controllers ### Fixed -* fix translations +- fix translations ## 1.13.0 ### Added -* add an option to display the avatar instead of the logo (fix #34) +- add an option to display the avatar instead of the logo (fix #34) ## 1.12.3 ### Added -* add a delay before moving elements (fix #33) +- add a delay before moving elements (fix #33) ## 1.12.2 ### Fixed -* fix #30: `Always displayed` menu can not be close using touchscreens +- fix #30: `Always displayed` menu can not be close using touchscreens ## 1.12.1 ### Fixed -* fix typo -* fix translations +- fix typo +- fix translations ## 1.12.0 ### Fixed -* fix #30: administrators and users can select what apps must be opened in new tab -* fix typo +- fix #30: administrators and users can select what apps must be opened in new tab +- fix typo ## 1.11.0 ### Added -* add the option for opening apps in new tab (fix #29) +- add the option for opening apps in new tab (fix #29) ### Fixed -* fix issue with the header of the always displayed menu +- fix issue with the header of the always displayed menu ## 1.10.0 ### Added -* add images to select the display of the menu -* add live preview -* update translations -* update app info +- add images to select the display of the menu +- add live preview +- update translations +- update app info ## 1.9.3 ### Fixed -* fix regression with logo display +- fix regression with logo display ## 1.9.2 ### Added -* add the option “always displayed” which fixes the position of the menu to the left and always displays the application icons (fix #21, fix #2) +- add the option “always displayed” which fixes the position of the menu to the left and always displays the application icons (fix #21, fix #2) ## 1.8.6 ### Added -* add translations: `fr` and `de` -* improve and publish the `Makefile` -* update documentation +- add translations: `fr` and `de` +- improve and publish the `Makefile` +- update documentation ## 1.8.5 ### Fixed -* fix #28: menu items invisible after 1.8.4 +- fix #28: menu items invisible after 1.8.4 ## 1.8.4 ### Fixed -* fix #27: disable side menu on public pages - broken in 1.8.3 +- fix #27: disable side menu on public pages - broken in 1.8.3 ## 1.8.3 ### Fixed -* fix alphabetic order of apps (#26) +- fix alphabetic order of apps (#26) ## 1.8.2 ### Added -* add icon for closing the big menu (fix #25) +- add icon for closing the big menu (fix #25) ### Fixed -* fix hidden icons in the top menu (fix #23) -* fix missing apps (fix #24) +- fix hidden icons in the top menu (fix #23) +- fix missing apps (fix #24) ## 1.8.1 ### Fixed -* fix issue with links -* fix missing l10n files +- fix issue with links +- fix missing l10n files ## 1.8.0 ### Added -* add a `big menu` display (fix #22) -* add the possibility to choose what apps are displayed in the top menu (fix #22) -* add icon color filter -* add icon opacity filter +- add a `big menu` display (fix #22) +- add the possibility to choose what apps are displayed in the top menu (fix #22) +- add icon color filter +- add icon opacity filter ## 1.8.0-rc2 ## 1.7.0 ### Added -* add a loader when the page is unloading -* add compatibility with Nextcloud 19 +- add a loader when the page is unloading +- add compatibility with Nextcloud 19 ## 1.6.3 ### Fixed -* fix #20: add a shortcut to open and to hide the menu +- fix #20: add a shortcut to open and to hide the menu ## 1.6.2 ### Fixed -* fix #19: add a cache to limit flashes +- fix #19: add a cache to limit flashes ## 1.6.1 ### Fixed -* fix #19: add a hack to show external sites in the top menu with navigation +- fix #19: add a hack to show external sites in the top menu with navigation ## 1.6.0 ### Added -* Add a page of personal settings -* Add an option to disable the side menu as user -* Refactoring of javascripts +- Add a page of personal settings +- Add an option to disable the side menu as user +- Refactoring of javascripts ## 1.5.0 ### Added -* add option to force light icons instead of dark icons +- add option to force light icons instead of dark icons ### Fixed -* fix #19: add option to keep external sites in the top menu -* fix #16 #17: add dark icons and handle the svg filters +- fix #19: add option to keep external sites in the top menu +- fix #16 #17: add dark icons and handle the svg filters ## 1.4.1 ### Added -* Rendering harmonization with browsers +- Rendering harmonization with browsers ### Fixed -* FIX #15: make menu start after icon +- FIX #15: make menu start after icon ## 1.4.0 ### Fixed -* Fix #12: add an option to hide the opener and the panel when there is no application +- Fix #12: add an option to hide the opener and the panel when there is no application ## 1.3.4 ### Fixed -* FIX #14: add option to show only the opener -* FIX #13: add alternate hamburger icon -* FIX #11: remove error in the console +- FIX #14: add option to show only the opener +- FIX #13: add alternate hamburger icon +- FIX #11: remove error in the console ## 1.3.3 ### Added -* Add a second background color to create a background gradiant -* Update documentation +- Add a second background color to create a background gradiant +- Update documentation ### Fixed -* FIX #10: add options to select the size of the icons and the text, or hide them +- FIX #10: add options to select the size of the icons and the text, or hide them ## 1.3.2 ### Fixed -* FIX #9: opener icon not visible with multiple apps_paths +- FIX #9: opener icon not visible with multiple apps_paths ## 1.3.1 ### Fixed -* FIX #3: Add an opition the choose the position of the opener (after or before the logo) -* FIX #8: Remove extension of dynamic asset's routes (js, css) +- FIX #3: Add an opition the choose the position of the opener (after or before the logo) +- FIX #8: Remove extension of dynamic asset's routes (js, css) ## 1.3.0 ### Added -* `main.js` is replaced by a controller and a template +- `main.js` is replaced by a controller and a template ### Fixed -* FIX #2: add option to open the menu by hovering over opener +- FIX #2: add option to open the menu by hovering over opener ## 1.2.4 ### Fixed -* FIX #7: Opener icon not visible in Safari +- FIX #7: Opener icon not visible in Safari diff --git a/Makefile b/Makefile index 883cccb..e5b6267 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ watch: dep dep: npm i + npm link @nextcloud/vue || sudo npm link @nextcloud/vue .ONESHELL: release: @@ -20,7 +21,7 @@ release: test -d $$RELEASE_DIRECTORY/$$VERSION && rm -fr $$RELEASE_DIRECTORY/$$VERSION mkdir -p $$RELEASE_DIRECTORY/$$VERSION/side_menu - cp -r README.md CHANGELOG.md appinfo lib img l10n js src templates screenshots vendor $$RELEASE_DIRECTORY/$$VERSION/side_menu + cp -r README.md CHANGELOG.md appinfo css lib img l10n js src templates screenshots vendor $$RELEASE_DIRECTORY/$$VERSION/side_menu cd $$RELEASE_DIRECTORY/$$VERSION zip -r side_menu_v$$VERSION.zip side_menu tar cvzf side_menu_v$$VERSION.tar.gz side_menu diff --git a/README.md b/README.md index 3cb739f..bf8abbb 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,8 @@ You like this app and you want to support me? ☕ [Buy me a coffee](https://www. Requirements ------------ -* PHP >= 8.1 +* PHP >= 8.0 +* App `theming` enabled Installation and upgrade ------------------------ @@ -40,7 +41,7 @@ If you want to install it from source, go to https://gitnet.fr/deblan/side_menu/ ``` $ cd /path/to/nextcloud/apps -$ VERSION=x.y.z; curl -sS "https://gitnet.fr/deblan/side_menu/releases/download/${VERSION}/side_menu_v${VERSION}.tar.gz" | tar xvfz - +$ curl -sS https://gitnet.fr/attachments/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | tar xvfz - ``` Administrators can edit many settings using the administration page. diff --git a/appinfo/info.xml b/appinfo/info.xml index d7af92a..4acf6f4 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -1,5 +1,6 @@ - - + + side_menu Custom menu Modify the display of the menu. @@ -10,13 +11,14 @@ This application is rather suitable for instances that activate a lot of applica Use the shortcut `Ctrl`+`o` to open and to hide the side menu. Use `tab` to navigate. -You can customize colors depending of the theme. +You can customize colors depending of the theme (Dark theme and Breeze Dark). -To report a bug or request a feature, please open an issue. +You can report a bug or request a feature by opening an issue. Requirements: -* PHP >= 8.1 +* PHP >= 8.0 +* App `theming` enabled If you like this application and if you want to support the development: @@ -30,9 +32,9 @@ Notice Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**. In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/). ]]> - 5.2.2 + 3.9.1 agpl - Simon Vieille + Simon Vieille SideMenu https://deblan.gitnet.page/side_menu_doc/ @@ -40,20 +42,20 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de customization https://gitnet.fr/deblan/side_menu - + https://matrix.to/#/!TFPucDATKODpHNVAtu:neutralnetwork.org?via=neutralnetwork.org https://gitnet.fr/deblan/side_menu/issues https://gitnet.fr/deblan/side_menu - - - - - - - - + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc19_default_menu.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/admin_settings.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/n19_big_menu.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc18_menu_always_displayed.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png + https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png - - + + OCA\SideMenu\Settings\Admin diff --git a/src/lib/app.js b/appinfo/routes.php similarity index 50% rename from src/lib/app.js rename to appinfo/routes.php index bf012e0..bdc3fba 100644 --- a/src/lib/app.js +++ b/appinfo/routes.php @@ -1,3 +1,5 @@ +. */ -import { loadState } from '@nextcloud/initial-state' - -const getActiveAppId = () => { - const apps = loadState('core', 'apps', {}) - - for (let id in apps) { - if (apps[id].active) { - return apps[id].id - } - } - - return null -} - -export { getActiveAppId } +return [ + 'routes' => [ + ['name' => 'App#index', 'url' => '/', 'verb' => 'GET'], + ['name' => 'Css#stylesheet', 'url' => '/css/stylesheet', 'verb' => 'GET'], + ['name' => 'Js#script', 'url' => '/js/script', 'verb' => 'GET'], + ['name' => 'Js#config', 'url' => '/js/config', 'verb' => 'GET'], + ['name' => 'Nav#items', 'url' => '/nav/items', 'verb' => 'GET'], + ['name' => 'PersonalSetting#valueSet', 'url' => '/personalSetting/valueSet', 'verb' => 'POST'], + ['name' => 'AdminSetting#removeCache', 'url' => '/admin/cache/remove', 'verb' => 'GET'], + ['name' => 'AdminSetting#exportConfiguration', 'url' => '/admin/config/export', 'verb' => 'GET'], + ], +]; diff --git a/bin/generate_l10n.php b/bin/generate_l10n.php index 146afad..e8e666b 100644 --- a/bin/generate_l10n.php +++ b/bin/generate_l10n.php @@ -31,7 +31,6 @@ function generateJsonContent($translations) chdir(__DIR__.'/../'); foreach (glob('src/l10n/fixtures/*.yaml') as $file) { - echo "$file\n"; $lang = str_replace('.yaml', '', basename($file)); $translations = yaml_parse(file_get_contents($file)); diff --git a/bin/import_config.php b/bin/import_config.php index db5857d..f2fbd14 100644 --- a/bin/import_config.php +++ b/bin/import_config.php @@ -1,75 +1,21 @@ prepare('UPDATE oc_appconfig SET configvalue=:value WHERE configkey=:key and appid=:appId'); -function value(string $shortName, string $longName, array $options, bool $required = true): ?string -{ - $value = $options[$shortName] ?? $options[$longName] ?? null; - - if (is_array($value)) { - echo "To much --{$longName}\n"; - showUsageAndExit(1); - } - - if (empty($value) && $required) { - echo "--{$longName} is missing\n"; - showUsageAndExit(1); - } - - return $value; -} - -$options = getopt('t:f:c:h', [ - 'type:', - 'file:', - 'config:', - 'help', -]); - -$help = value('h', 'help', $options, false); -$config = value('c', 'config', $options); -$file = value('f', 'file', $options); - -if (!is_readable($config) && !is_file($config)) { - echo "No such file: {$config}\n"; - - exit(1); -} - -if (!is_readable($file) && !is_file($file)) { - echo "No such file: {$file}\n"; - - exit(1); -} - -$appConfig = json_decode(file_get_contents($file), true); - -require $config; - -if ('mysql' === $CONFIG['dbtype']) { - $pdo = new \PDO( - 'mysql:host='.$CONFIG['dbhost'].';dbname='.$CONFIG['dbname'], - $CONFIG['dbuser'], - $CONFIG['dbpassword'] - ); -} elseif ($CONFIG['dbtype']) { - $pdo = new \PDO(sprintf('sqlite:%s', $CONFIG['datadirectory'].'/owncloud.db')); -} else { - echo "dbtype is not valid\n"; - - exit(1); -} - -$stmt = $pdo->prepare('UPDATE '.$CONFIG['dbtableprefix'].'appconfig SET configvalue=:value WHERE configkey=:key and appid=:appId'); - -foreach ($appConfig as $key => $value) { +foreach ($config as $key => $value) { $stmt->execute([ 'appId' => 'side_menu', 'key' => $key, diff --git a/css/admin.css b/css/admin.css new file mode 100644 index 0000000..b3d0b7c --- /dev/null +++ b/css/admin.css @@ -0,0 +1,220 @@ +/** + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#side-menu-section input[type="color"] { + width: 100px; + margin: 10px 0 10px 0; + padding: 0; + border-radius: 0; +} + +#-dropside-menu-section input[type="checkbox"] { + vertical-align: middle; +} + +#side-menu-section input[type="range"] { + vertical-align: middle; +} + +#side-menu-section select { + margin: 10px 0 10px 0; +} + +.keyboard-key { + padding: 1px 9px; + margin: 0 2px; + background: #eee; + border: 1px solid #aaa; + color: #555; + border-radius: 3px; +} + +.side-menu-display { + padding: 10px; + border: 2px solid transparent; + max-width: 100%; + cursor: pointer; +} + +.side-menu-display.is-active { + border: 2px solid #91cb7f; +} + +.info { + margin-top: 8px; + padding: 5px; + background: #91cb7f; + color: #fff; + border-radius: var(--border-radius); +} + +#side-menu-section h2 small { + font-size: 11px; + font-weight: normal; +} + +.side-menu-toggler { + cursor: pointer; +} + +.side-menu-setting-list { + margin: 10px 4px 4px 0px; + border: 2px solid var(--color-border-dark); + border-radius: 15px; +} + +.side-menu-setting-list-item { + padding: 5px 10px; + border-bottom: 1px solid var(--color-border-dark); + max-width: 300px; + margin: -1px 0 0 0; + cursor: pointer; + line-height: 32px; +} + +.side-menu-setting-list-item:last-child { + border-bottom: 0; +} + +.side-menu-setting-list-drop { + background: yellow; + border-color: yellow; + height: 34px; +} + +.side-menu-setting.arrow { + color: #ccc; + padding-right: 5px; +} + +.side-menu-setting-list-item input { + margin-top: 0; + height: 21px !important; + min-height: auto !important; +} + +#apps-categories-custom-list select { + width: 100%; +} + +.side-menu-setting-table { + display: table; + width: 100%; +} + +.side-menu-setting-row { + display: table; + margin-bottom: 10px; +} + +.side-menu-setting-row code { + margin-left: 2px; + margin-bottom: 1px; + padding: 3px 10px; + border-radius: 5px; + display: inline-block; + right: 2px; + border: 1px solid var(--color-border-dark); +} + +.side-menu-setting-label { + display: table-cell; + width: 430px; + padding-right: 20px; +} + +.side-menu-setting-label--top { + vertical-align: top; +} + +.side-menu-setting-form { + display: table-cell; + min-width: 300px; +} + +.side-menu-setting-label-short { + width: 300px; +} + +.side-menu-setting-form-long { + width: 400px; +} + +#side-menu-save-progress { + display: inline-block; + width: 0; + height: 15px; + background: #fff; +} + +.btn-reset { + display: inline-block; + cursor: pointer; + position: relative; + top: -8px; + left: 5px; + transition-duration: 0.8s; + transition-property: transform; + transform: rotate(360deg); +} + +.btn-reset--down { + top: 2px; +} + +.btn-reset--progress { + transform: rotate(-359deg); +} + +.badges { + margin-bottom: 14px; + margin-top: 4px; +} + +.badge { + border-width: 1px; + padding: 2px 8px; + margin-right: 2px; + margin-bottom: 5px; + display: inline-block; + border-radius: 4px; + font-size: 13px; +} + +.badge-1 { + background: #d4ce14; + border-color: #cad413; + color: #373a05; +} + +.badge-2 { + background: #96d47f; + border-color: #7ed49b; + color: #333; +} + +.badge-3 { + background: #d4540a; + border-color: #d4700c; + color: #fff; +} + +.badge-4 { + background: #9d81d4; + border-color: #c681d4; + color: #fff; +} diff --git a/css/sideMenu.css b/css/sideMenu.css new file mode 100644 index 0000000..7fc71a2 --- /dev/null +++ b/css/sideMenu.css @@ -0,0 +1,347 @@ +/** + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#side-menu { + position: fixed; + top: 0; + left: 0; + height: 100vh; + width: 100%; + max-width: 290px; + background: linear-gradient(90deg, var(--side-menu-background-color, #333) 0%, var(--side-menu-background-color-to, #333) 100%); + z-index: 3000; + color: var(--side-menu-text-color, #fff); + box-shadow: rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px, rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px; + display: none; +} + +#side-menu a { + transition: 0.2s; +} + +#side-menu.open { + display: block; +} + +#header .side-menu-opener { + margin-left: 0px; + margin-top: -1px; +} + +.side-menu-settings { + margin-right: 9px; + margin-top: 2px; + float: right; + line-height: 34px; + height: 28px; + display: none; +} + +.side-menu-settings a { + color: var(--side-menu-text-color, #fff); + display: block; + padding: 4px 7px; +} + +.side-menu-settings:hover a, .side-menu-settings a:active, .side-menu-settings a:focus { + background: var(--side-menu-current-app-background-color, #444); +} + +.side-menu-settings img { + vertical-align: bottom; + margin-left: 3px; + width: 32px; + height: 32px; +} + +#side-menu.open .side-menu-settings { + display: block; +} + +.side-menu-opener { + background: var(--side-menu-opener, url('../img/side-menu-opener.svg')); + background-color: transparent !important; + height: 40px !important; + width: 40px !important; + border-radius: 0 !important; + border: 0 !important; + padding-right: 12px !important; + padding-left: 12px !important; + margin-left: 5px !important; + margin-left: 3px !important; +} + +.side-menu-opener:active, .side-menu-opener:focus { + background-color: var(--side-menu-current-app-background-color, #444) !important; +} + +.side-menu-closer { + background: url('../img/side-menu-opener-closer.svg'); + display: none; +} + +#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide, #side-menu.hide { + display: none !important; +} + +.side-menu-apps-list { + height: calc(100vh - 150px); + z-index: 2200; + position: fixed; + top: 150px; + width: 100%; + max-width: 290px; + overflow: auto; +} + +.side-menu-app-icon { + width: 20px; + vertical-align: middle; + margin-top: -4px; + margin-right: 10px; + filter: invert(var(--side-menu-icon-invert-filter, 0%)); + opacity: var(--side-menu-icon-opacity, 1); +} + +.side-menu-app a { + line-height: 30px; + color: var(--side-menu-text-color, #fff); + display: block; + padding: 7px 0 5px 15px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.side-menu-app a:hover, .side-menu-app.active, .side-menu-app a:focus { + background: var(--side-menu-current-app-background-color, #444); +} + +.side-menu-logo { + text-align: center; +} + +.side-menu-logo img { + max-width: 60%; + max-height: 100px; +} + +.enu-header { + height: 150px; + width: 100%; + z-index: 2300; + max-width: 290px; + position: fixed; + padding-top: 2px; + top: 0; +} + +#side-menu.side-menu-with-categories .side-menu-header { + max-width: 295px; +} + +#side-menu.hide-opener .side-menu-logo { + margin-top: 20px; +} + +#side-menu-loader { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 3001; +} + +#side-menu-loader-bar { + height: 4px; + background: var(--side-menu-loader-color, #0e75ac); + width: 0; + transition-property: width; +} + +#side-menu.side-menu-big, #side-menu.side-menu-with-categories { + max-width: 100%; + height: auto; +} + +.side-menu-big .side-menu-header, .side-menu-with-categories .side-menu-header { + height: auto; +} + +.side-menu-big .side-menu-apps-list, .side-menu-with-categories .side-menu-apps-list { + height: auto; + position: static; + max-width: 100vw; + overflow: auto; +} + +.side-menu-big .side-menu-app a, .side-menu-with-categories .side-menu-app a { + padding: 7px 0 7px 7px; +} + +.side-menu-categories-wrapper { + padding-bottom: 70px; +} + +.side-menu-categories { + max-height: calc(100vh - 55px); + overflow: auto; + position: relative; + top: 5px; + display: flex; + flex-wrap: wrap; + justify-content: center; + padding: 0 10% 0 10%; +} + +.side-menu-category { + padding: 10px 20px; + flex: 1 1 auto; +} + +.side-menu-category-title { + padding-left: 10px; + color: var(--side-menu-text-color, #fff); +} + +.side-menu-loader { + text-align: center; +} + +.side-menu-loader svg { + width: 38px; + margin: auto; + stroke: var(--side-menu-text-color, #fff); +} + +.side-menu-with-categories .side-menu-app-icon, .side-menu-big .side-menu-app-icon { + vertical-align: middle; + margin-top: -2px; +} + +.side-menu-always-displayed body { + width: calc(100% - 50px) !important; + position: absolute; + left: 50px; +} + +.side-menu-always-displayed #header { + position: absolute !important; +} + +.side-menu-always-displayed #side-menu { + display: block; +} + +.side-menu-always-displayed .side-menu-apps-list { + height: 100vh; + top: 0; + overflow: hidden; +} + +.side-menu-always-displayed .side-menu-apps-list--with-settings { + height: calc(100vh - 49px); + top: 49px; +} + +.side-menu-always-displayed .side-menu-apps-list:hover { + overflow: auto; +} + +.side-menu-always-displayed #side-menu, +.side-menu-always-displayed .side-menu-header, +.side-menu-always-displayed .side-menu-apps-list { + width: 50px; +} + +.side-menu-always-displayed #side-menu .side-menu-app-text, +.side-menu-always-displayed #header .side-menu-opener, +.side-menu-always-displayed .side-menu-logo { + display: none; +} + +.side-menu-always-displayed #side-menu .side-menu-header { + height: 49px; +} + +.side-menu-always-displayed #side-menu.open, +.side-menu-always-displayed #side-menu.open .side-menu-apps-list, +.side-menu-always-displayed #side-menu.open .side-menu-header { + width: 100%; +} + +.side-menu-always-displayed #side-menu.open .side-menu-app-text { + display: inline; +} + +.side-menu-always-displayed .app-navigation--close { + transform: translateX(calc(-100% + 50px)) !important; +} + +#side-menu.side-menu-with-categories { + max-width: 290px; + height: 100vh; +} + +.side-menu-with-categories .side-menu-categories { + display: block; + padding: 0; +} + +.side-menu-with-categories .side-menu-category { + padding: 10px 0; +} + +.side-menu-always-displayed #body-settings, #body-settings.body-settings-side-menu { + overflow-x: visible; +} + +.app-menu { + visibility: hidden; +} + +.app-menu.show { + visibility: visible; +} + +@media screen and (max-width: 1024px) { + #side-menu.side-menu-big { + max-width: 290px; + height: 100vh; + } + + .side-menu-categories { + display: block; + padding: 0; + } + + .side-menu-category { + padding: 10px 0; + } +} + +@media screen and (min-width: 1024px) { + .side-menu-closer { + display: block; + float: right; + margin-right: 9px; + } + + .side-menu-big .side-menu-header { + max-width: 100%; + } +} diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 0f73c70..b812fd7 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -2,25 +2,17 @@ namespace OCA\SideMenu\AppInfo; -use OC\AllConfig; -use OC\App\AppStore\Fetcher\CategoryFetcher; -use OC\AppFramework\Http\Request; +use OC; use OC\Security\CSP\ContentSecurityPolicyNonceManager; use OC\User\User; use OCA\SideMenu\Service\AppRepository; use OCA\SideMenu\Service\CategoryRepository; -use OCA\SideMenu\Service\Color; use OCA\SideMenu\Service\ConfigProxy; -use OCA\Theming\ThemingDefaults; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; -use OCP\EventDispatcher\IEventDispatcher; -use OCP\IConfig; -use OCP\INavigationManager; use OCP\IUserSession; -use OCP\L10N\IFactory; use OCP\Util; use Psr\Container\ContainerInterface; @@ -32,75 +24,33 @@ use Psr\Container\ContainerInterface; class Application extends App implements IBootstrap { public const APP_ID = 'side_menu'; + public const APP_NAME = 'Custom menu'; + /** + * @var OC\AllConfig + */ + protected $config; - protected AllConfig $config; - protected ContentSecurityPolicyNonceManager $cspnm; - protected Request $request; - protected ?User $user = null; + /** + * @var ContentSecurityPolicyNonceManager + */ + protected $cspnm; + /** + * @var User + */ + protected $user; + + /** + * {@inheritdoc} + */ public function __construct(array $urlParams = []) { parent::__construct(self::APP_ID, $urlParams); } - public function register(IRegistrationContext $context): void - { - $context->registerService(CategoryRepository::class, function (ContainerInterface $c) { - return new CategoryRepository( - $c->get(CategoryFetcher::class), - $c->get(ConfigProxy::class), - $c->get(IConfig::class), - $c->get(IFactory::class), - $c->get(IUserSession::class) - ); - }); - - $context->registerService(AppRepository::class, function (ContainerInterface $c) { - return new AppRepository( - $c->get(\OC_App::class), - $c->get(INavigationManager::class), - $c->get(IFactory::class), - $c->get(ConfigProxy::class), - $c->get(CategoryRepository::class), - $c->get(IEventDispatcher::class), - $c->get(IUserSession::class) - ); - }); - - $context->registerService(ConfigProxy::class, function (ContainerInterface $c) { - return new ConfigProxy( - $c->get(IConfig::class), - ); - }); - - $context->registerService(Color::class, function (ContainerInterface $c) { - return new Color( - $c->get(ThemingDefaults::class), - ); - }); - } - - public function boot(IBootContext $context): void - { - $this->config = \OC::$server->getConfig(); - $this->cspnm = \OC::$server->getContentSecurityPolicyNonceManager(); - $this->user = \OC::$server[IUserSession::class]->getUser(); - $this->request = \OC::$server->getRequest(); - - if (!$this->isEnabled()) { - return; - } - - $this->addAssets(); - } - protected function isEnabled(): bool { - if (isset($this->request->server['HTTP_USER_AGENT']) && preg_match('/MemoriesNative/', $this->request->server['HTTP_USER_AGENT'])) { - return false; - } - $enabled = true; $isForced = (bool) $this->config->getAppValue(self::APP_ID, 'force', '0'); @@ -122,7 +72,8 @@ class Application extends App implements IBootstrap protected function addAssets() { - Util::addScript(self::APP_ID, 'side_menu-menu'); + Util::addScript(self::APP_ID, 'sideMenu'); + Util::addStyle(self::APP_ID, 'sideMenu'); $assets = [ 'stylesheet' => [ @@ -133,19 +84,51 @@ class Application extends App implements IBootstrap 'rel' => 'stylesheet', ], ], + 'script' => [ + 'route' => 'side_menu.Js.script', + 'type' => 'script', + 'route_attr' => 'src', + 'attr' => [ + 'nonce' => $this->cspnm->getNonce(), + ], + ], ]; $cache = $this->config->getAppValue(self::APP_ID, 'cache', '0'); foreach ($assets as $value) { - $route = \OC::$server->getURLGenerator()->linkToRoute( - $value['route'], - ['v' => $cache] - ); - + $route = OC::$server->getURLGenerator()->linkToRoute($value['route'], ['v' => $cache]); $value['attr'][$value['route_attr']] = $route; Util::addHeader($value['type'], $value['attr'], ''); } } + + public function register(IRegistrationContext $context): void + { + $context->registerService('AppRepository', function () { + return new AppRepository(); + }); + + $context->registerService('CategoryRepository', function () { + return new CategoryRepository(); + }); + + $context->registerService('ConfigProxy', function () { + return new ConfigProxy(); + }); + } + + public function boot(IBootContext $context): void + { + $this->config = OC::$server->getConfig(); + $this->cspnm = OC::$server->getContentSecurityPolicyNonceManager(); + $this->user = OC::$server[IUserSession::class]->getUser(); + + if (!$this->isEnabled()) { + return; + } + + $this->addAssets(); + } } diff --git a/lib/Controller/AdminSettingController.php b/lib/Controller/AdminSettingController.php index e9ba8f9..aa11d9a 100644 --- a/lib/Controller/AdminSettingController.php +++ b/lib/Controller/AdminSettingController.php @@ -1,5 +1,4 @@ config = $config; + $this->urlGenerator = $urlGenerator; } - #[NoCSRFRequired] - #[FrontpageRoute(verb: 'GET', url: '/admin/cache/remove')] - public function removeCache(): RedirectResponse + /** + * @NoCSRFRequired + * + * @return RedirectResponse + */ + public function removeCache() { $this->config->setAppValue(Application::APP_ID, 'cache-categories', '[]'); @@ -58,16 +61,18 @@ class AdminSettingController extends Controller ]).'#more'); } - #[NoCSRFRequired] - #[FrontpageRoute(verb: 'GET', url: '/admin/config/export')] - public function exportConfiguration(): DataDownloadResponse + /** + * @NoCSRFRequired + * + * @return Response + */ + public function exportConfiguration() { $keys = $this->config->getAppKeys(Application::APP_ID); $appConfig = []; $excludedKeys = [ 'cache', 'cache-categories', - 'langs', ]; foreach ($keys as $key) { @@ -84,135 +89,4 @@ class AdminSettingController extends Controller 'text/json' ); } - - #[NoCSRFRequired] - #[FrontpageRoute(verb: 'GET', url: '/admin/config')] - public function configuration(): JSONResponse - { - $keys = $this->config->getAppKeys(Application::APP_ID); - $booleans = [ - 'opener-only', - 'opener-hover', - 'display-logo', - 'use-avatar', - 'add-logo-link', - 'show-settings', - 'loader-enabled', - 'always-displayed', - 'enabled', - 'force', - 'big-menu', - 'external-sites-in-top-menu', - 'force-light-icon', - 'side-with-categories', - 'default-enabled', - ]; - - $arrays = [ - 'apps-categories-custom', - 'big-menu-hidden-apps', - 'apps-order', - 'categories-custom', - 'categories-order', - 'target-blank-apps', - 'top-menu-apps', - 'top-side-menu-apps', - ]; - - $integers = [ - 'background-color-opacity', - 'dark-mode-background-color-opacity', - 'dark-mode-icon-invert-filter', - 'dark-mode-icon-opacity', - 'icon-invert-filter', - 'icon-opacity', - 'target-blank-mode', - 'top-menu-mouse-over-hidden-label', - ]; - - $defaults = [ - 'opener-only' => '0', - 'opener-hover' => '0', - 'display-logo' => '1', - 'use-avatar' => '0', - 'add-logo-link' => '1', - 'show-settings' => '0', - 'loader-enabled' => '1', - 'always-displayed' => '0', - 'enabled' => '1', - 'force' => '0', - 'big-menu' => '0', - 'external-sites-in-top-menu' => '0', - 'force-light-icon' => '0', - 'side-with-categories' => '0', - 'cache' => '1', - 'default-enabled' => '1', - - 'apps-categories-custom' => '[]', - 'big-menu-hidden-apps' => '[]', - 'apps-order' => '[]', - 'categories-custom' => '[]', - 'categories-order' => '[]', - 'target-blank-apps' => '[]', - 'top-menu-apps' => '[]', - 'top-side-menu-apps' => '[]', - 'cache-categories' => '[]', - - 'background-color-opacity' => '100', - 'dark-mode-background-color-opacity' => '100', - 'dark-mode-icon-invert-filter' => '0', - 'dark-mode-icon-opacity' => '100', - 'icon-invert-filter' => '0', - 'icon-opacity' => '100', - 'top-menu-mouse-over-hidden-label' => '0', - - 'opener' => 'side-menu-opener', - 'dark-mode-opener' => 'side-menu-opener', - 'size-icon' => 'normal', - 'size-text' => 'normal', - 'opener-position' => 'before', - - 'background-color' => $this->color->getPrimaryColor(), - 'background-color-to' => $this->color->getLightenPrimaryColor(), - 'current-app-background-color' => $this->color->getDarkenPrimaryColor(), - 'text-color' => $this->color->getTextColorPrimary(), - 'loader-color' => $this->color->getLightenPrimaryColor(), - - 'dark-mode-background-color' => $this->color->getDarkenPrimaryColor(), - 'dark-mode-background-color-to' => $this->color->getDarkenPrimaryColor(), - 'dark-mode-current-app-background-color' => $this->color->getDarkenPrimaryColor2(), - 'dark-mode-text-color' => $this->color->getTextColorPrimary(), - 'dark-mode-loader-color' => $this->color->getLightenPrimaryColor(), - - 'categories-order-type' => 'default', - ]; - - $config = []; - - foreach ($keys as $key) { - if (!isset($defaults[$key])) { - continue; - } - - if (in_array($key, $booleans)) { - $config[$key] = $this->configProxy->getAppValueBool($key, $defaults[$key]); - } elseif (in_array($key, $arrays)) { - $config[$key] = $this->configProxy->getAppValueArray($key, $defaults[$key]); - } elseif (in_array($key, $integers)) { - $config[$key] = $this->configProxy->getAppValueInt($key, $defaults[$key]); - } else { - $config[$key] = $this->configProxy->getAppValue($key, $defaults[$key]); - } - } - - foreach ($defaults as $key => $default) { - if (!array_key_exists($key, $config)) { - $config[$key] = $default; - } - } - - $config['langs'] = $this->langRepository->getUsedLangs(); - - return new JSONResponse($config); - } } diff --git a/lib/Controller/AppController.php b/lib/Controller/AppController.php index 6bc2e98..588911f 100644 --- a/lib/Controller/AppController.php +++ b/lib/Controller/AppController.php @@ -1,5 +1,4 @@ appRepository = $appRepository; + $this->urlGenerator = $urlGenerator; + $this->config = $config; } - #[NoCSRFRequired] - #[NoAdminRequired] - #[FrontpageRoute(verb: 'GET', url: '/')] + /** + * @NoAdminRequired + * @NoCSRFRequired + */ public function index(): RedirectResponse { - $user = \OC::$server[IUserSession::class]->getUser(); + $user = OC::$server[IUserSession::class]->getUser(); $topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]'); $hiddenApps = $this->config->getAppValueArray('big-menu-hidden-apps', '[]'); $isForced = $this->config->getAppValueBool('force', '0'); @@ -75,7 +87,7 @@ class AppController extends Controller protected function redirectToApp($app, bool $isHref = false): RedirectResponse { if (!$isHref) { - $isIgnoreFrontController = true === \OC::$server->getConfig()->getSystemValue( + $isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue( 'htaccess.IgnoreFrontController', false ); diff --git a/lib/Controller/CoreController.php b/lib/Controller/CoreController.php deleted file mode 100644 index 9302ef3..0000000 --- a/lib/Controller/CoreController.php +++ /dev/null @@ -1,74 +0,0 @@ -. - */ - -namespace OCA\SideMenu\Controller; - -use OCA\SideMenu\Service\AppRepository; -use OCA\SideMenu\Service\ConfigProxy; -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http\Attribute\FrontpageRoute; -use OCP\AppFramework\Http\Attribute\NoAdminRequired; -use OCP\AppFramework\Http\Attribute\NoCSRFRequired; -use OCP\AppFramework\Http\Attribute\PublicPage; -use OCP\AppFramework\Http\JSONResponse; -use OCP\IRequest; -use OCP\IUserSession; - -class CoreController extends Controller -{ - public function __construct( - string $appName, - IRequest $request, - protected ConfigProxy $config, - protected AppRepository $appRepository, - ) { - parent::__construct($appName, $request); - } - - #[NoCSRFRequired] - #[NoAdminRequired] - #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/core/apps')] - public function items(): JSONResponse - { - $user = \OC::$server[IUserSession::class]->getUser(); - $items = []; - - if (!$user) { - return new JSONResponse([ - 'items' => $items, - ]); - } - - $apps = $this->appRepository->getOrderedApps($user); - $keys = ['id', 'name', 'category', 'href', 'icon']; - - foreach ($apps as &$app) { - foreach ($app as $key => $value) { - if (!in_array($key, $keys)) { - unset($app[$key]); - } - } - } - - return new JSONResponse([ - 'items' => $apps, - ]); - } -} diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index 6822563..06f7ae8 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -1,5 +1,4 @@ user = \OC::$server[IUserSession::class]->getUser(); + $this->user = OC::$server[IUserSession::class]->getUser(); + $this->config = $config; + $this->theming = $theming; + $this->color = $color; } - #[NoCSRFRequired] - #[NoAdminRequired] - #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/css/stylesheet')] - public function stylesheet(): TemplateResponse + /** + * @NoAdminRequired + * @NoCSRFRequired + * @PublicPage + * + * @return Response + */ + public function stylesheet() { $response = new TemplateResponse(Application::APP_ID, 'css/stylesheet', $this->getConfig(), 'blank'); $response->addHeader('Content-Type', 'text/css'); @@ -66,6 +88,10 @@ class CssController extends Controller $topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]'); $topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]'); + $isAccessibilityAppEnabled = $this->config->getAppValueBool('enabled', '0', 'accessibility'); + $isBreezeDarkAppEnabled = $this->config->getAppValueBool('enabled', '0', 'breezedark'); + $isBreezeDarkGlobalEnabled = $this->config->getAppValueBool('theme_enabled', '0', 'breezedark'); + if ($this->user) { $userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]'); $userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]'); @@ -77,62 +103,81 @@ class CssController extends Controller if (!empty($userTopSideMenuApps) && !$isForced) { $topSideMenuApps = $userTopSideMenuApps; } + + $isDarkThemeUserEnabled = 'dark' === $this->config->getUserValue($this->user, 'theme', '', 'accessibility'); + $isBreezeDarkUserEnabled = $this->config->getUserValue($this->user, 'theme_enabled', '', 'breezedark'); + + $isBreezeDarkUserEnabled = '1' === $isBreezeDarkUserEnabled || + ($isBreezeDarkGlobalEnabled && '' === $isBreezeDarkUserEnabled); + } else { + $isDarkThemeUserEnabled = false; + $isBreezeDarkUserEnabled = false; } - $lightenPrimaryColor = $this->color->getLightenPrimaryColor(); - $darkenPrimaryColor = $this->color->getDarkenPrimaryColor(); - $darkenPrimaryColor2 = $this->color->getDarkenPrimaryColor2(); - $textColor = $this->color->getTextColorPrimary(); + $isDarkMode = ($isAccessibilityAppEnabled && $isDarkThemeUserEnabled) || + ($isBreezeDarkAppEnabled && $isBreezeDarkUserEnabled); - $backgroundColor = $this->config->getAppValue('background-color', $darkenPrimaryColor); - $backgroundColorTo = $this->config->getAppValue('background-color-to', $darkenPrimaryColor); - $opacity = $this->config->getAppValueInt('background-color-opacity', '100'); - $backgroundOpacity = dechex($opacity * 255 / 100); + $primaryColor = $this->theming->getColorPrimary(); + $lightenPrimaryColor = $this->color->adjustBrightness($primaryColor, 0.2); + $darkenPrimaryColor = $this->color->adjustBrightness($primaryColor, -0.2); + $darkenPrimaryColor2 = $this->color->adjustBrightness($primaryColor, -0.3); + $textColor = $this->theming->getTextColorPrimary(); + + if ($isDarkMode) { + $backgroundColor = $this->config->getAppValue('dark-mode-background-color', $darkenPrimaryColor); + $backgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor); + $currentAppBackgroundColor = $this->config->getAppValue( + 'dark-mode-current-app-background-color', + $darkenPrimaryColor2 + ); + $loaderColor = $this->config->getAppValue('dark-mode-loader-color', $lightenPrimaryColor); + $textColor = $this->config->getAppValue('dark-mode-text-color', $textColor); + $iconInvertFilter = abs($this->config->getAppValueInt('dark-mode-icon-invert-filter', '0')).'%'; + $iconOpacity = abs($this->config->getAppValueInt('dark-mode-icon-opacity', '100') / 100); + $opener = $this->config->getAppValue('dark-mode-opener', 'side-menu-opener'); + + $opacity = $this->config->getAppValueInt('dark-mode-background-color-opacity', '100'); + $backgroundOpacity = dechex($opacity * 255 / 100); + } else { + $backgroundColor = $this->config->getAppValue('background-color', $darkenPrimaryColor); + $backgroundColorTo = $this->config->getAppValue('background-color-to', $darkenPrimaryColor); + $currentAppBackgroundColor = $this->config->getAppValue( + 'current-app-background-color', + $darkenPrimaryColor2 + ); + $loaderColor = $this->config->getAppValue('loader-color', $lightenPrimaryColor); + $textColor = $this->config->getAppValue('text-color', $textColor); + $iconInvertFilter = abs($this->config->getAppValueInt('icon-invert-filter', '0')).'%'; + $iconOpacity = abs($this->config->getAppValueInt('icon-opacity', '100') / 100); + $opener = $this->config->getAppValue('opener', 'side-menu-opener'); + + $opacity = $this->config->getAppValueInt('background-color-opacity', '100'); + $backgroundOpacity = dechex($opacity * 255 / 100); + } $backgroundColor .= $backgroundOpacity; $backgroundColorTo .= $backgroundOpacity; - $darkBackgroundColor = $this->config->getAppValue('dark-mode-background-color', $darkenPrimaryColor); - $darkBackgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor); - $darkOpacity = $this->config->getAppValueInt('dark-mode-background-color-opacity', '100'); - $darkBackgroundOpacity = dechex($opacity * 255 / 100); - - $darkBackgroundColor .= $darkBackgroundOpacity; - $darkBackgroundColorTo .= $darkBackgroundOpacity; - return [ 'vars' => [ - 'light' => [ - 'background-color' => $backgroundColor, - 'background-color-to' => $backgroundColorTo, - 'current-app-background-color' => $this->config->getAppValue( - 'current-app-background-color', - $darkenPrimaryColor2 - ), - 'loader-color' => $this->config->getAppValue('loader-color', $lightenPrimaryColor), - 'text-color' => $this->config->getAppValue('text-color', $textColor), - 'opener' => $this->config->getAppValue('opener', 'side-menu-opener'), - 'icon-invert-filter' => abs($this->config->getAppValueInt('icon-invert-filter', '0')).'%', - 'icon-opacity' => abs($this->config->getAppValueInt('icon-opacity', '100') / 100), - ], - 'dark' => [ - 'background-color' => $darkBackgroundColor, - 'background-color-to' => $darkBackgroundColorTo, - 'current-app-background-color' => $this->config->getAppValue( - 'dark-mode-current-app-background-color', - $darkenPrimaryColor2 - ), - 'loader-color' => $this->config->getAppValue('dark-mode-loader-color', $lightenPrimaryColor), - 'text-color' => $this->config->getAppValue('dark-mode-text-color', $textColor), - 'opener' => $this->config->getAppValue('dark-mode-opener', 'side-menu-opener'), - 'icon-invert-filter' => abs($this->config->getAppValueInt('dark-mode-icon-invert-filter', '0')).'%', - 'icon-opacity' => abs($this->config->getAppValueInt('dark-mode-icon-opacity', '100') / 100), - ] + 'background-color' => $backgroundColor, + 'background-color-to' => $backgroundColorTo, + 'current-app-background-color' => $currentAppBackgroundColor, + 'loader-color' => $loaderColor, + 'text-color' => $textColor, + 'opener' => $opener, + 'icon-invert-filter' => $iconInvertFilter, + 'icon-opacity' => $iconOpacity, ], + 'display-logo' => $this->config->getAppValueBool('display-logo', '1'), 'opener-only' => $this->config->getAppValueBool('opener-only', '0'), + 'external-sites-in-top-menu' => $this->config->getAppValueBool('external-sites-in-top-menu', '0'), 'size-icon' => $this->config->getAppValue('size-icon', 'normal'), 'size-text' => $this->config->getAppValue('size-text', 'normal'), 'always-displayed' => $this->config->getAppValueBool('always-displayed', '0'), + 'big-menu' => $this->config->getAppValueBool('big-menu', '0'), + 'top-menu-apps' => $topMenuApps, + 'top-side-menu-apps' => $topSideMenuApps, ]; } } diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 302de3d..13d803e 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -1,5 +1,4 @@ user = $this->userSession->getUser(); + + $this->themingDefaults = $themingDefaults; + + $this->user = OC::$server[IUserSession::class]->getUser(); + $this->config = $config; + $this->l10nFactory = $l10nFactory; } - #[NoCSRFRequired] - #[NoAdminRequired] - #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/js/config')] + /** + * @NoAdminRequired + * @NoCSRFRequired + * @PublicPage + */ + public function script(): TemplateResponse + { + $response = new TemplateResponse(Application::APP_ID, 'js/script', $this->getConfig(), 'blank'); + $response->addHeader('Content-Type', 'text/javascript'); + + return $response; + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + * @PublicPage + */ public function config(): JSONResponse { return new JSONResponse($this->getConfig()); @@ -99,25 +127,25 @@ class JsController extends Controller $targetBlankApps = $userTargetBlankApps; } - $isAvatarSet = $this->avatarManager->getAvatar($this->user->getUID())->exists(); + $isAvatarSet = OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); if ($useAvatar && $isAvatarSet) { - $avatar = $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [ - 'userId' => $this->user->getUID(), + $avatar = OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUid(), 'size' => 128, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), ]); } if ($this->config->getAppValueBool('show-settings', '0')) { - $settingsNav = $this->navigationManager->getAll('settings'); + $settingsNav = OC::$server->getNavigationManager()->getAll('settings'); if (isset($settingsNav['settings'])) { $settings = [ 'href' => $settingsNav['settings']['href'], 'name' => $settingsNav['settings']['name'], - 'avatar' => $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [ - 'userId' => $this->user->getUID(), + 'avatar' => OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUid(), 'size' => 32, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), ]), @@ -126,15 +154,13 @@ class JsController extends Controller } } - $indexUrl = $this->urlGenerator->linkTo('', 'index.php'); + $indexUrl = OC::$server->getURLGenerator()->linkTo('', 'index.php'); return [ 'opener-position' => $this->config->getAppValue('opener-position', 'before'), 'opener-hover' => $this->config->getAppValueBool('opener-hover', '0'), 'external-sites-in-top-menu' => $this->config->getAppValueBool('external-sites-in-top-menu', '0'), 'force-light-icon' => $this->config->getAppValueBool('force-light-icon', '0'), - 'display-logo' => $this->config->getAppValueBool('display-logo', '1'), - 'use-avatar' => $this->config->getAppValueBool('use-avatar', '0'), 'hide-when-no-apps' => $this->config->getAppValueBool('hide-when-no-apps', '0'), 'loader-enabled' => $this->config->getAppValueBool('loader-enabled', '1'), 'always-displayed' => $this->config->getAppValueBool('always-displayed', '0'), diff --git a/lib/Controller/NavController.php b/lib/Controller/NavController.php index 23540df..50efc4c 100644 --- a/lib/Controller/NavController.php +++ b/lib/Controller/NavController.php @@ -1,5 +1,4 @@ config = $config; + $this->appRepository = $appRepository; + $this->categoryRepository = $categoryRepository; + $this->l10nFactory = $l10nFactory; + $this->router = $router; } - #[NoCSRFRequired] - #[NoAdminRequired] - #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/nav/items')] - public function items(): JSONResponse + /** + * @NoAdminRequired + * @NoCSRFRequired + * @PublicPage + * + * @return JSONResponse + */ + public function items() { - $user = \OC::$server[IUserSession::class]->getUser(); + $user = OC::$server[IUserSession::class]->getUser(); $items = []; if (!$user) { @@ -115,7 +146,6 @@ class NavController extends Controller $appsCategories[$app['id']][] = $category; $items[$category]['apps'][$app['id']] = [ - 'id' => $app['id'], 'name' => $app['name'], 'href' => $app['href'], 'icon' => $app['icon'], @@ -159,11 +189,11 @@ class NavController extends Controller usort($items, function ($a, $b) use ($categoriesLabels) { foreach ($categoriesLabels as $key => $value) { - if ('other' === $a['categoryId']) { + if ($a['categoryId'] === 'other') { return -1; } - if ('other' === $b['categoryId']) { + if ($b['categoryId'] === 'other') { return 1; } diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index 285f89c..fc30c35 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -1,5 +1,4 @@ config = $config; + $this->configProxy = $configProxy; + $this->userSession = $userSession; } - #[NoCSRFRequired] - #[NoAdminRequired] - #[FrontpageRoute(verb: 'POST', url: '/user/valueSet')] - public function valueSet($name, $value): array + /** + * @NoAdminRequired + * @NoCSRFRequired + * + * @param mixed $name + * @param mixed $value + * + * @return Response + */ + public function valueSet($name, $value) { $doSave = false; $user = $this->userSession->getUser(); @@ -66,7 +87,22 @@ class PersonalSettingController extends Controller } } - if (in_array($name, ['target-blank-apps', 'top-menu-apps', 'top-side-menu-apps', 'apps-order'])) { + if ('target-blank-apps' === $name) { + $doSave = true; + $data = json_decode($value, true); + + if (!is_array($data)) { + $doSave = false; + } else { + foreach ($data as $v) { + if (!is_string($v)) { + $doSave = false; + } + } + } + } + + if (in_array($name, ['top-menu-apps', 'top-side-menu-apps', 'apps-order'])) { $doSave = true; $data = json_decode($value, true); @@ -96,63 +132,4 @@ class PersonalSettingController extends Controller return []; } - - #[NoCSRFRequired] - #[NoAdminRequired] - #[FrontpageRoute(verb: 'GET', url: '/user/config')] - public function configuration(): JSONResponse - { - $user = $this->userSession->getUser(); - $keys = $this->config->getUserKeys($user->getUid(), Application::APP_ID); - - $booleans = [ - 'enabled', - ]; - - $arrays = [ - 'apps-order', - 'target-blank-apps', - 'top-menu-apps', - 'top-side-menu-apps', - ]; - - $integers = [ - 'target-blank-mode', - ]; - - $defaults = [ - 'enabled' => '1', - 'target-blank-mode' => '1', - 'apps-order' => '[]', - 'target-blank-apps' => '[]', - 'top-menu-apps' => '[]', - 'top-side-menu-apps' => '[]', - ]; - - $config = []; - - foreach ($keys as $key) { - if (!isset($defaults[$key])) { - continue; - } - - if (in_array($key, $booleans)) { - $config[$key] = $this->configProxy->getUserValueBool($user, $key, $defaults[$key]); - } elseif (in_array($key, $arrays)) { - $config[$key] = $this->configProxy->getUserValueArray($user, $key, $defaults[$key]); - } elseif (in_array($key, $integers)) { - $config[$key] = $this->configProxy->getUserValueInt($user, $key, $defaults[$key]); - } else { - $config[$key] = $this->configProxy->getUserValue($user, $key, $defaults[$key]); - } - } - - foreach ($defaults as $key => $default) { - if (!array_key_exists($key, $config)) { - $config[$key] = $default; - } - } - - return new JSONResponse($config); - } } diff --git a/lib/Service/AppRepository.php b/lib/Service/AppRepository.php index 3c64f7d..ce96107 100644 --- a/lib/Service/AppRepository.php +++ b/lib/Service/AppRepository.php @@ -3,12 +3,6 @@ namespace OCA\SideMenu\Service; use OC\User\User; -use OCA\SideMenu\AppInfo\Application; -use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\EventDispatcher\IEventDispatcher; -use OCP\INavigationManager; -use OCP\IUserSession; use OCP\L10N\IFactory; /** @@ -18,27 +12,46 @@ use OCP\L10N\IFactory; */ class AppRepository { + /** + * @var \OC_App + */ + protected $ocApp; + + /** + * @var IFactory + */ + protected $l10nFactory; + + /** + * @var ConfigProxy + */ + protected $config; + + /** + * @var CategoryRepository + */ + protected $categoryRepository; + public function __construct( - protected \OC_App $ocApp, - protected INavigationManager $navigationManager, - protected IFactory $l10nFactory, - protected ConfigProxy $config, - protected CategoryRepository $categoryRepository, - protected IEventDispatcher $dispatcher, - protected IUserSession $userSession, + \OC_App $ocApp, + IFactory $l10nFactory, + ConfigProxy $config, + CategoryRepository $categoryRepository ) { - $this->dispatcher->dispatchTyped(new BeforeTemplateRenderedEvent( - $this->userSession->isLoggedIn(), - new TemplateResponse(Application::APP_NAME, '') - )); + $this->ocApp = $ocApp; + $this->l10nFactory = $l10nFactory; + $this->config = $config; + $this->categoryRepository = $categoryRepository; } /** * Retrieves visibles apps. + * + * @return array */ - public function getVisibleApps(): array + public function getVisibleApps() { - $navigation = $this->navigationManager->getAll(); + $navigation = $this->ocApp->getNavigation(); $appCategoriesCustom = $this->config->getAppValueArray('apps-categories-custom', '[]'); $categories = $this->categoryRepository->getOrderedCategories(); $apps = $this->ocApp->listAllApps(); @@ -69,14 +82,6 @@ class AppRepository 'external_links', ], ]; - } elseif ('tables_application' === substr($app['id'], 0, 18)) { - $visibleApps[$app['id']] = [ - 'id' => $app['id'], - 'name' => $this->getAppName($app), - 'href' => $app['href'], - 'icon' => $app['icon'], - 'category' => [], - ]; } elseif ('files' === $app['id']) { $visibleApps[$app['id']] = [ 'id' => $app['id'], @@ -97,7 +102,7 @@ class AppRepository return $visibleApps; } - public function getAppName($app): string + public function getAppName($app) { return $this->config->getAppValue( 'app.navigation.name', @@ -106,7 +111,7 @@ class AppRepository ); } - public function getOrderedApps(?User $user = null): array + public function getOrderedApps(?User $user = null) { $apps = $this->getVisibleApps(); $orders = $this->config->getAppValueArray('apps-order', '[]'); diff --git a/lib/Service/CategoryRepository.php b/lib/Service/CategoryRepository.php index 404c061..c146609 100644 --- a/lib/Service/CategoryRepository.php +++ b/lib/Service/CategoryRepository.php @@ -15,19 +15,51 @@ use OCP\L10N\IFactory; */ class CategoryRepository { + /** + * @var CategoryFetcher + */ + protected $categoryFetcher; + + /** + * @var IFactory + */ + protected $l10nFactory; + + /** + * @var ConfigProxy + */ + protected $config; + + /** + * @var IConfig + */ + protected $iConfig; + + /** + * @var IUserSession + */ + protected $userSession; + public function __construct( - protected CategoryFetcher $categoryFetcher, - protected ConfigProxy $config, - protected IConfig $iConfig, - protected IFactory $l10nFactory, - protected IUserSession $userSession, + CategoryFetcher $categoryFetcher, + ConfigProxy $config, + IConfig $iConfig, + IFactory $l10nFactory, + IUserSession $userSession ) { + $this->categoryFetcher = $categoryFetcher; + $this->l10nFactory = $l10nFactory; + $this->config = $config; + $this->iConfig = $iConfig; + $this->userSession = $userSession; } /** * Retrieves categories. + * + * @return array */ - public function getOrderedCategories(): array + public function getOrderedCategories() { $currentLanguage = substr($this->l10nFactory->findLanguage(), 0, 2); $type = $this->config->getAppValue('categories-order-type', 'default'); diff --git a/lib/Service/Color.php b/lib/Service/Color.php index 98e4ed5..cf90dd6 100644 --- a/lib/Service/Color.php +++ b/lib/Service/Color.php @@ -2,8 +2,6 @@ namespace OCA\SideMenu\Service; -use OCA\Theming\ThemingDefaults; - /** * class Color. * @@ -11,10 +9,6 @@ use OCA\Theming\ThemingDefaults; */ class Color { - public function __construct(protected ThemingDefaults $theming) - { - } - /** * @thanks https://stackoverflow.com/posts/54393956/revision */ @@ -37,29 +31,4 @@ class Color return '#'.implode($hexCode); } - - public function getPrimaryColor() - { - return $this->theming->getColorPrimary(); - } - - public function getLightenPrimaryColor() - { - return $this->adjustBrightness($this->getPrimaryColor(), 0.2); - } - - public function getDarkenPrimaryColor() - { - return $this->adjustBrightness($this->getPrimaryColor(), -0.2); - } - - public function getDarkenPrimaryColor2() - { - return $this->adjustBrightness($this->getPrimaryColor(), -0.3); - } - - public function getTextColorPrimary() - { - return $this->theming->getTextColorPrimary(); - } } diff --git a/lib/Service/ConfigProxy.php b/lib/Service/ConfigProxy.php index 6745851..d162dfd 100644 --- a/lib/Service/ConfigProxy.php +++ b/lib/Service/ConfigProxy.php @@ -13,7 +13,12 @@ use OCP\IConfig; */ class ConfigProxy { - public function __construct(protected IConfig $config) + /** + * @var IConfig + */ + protected $config; + + public function __construct(IConfig $config) { $this->config = $config; } diff --git a/lib/Service/LangRepository.php b/lib/Service/LangRepository.php index 4034b85..3c379f0 100644 --- a/lib/Service/LangRepository.php +++ b/lib/Service/LangRepository.php @@ -11,7 +11,12 @@ use OCP\IDBConnection; */ class LangRepository { - public function __construct(protected IDBConnection $db) + /** + * @var IDBConnection + */ + protected $db; + + public function __construct(IDBConnection $db) { $this->db = $db; } @@ -30,12 +35,7 @@ class LangRepository ->from('preferences') ; - // Nextcloud >=33+ - if (method_exists($qb, 'executeQuery')) { - $stmt = $qb->executeQuery(); - } else { - $stmt = $qb->execute(); - } + $stmt = $qb->execute(); $langs = ['en']; diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 0d806c7..86ddac4 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -1,5 +1,4 @@ l = $l; + $this->logger = $logger; + $this->config = $config; + $this->appRepository = $appRepository; + $this->categoryRepository = $categoryRepository; + $this->theming = $theming; + $this->color = $color; + $this->langRepository = $langRepository; } /** diff --git a/lib/Settings/AdminSection.php b/lib/Settings/AdminSection.php index 820b0f3..8629e8a 100644 --- a/lib/Settings/AdminSection.php +++ b/lib/Settings/AdminSection.php @@ -1,5 +1,4 @@ url = $url; + $this->l = $l; } + /** + * returns the ID of the section. It is supposed to be a lower case string, + * e.g. 'ldap'. + * + * @returns string + */ public function getID() { return Application::APP_ID; } + /** + * returns the translated name as it should be displayed, e.g. 'LDAP / AD + * integration'. Use the L10N service to translate it. + * + * @return string + */ public function getName() { return $this->l->t(Application::APP_NAME); } + /** + * @return int whether the form should be rather on the top or bottom of + * the settings navigation. The sections are arranged in ascending order of + * the priority values. It is required to return a value between 0 and 99. + * + * E.g.: 70 + */ public function getPriority() { return 70; } + /** + * {@inheritdoc} + */ public function getIcon() { return $this->url->imagePath(Application::APP_ID, 'icon.svg'); diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index fbc1e57..57112d0 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -1,5 +1,4 @@ l = $l; + $this->logger = $logger; + $this->config = $config; + $this->userSession = $userSession; + $this->appRepository = $appRepository; } /** diff --git a/lib/Settings/PersonalSection.php b/lib/Settings/PersonalSection.php index a42a56e..58a773f 100644 --- a/lib/Settings/PersonalSection.php +++ b/lib/Settings/PersonalSection.php @@ -1,5 +1,4 @@ url = $url; + $this->l = $l; + $this->configProxy = $configProxy; } + /** + * returns the ID of the section. It is supposed to be a lower case string, + * e.g. 'ldap'. + * + * @returns string + */ public function getID() { if ($this->configProxy->getAppValueBool('force', '0')) { @@ -43,6 +63,12 @@ class PersonalSection implements IIconSection return Application::APP_ID; } + /** + * returns the translated name as it should be displayed, e.g. 'LDAP / AD + * integration'. Use the L10N service to translate it. + * + * @return string + */ public function getName() { if ($this->configProxy->getAppValueBool('force', '0')) { @@ -52,6 +78,13 @@ class PersonalSection implements IIconSection return $this->l->t(Application::APP_NAME); } + /** + * @return int whether the form should be rather on the top or bottom of + * the settings navigation. The sections are arranged in ascending order of + * the priority values. It is required to return a value between 0 and 99. + * + * E.g.: 70 + */ public function getPriority() { if ($this->configProxy->getAppValueBool('force', '0')) { @@ -61,6 +94,9 @@ class PersonalSection implements IIconSection return 70; } + /** + * {@inheritdoc} + */ public function getIcon() { return $this->url->imagePath(Application::APP_ID, 'icon.svg'); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 0b5a50f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,8188 +0,0 @@ -{ - "name": "side_menu", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "license": "agpl", - "dependencies": { - "@babel/core": ">=7.12.0 <8.0.0", - "@formatjs/intl-segmenter": "^12.0.8", - "@nextcloud/router": "^3.0.1", - "@nextcloud/vue": "^9.0.0-alpha.8", - "node-polyfill-webpack-plugin": "^4.1.0", - "pinia": "^3.0.1", - "postcss": "^7.0.0 || ^8.0.1", - "vue": "^3.5.13", - "vuedraggable": "^4.1.0" - }, - "devDependencies": { - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@nextcloud/axios": "^2.5.1", - "@nextcloud/browserslist-config": "^3.0.1", - "@nextcloud/event-bus": "^3.3.1", - "@nextcloud/initial-state": "^2.2.0", - "@nextcloud/l10n": "^3.2.0", - "babel-loader": "^9.1.3", - "css-loader": "^7.1.2", - "eslint": "^9.19.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-vue": "^9.32.0", - "file-loader": "^6.2.0", - "mini-css-extract-plugin": "^2.9.1", - "postcss-loader": "^8.1.1", - "prettier": "3.4.2", - "sass": "^1.78.0", - "sass-loader": "^16.0.1", - "source-map-loader": "^5.0.0", - "style-loader": "^4.0.0", - "vue-loader": "^17.4.2", - "vue-router": "^4.4.5", - "webpack": "^5.94.0", - "webpack-cli": "^5.1.4", - "webpack-notifier": "^1.15.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", - "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@ckpack/vue-color": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@ckpack/vue-color/-/vue-color-1.6.0.tgz", - "integrity": "sha512-b9kFTKhYbNArfgP1lmnaVm0VNsWdZjqIbyHUYry7mZ+E7JeTQclbjq1+2xWn0SE3wzqRYlXmAVjECPOgteWmMQ==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.6.0", - "material-colors": "^1.2.6" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", - "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", - "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", - "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", - "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", - "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", - "license": "MIT" - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-3.0.8.tgz", - "integrity": "sha512-NRiqvxAvhbARZRFSRFPjN0y8txxmVutv2vMYvW2HSdCVf58w9l4osLj6Ujif643vImwZBcbKqhiKE0IOhY+DvA==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "3.0.3", - "@formatjs/intl-localematcher": "0.7.5", - "decimal.js": "^10.4.3", - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.0.3.tgz", - "integrity": "sha512-CArYtQKGLAOruCMeq5/RxCg6vUXFx3OuKBdTm30Wn/+gCefehmZ8Y2xSMxMrO2iel7hRyE3HKfV56t3vAU6D4Q==", - "license": "MIT", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.7.5.tgz", - "integrity": "sha512-7/nd90cn5CT7SVF71/ybUKAcnvBlr9nZlJJp8O8xIZHXFgYOC4SXExZlSdgHv2l6utjw1byidL06QzChvQMHwA==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "3.0.3", - "tslib": "^2.8.0" - } - }, - "node_modules/@formatjs/intl-segmenter": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-segmenter/-/intl-segmenter-12.0.8.tgz", - "integrity": "sha512-seByJgn5tx34X25O8mu63wYJ5JVQcUM4fkscobkA+wBhmyI1rJSgNCf6p8XZ28nCm514Cb2N0f3sAmpEyLPJ6g==", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "3.0.8", - "@formatjs/intl-localematcher": "0.7.5", - "tslib": "^2.8.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nextcloud/auth": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.4.0.tgz", - "integrity": "sha512-T5OFltKd0O9Hfj47VrzE7TVjCwqOMHH9JLyjjLUR3pu2MaTY9WL6AjL79sHbFTXUaIkftZgJKu12lHYmqXnL2Q==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/browser-storage": "^0.4.0", - "@nextcloud/event-bus": "^3.3.1" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/axios": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.5.1.tgz", - "integrity": "sha512-AA7BPF/rsOZWAiVxqlobGSdD67AEwjOnymZCKUIwEIBArKxYK7OQEqcILDjQwgj6G0e/Vg9Y8zTVsPZp+mlvwA==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/auth": "^2.3.0", - "@nextcloud/router": "^3.0.1", - "axios": "^1.6.8" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/browser-storage": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.4.0.tgz", - "integrity": "sha512-D6XxznxCYmJ3oBCC3p0JB6GZJ2RZ9dgbB1UqtTePXrIvHUMBAeF/YkiGKYxLAVZCZb+NSNZXgAYHm/3LnIUbDg==", - "license": "GPL-3.0-or-later", - "dependencies": { - "core-js": "3.37.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/browserslist-config": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", - "integrity": "sha512-GZTxL5fsDgmFoot/qnRurjHCuHjSfOg+A6t4+P2TySXua2Q1Ex0lecZYlSnRuOR/W5BGOZ06ITTA/hbkSh1Ypg==", - "dev": true, - "license": "GPL-3.0-or-later", - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/capabilities": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.0.tgz", - "integrity": "sha512-L1NQtOfHWzkfj0Ple1MEJt6HmOHWAi3y4qs+OnwSWexqJT0DtXTVPyRxi7ADyITwRxS5H9R/HMl6USAj4Nr1nQ==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/initial-state": "^2.1.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/event-bus": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.2.tgz", - "integrity": "sha512-1Qfs6i7Tz2qd1A33NpBQOt810ydHIRjhyXMFwSEkYX2yUI80lAk/sWO8HIB2Fqp+iffhyviPPcQYoytMDRyDNw==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@types/semver": "^7.5.8", - "semver": "^7.6.3" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/event-bus/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nextcloud/initial-state": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz", - "integrity": "sha512-cDW98L5KGGgpS8pzd+05304/p80cyu8U2xSDQGa+kGPTpUFmCbv2qnO5WrwwGTauyjYijCal2bmw82VddSH+Pg==", - "license": "GPL-3.0-or-later", - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/l10n": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.2.0.tgz", - "integrity": "sha512-5TbIc415C0r8YUA0i4bOXKL0iInY8ka+t8PGHihqevzqf/LAkFatd+p6mCLJT3tQPxgkcIRCIuyOkiUM0Lyw5Q==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/router": "^3.0.1", - "@nextcloud/typings": "^1.9.1", - "@types/dompurify": "^3.2.0", - "@types/escape-html": "^1.0.4", - "dompurify": "^3.2.4", - "escape-html": "^1.0.3" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/logger": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.2.tgz", - "integrity": "sha512-wByt0R0/6QC44RBpaJr1MWghjjOxk/pRbACHo/ZWWKht1qYbJRHB4GtEi+35KEIHY07ZpqxiDk6dIRuN7sXYWQ==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/auth": "^2.3.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/router": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.0.1.tgz", - "integrity": "sha512-Ci/uD3x8OKHdxSqXL6gRJ+mGJOEXjeiHjj7hqsZqVTsT7kOrCjDf0/J8z5RyLlokKZ0IpSe+hGxgi3YB7Gpw3Q==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/typings": "^1.7.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/sharing": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.2.4.tgz", - "integrity": "sha512-kOLAr0w4NDUGPF42L22i9iSs6Z3ylTsE0RudAGDBzw/pnxGY8PEwZI2j0IMAFRfQ7XFNcpV/EVHI5YCMxtxGMQ==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/initial-state": "^2.2.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/timezones": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nextcloud/timezones/-/timezones-0.1.1.tgz", - "integrity": "sha512-ldLuLyz605sszetnp6jy6mtlThu4ICKsZThxHIZwn6t4QzjQH3xr+k8mRU7GIvKq9egUFDqBp4gBjxm3/ROZig==", - "license": "AGPL-3.0-or-later", - "dependencies": { - "ical.js": "^2.0.1" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/typings": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz", - "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@types/jquery": "3.5.16" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/vue": { - "version": "9.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-9.0.0-alpha.8.tgz", - "integrity": "sha512-k1MITATUmu4kAV+Dksmox3pbaPaQqSvqc2Y47iWqbTXVYshD78APbfxYFW2DtKnpFuNJNYE1tvl5ME1JZFqErQ==", - "license": "AGPL-3.0-or-later", - "dependencies": { - "@ckpack/vue-color": "^1.6.0", - "@floating-ui/dom": "^1.6.13", - "@nextcloud/auth": "^2.4.0", - "@nextcloud/axios": "^2.5.1", - "@nextcloud/browser-storage": "^0.4.0", - "@nextcloud/capabilities": "^1.2.0", - "@nextcloud/event-bus": "^3.3.2", - "@nextcloud/initial-state": "^2.2.0", - "@nextcloud/l10n": "^3.2.0", - "@nextcloud/logger": "^3.0.2", - "@nextcloud/router": "^3.0.1", - "@nextcloud/sharing": "^0.2.4", - "@nextcloud/timezones": "^0.1.1", - "@vuepic/vue-datepicker": "^11.0.2", - "@vueuse/components": "^13.0.0", - "@vueuse/core": "^13.0.0", - "blurhash": "^2.0.5", - "clone": "^2.1.2", - "debounce": "^2.2.0", - "dompurify": "^3.2.4", - "emoji-mart-vue-fast": "^15.0.4", - "escape-html": "^1.0.3", - "floating-vue": "^5.2.2", - "focus-trap": "^7.6.4", - "linkifyjs": "^4.2.0", - "p-queue": "^8.0.1", - "rehype-external-links": "^3.0.0", - "rehype-highlight": "^7.0.2", - "rehype-react": "^8.0.0", - "remark-breaks": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", - "splitpanes": "^4.0.3", - "string-length": "^6.0.0", - "striptags": "^3.2.0", - "tabbable": "^6.2.0", - "tributejs": "^5.1.3", - "unified": "^11.0.5", - "unist-builder": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vue": "^3.5.13", - "vue-router": "^4.5.0", - "vue-select": "^4.0.0-beta.6" - }, - "engines": { - "node": "^20.11.0", - "npm": "^10.0.0" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/dompurify": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.2.0.tgz", - "integrity": "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==", - "deprecated": "This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.", - "license": "MIT", - "dependencies": { - "dompurify": "*" - } - }, - "node_modules/@types/escape-html": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz", - "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==", - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/jquery": { - "version": "3.5.16", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", - "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", - "license": "MIT", - "dependencies": { - "@types/sizzle": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", - "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", - "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/devtools-api": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.5.tgz", - "integrity": "sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.5" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.5.tgz", - "integrity": "sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==", - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.7.5", - "birpc": "^2.3.0", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.2" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.5.tgz", - "integrity": "sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==", - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "vue": "3.5.13" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "license": "MIT" - }, - "node_modules/@vuepic/vue-datepicker": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-11.0.2.tgz", - "integrity": "sha512-uHh78mVBXCEjam1uVfTzZ/HkyDwut/H6b2djSN9YTF+l/EA+XONfdCnOVSi1g+qVGSy65DcQAwyBNidAssnudQ==", - "license": "MIT", - "dependencies": { - "date-fns": "^4.1.0" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "vue": ">=3.3.0" - } - }, - "node_modules/@vueuse/components": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-13.1.0.tgz", - "integrity": "sha512-2cqRdRJ1CP/a9WpDAlIZneaivUuwze2e8W0CjKHbWqJ9p7nldccwMyEqKC7N6naYvipG469IGfYk6rnT/hoKfA==", - "license": "MIT", - "dependencies": { - "@vueuse/core": "13.1.0", - "@vueuse/shared": "13.1.0" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@vueuse/core": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.1.0.tgz", - "integrity": "sha512-PAauvdRXZvTWXtGLg8cPUFjiZEddTqmogdwYpnn60t08AA5a8Q4hZokBnpTOnVNqySlFlTcRYIC8OqreV4hv3Q==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "13.1.0", - "@vueuse/shared": "13.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@vueuse/metadata": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.1.0.tgz", - "integrity": "sha512-+TDd7/a78jale5YbHX9KHW3cEDav1lz1JptwDvep2zSG8XjCsVE+9mHIzjTOaPbHUAk5XiE4jXLz51/tS+aKQw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.1.0.tgz", - "integrity": "sha512-IVS/qRRjhPTZ6C2/AM3jieqXACGwFZwWTdw5sNTSKk2m/ZpkuuN+ri+WCVUP8TqaKwJYt/KuMwmXspMAw8E6ew==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/birpc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", - "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/blurhash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", - "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "license": "MIT", - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", - "license": "ISC", - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "license": "MIT" - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "license": "MIT" - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001714", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001714.tgz", - "integrity": "sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", - "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/core-js": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", - "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/debounce": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.2.0.tgz", - "integrity": "sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/dompurify": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", - "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", - "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", - "license": "ISC" - }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/emoji-mart-vue-fast": { - "version": "15.0.4", - "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.4.tgz", - "integrity": "sha512-OjuxqoMJRTTG7Vevz0mR1ZnqY1DI8gGnmoskuuC8qL8VwwTjrGdwAO4WRWtAUN8P6Di7kxvY6cUgNETNFmbP4A==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.18.6", - "core-js": "^3.23.5" - }, - "peerDependencies": { - "vue": ">2.0.0" - } - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", - "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.24.0", - "@eslint/plugin-kit": "^0.2.7", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", - "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", - "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-vue/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/floating-vue": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-5.2.2.tgz", - "integrity": "sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "~1.1.1", - "vue-resize": "^2.0.0-alpha.1" - }, - "peerDependencies": { - "@nuxt/kit": "^3.2.0", - "vue": "^3.2.0" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - } - } - }, - "node_modules/floating-vue/node_modules/@floating-ui/dom": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz", - "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.1.0" - } - }, - "node_modules/focus-trap": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", - "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", - "license": "MIT", - "dependencies": { - "tabbable": "^6.2.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause" - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true, - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "license": "MIT" - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "license": "MIT" - }, - "node_modules/ical.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ical.js/-/ical.js-2.1.0.tgz", - "integrity": "sha512-BOVfrH55xQ6kpS3muGvIXIg2l7p+eoe12/oS7R5yrO3TL/j/bLsR0PR+tYQESFbyTbvGgPHn9zQ6tI4FWyuSaQ==", - "license": "MPL-2.0" - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", - "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isomorphic-timers-promises": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", - "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/linkifyjs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.2.0.tgz", - "integrity": "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==", - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/lowlight": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz", - "integrity": "sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.0.0", - "highlight.js": "~11.11.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", - "license": "ISC" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-newline-to-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-newline-to-break/-/mdast-util-newline-to-break-2.0.0.tgz", - "integrity": "sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-find-and-replace": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-b4ei444EKkOagG/yFqojrD3QTYM5IOU1f8tn9o6uwrG4qL+brI7oVhjPVd0ZL2xy+Z6CP5bu9w8XTvlWgiXHcw==", - "license": "MIT", - "dependencies": { - "node-stdlib-browser": "^1.3.0", - "type-fest": "^4.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "license": "MIT" - }, - "node_modules/node-stdlib-browser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", - "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", - "license": "MIT", - "dependencies": { - "assert": "^2.0.0", - "browser-resolve": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^5.7.1", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "create-require": "^1.1.1", - "crypto-browserify": "^3.12.1", - "domain-browser": "4.22.0", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "isomorphic-timers-promises": "^1.0.1", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "pkg-dir": "^5.0.0", - "process": "^0.11.10", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.1", - "url": "^0.11.4", - "util": "^0.12.4", - "vm-browserify": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-stdlib-browser/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "license": "MIT" - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", - "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", - "license": "ISC", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pinia": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.2.tgz", - "integrity": "sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^7.7.2" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "license": "MIT" - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/rehype-external-links": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", - "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-is-element": "^3.0.0", - "is-absolute-url": "^4.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-highlight": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rehype-highlight/-/rehype-highlight-7.0.2.tgz", - "integrity": "sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-to-text": "^4.0.0", - "lowlight": "^3.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-react": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/rehype-react/-/rehype-react-8.0.0.tgz", - "integrity": "sha512-vzo0YxYbB2HE+36+9HWXVdxNoNDubx63r5LBzpxBGVWM8s9mdnMdbmuJBAX6TTyuGdZjZix6qU3GcSuKCIWivw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-breaks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-breaks/-/remark-breaks-4.0.0.tgz", - "integrity": "sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-newline-to-break": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", - "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.86.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", - "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sass-loader": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", - "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "license": "MIT" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sortablejs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", - "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", - "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.72.1" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/splitpanes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-4.0.3.tgz", - "integrity": "sha512-S/f1CoH2JroOib7kzQtTQNtQCa7VzNQ2qKOO5HNj/5EVVcNkfz1eX/sH+X3XKdBdDLihEKDekVGwrLADd2oirA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antoniandre" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-6.0.0.tgz", - "integrity": "sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==", - "license": "MIT", - "dependencies": { - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/striptags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", - "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==", - "license": "MIT" - }, - "node_modules/style-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", - "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.27.0" - } - }, - "node_modules/style-to-js": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", - "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", - "license": "MIT", - "dependencies": { - "style-to-object": "1.0.8" - } - }, - "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.2.4" - } - }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tributejs": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/tributejs/-/tributejs-5.1.3.tgz", - "integrity": "sha512-B5CXihaVzXw+1UHhNFyAwUTMDk1EfoLP5Tj1VhD9yybZ1I8DZJEv8tZ1l0RJo0t0tk9ZhR8eG5tEsaCvRigmdQ==", - "license": "MIT" - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "license": "MIT" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", - "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-builder": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-4.0.0.tgz", - "integrity": "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "license": "MIT", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "license": "MIT" - }, - "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vue-loader": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.4.2.tgz", - "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "watchpack": "^2.4.0" - }, - "peerDependencies": { - "webpack": "^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/vue-resize": { - "version": "2.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", - "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==", - "license": "MIT", - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-router": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", - "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vue-router/node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/vue-select": { - "version": "4.0.0-beta.6", - "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz", - "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==", - "license": "MIT", - "peerDependencies": { - "vue": "3.x" - } - }, - "node_modules/vuedraggable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", - "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", - "license": "MIT", - "dependencies": { - "sortablejs": "1.14.0" - }, - "peerDependencies": { - "vue": "^3.0.1" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.99.5", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz", - "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==", - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" - }, - "peerDependencies": { - "@types/webpack": ">4.41.31" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - } - } - }, - "node_modules/webpack-notifier/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-notifier/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/package.json b/package.json index fdb050f..503c7d1 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,63 @@ { - "license": "agpl", - "private": true, - "module": true, - "scripts": { - "build": "NODE_ENV=production ./node_modules/.bin/webpack-cli --progress --config webpack.config.js", - "dev": "NODE_ENV=development ./node_modules/.bin/webpack-cli --progress --config webpack.config.js", - "watch": "NODE_ENV=development ./node_modules/.bin/webpack-cli --progress --watch --config webpack.config.js", - "lint": "ESLINT_USE_FLAT_CONFIG=false ./node_modules/.bin/eslint --ext .js,.vue --ignore-path .gitignore --fix src", - "format": "./node_modules/.bin/prettier src --write" - }, - "dependencies": { - "@babel/core": ">=7.12.0 <8.0.0", - "@formatjs/intl-segmenter": "^12.0.8", - "@nextcloud/router": "^3.0.1", - "@nextcloud/vue": "^9.0.0-alpha.8", - "node-polyfill-webpack-plugin": "^4.1.0", - "pinia": "^3.0.1", - "postcss": "^7.0.0 || ^8.0.1", - "vue": "^3.5.13", - "vuedraggable": "^4.1.0" - }, - "browserslist": [ - "extends @nextcloud/browserslist-config" - ], - "engines": { - "node": ">=16.0.0" - }, - "devDependencies": { - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@nextcloud/axios": "^2.5.1", - "@nextcloud/browserslist-config": "^3.0.1", - "@nextcloud/event-bus": "^3.3.1", - "@nextcloud/initial-state": "^2.2.0", - "@nextcloud/l10n": "^3.2.0", - "babel-loader": "^9.1.3", - "css-loader": "^7.1.2", - "eslint": "^9.19.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-vue": "^9.32.0", - "file-loader": "^6.2.0", - "mini-css-extract-plugin": "^2.9.1", - "postcss-loader": "^8.1.1", - "prettier": "3.4.2", - "sass": "^1.78.0", - "sass-loader": "^16.0.1", - "source-map-loader": "^5.0.0", - "style-loader": "^4.0.0", - "vue-loader": "^17.4.2", - "vue-router": "^4.4.5", - "webpack": "^5.94.0", - "webpack-cli": "^5.1.4", - "webpack-notifier": "^1.15.0" - } + "license": "agpl", + "private": true, + "scripts": { + "build": "NODE_ENV=production ./node_modules/.bin/webpack-cli --progress --config webpack.js", + "dev": "NODE_ENV=development ./node_modules/.bin/webpack-cli --progress --config webpack.js", + "watch": "NODE_ENV=development ./node_modules/.bin/webpack-cli --progress --watch --config webpack.js", + "lint": "./node_modules/.bin/eslint --ext .js,.vue src", + "lint:fix": "./node_modules/.bin/eslint --ext .js,.vue src --fix", + "stylelint": "./node_modules/.bin/stylelint src", + "stylelint:fix": "./node_modules/.bin/stylelint src --fix" + }, + "dependencies": { + "axios": "^0.24.0", + "trim": "^1.0.1", + "vue": "^2.6.11" + }, + "browserslist": [ + "extends @nextcloud/browserslist-config" + ], + "engines": { + "node": ">=16.0.0" + }, + "devDependencies": { + "@babel/core": "^7.9.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/preset-env": "^7.9.0", + "@nextcloud/axios": "^1.8.0", + "@nextcloud/browserslist-config": "^1.0.0", + "@nextcloud/eslint-config": "^8.1.2", + "@nextcloud/initial-state": "^2.0.0", + "@nextcloud/l10n": "^1.6.0", + "@nextcloud/vue": "^7.0.0", + "babel-eslint": "^10.1.0", + "babel-loader": "^8.1.0", + "css-loader": "^3.4.2", + "eslint": "^8.0.0", + "eslint-config-standard": "^17.0.0", + "eslint-import-resolver-webpack": "^0.12.1", + "eslint-plugin-import": "^2.20.0", + "eslint-plugin-nextcloud": "^0.3.0", + "eslint-plugin-node": "^10.0.0", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-standard": "^4.0.1", + "eslint-plugin-vue": "^9.0.0", + "eslint-webpack-plugin": "^3.0.0", + "file-loader": "^6.0.0", + "sass": "^1.49.9", + "sass-loader": "^13.0.2", + "stylelint": "^14.0.0", + "stylelint-config-recommended-scss": "^7.0.0", + "stylelint-scss": "^4.0.0", + "stylelint-webpack-plugin": "^3.3.0", + "url-loader": "^4.0.0", + "vue-loader": "^15", + "vue-style-loader": "^4.1.3", + "vue-template-compiler": "^2.7.13", + "webpack": "^5.0.0", + "webpack-cli": "^4.0.0", + "webpack-merge": "^4.2.2", + "webpack-node-externals": "^1.7.2" + } } diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 7190a60..0000000 --- a/renovate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json" -} diff --git a/screenshots/admin_settings.png b/screenshots/admin_settings.png index eae14bb..4d7a0e0 100644 Binary files a/screenshots/admin_settings.png and b/screenshots/admin_settings.png differ diff --git a/screenshots/personal_settings.png b/screenshots/personal_settings.png index 480063b..05a73ee 100644 Binary files a/screenshots/personal_settings.png and b/screenshots/personal_settings.png differ diff --git a/src/AdminCategoriesCustom.vue b/src/AdminCategoriesCustom.vue new file mode 100644 index 0000000..2a84749 --- /dev/null +++ b/src/AdminCategoriesCustom.vue @@ -0,0 +1,181 @@ + + + + + + + + diff --git a/src/AppMenu.vue b/src/AppMenu.vue new file mode 100644 index 0000000..52a9810 --- /dev/null +++ b/src/AppMenu.vue @@ -0,0 +1,345 @@ + + + + + + + + diff --git a/src/components/CloserButton.vue b/src/CloserButton.vue similarity index 75% rename from src/components/CloserButton.vue rename to src/CloserButton.vue index cfff324..99779f8 100644 --- a/src/components/CloserButton.vue +++ b/src/CloserButton.vue @@ -15,15 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/components/PageLoader.vue b/src/Loader.vue similarity index 53% rename from src/components/PageLoader.vue rename to src/Loader.vue index fdd75a8..d059f68 100644 --- a/src/components/PageLoader.vue +++ b/src/Loader.vue @@ -15,35 +15,28 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/components/settings/SettingItem.vue b/src/Logo.vue similarity index 64% rename from src/components/settings/SettingItem.vue rename to src/Logo.vue index ae7f8f9..1aec19f 100644 --- a/src/components/settings/SettingItem.vue +++ b/src/Logo.vue @@ -15,26 +15,30 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - - + diff --git a/src/components/OpenerButton.vue b/src/OpenerButton.vue similarity index 78% rename from src/components/OpenerButton.vue rename to src/OpenerButton.vue index 536c61c..32813e9 100644 --- a/src/components/OpenerButton.vue +++ b/src/OpenerButton.vue @@ -15,15 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/PageLoader.js b/src/PageLoader.js new file mode 100644 index 0000000..3c8bd13 --- /dev/null +++ b/src/PageLoader.js @@ -0,0 +1,20 @@ +const createElement = require('./lib/createElement') + +const PageLoader = () => { + const pageLoader = createElement('div', {id: 'side-menu-loader'}) + const pageLoaderBar = createElement('div', {id: 'side-menu-loader-bar'}) + + pageLoader.appendChild(pageLoaderBar) + document.querySelector('body').appendChild(pageLoader) + + let pageLoaderValue = 0 + + window.addEventListener('beforeunload', () => { + setInterval(() => { + pageLoaderBar.style.width = pageLoaderValue.toString() + '%' + pageLoaderValue = Math.min(pageLoaderValue + .2, 100) + }, 25) + }) +} + +module.exports = PageLoader diff --git a/src/components/SettingsButton.vue b/src/SettingsButton.vue similarity index 69% rename from src/components/SettingsButton.vue rename to src/SettingsButton.vue index 8c6eb41..a4eb97f 100644 --- a/src/components/SettingsButton.vue +++ b/src/SettingsButton.vue @@ -15,35 +15,33 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/SideMenu.js b/src/SideMenu.js new file mode 100644 index 0000000..e7b3675 --- /dev/null +++ b/src/SideMenu.js @@ -0,0 +1,71 @@ +/** + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import Vue from 'vue' +import AppMenu from './AppMenu.vue' +import SideMenu from './SideMenu.vue' +import SideMenuBig from './SideMenuBig.vue' +import SideMenuWithCategories from './SideMenuWithCategories.vue' +import PageLoader from './PageLoader' +import SMcreateElement from './lib/createElement' + +Vue.prototype.OC = OC +Vue.prototype.t = OC.L10N.translate + +window.SMcreateElement = SMcreateElement +window.PageLoader = PageLoader + +const mountSideMenuComponent = () => { + const container = document.querySelector('#side-menu') + + if (!container) { + return window.setTimeout(mountSideMenuComponent, 50) + } + + const component = (() => { + if (container.getAttribute('data-bigmenu')) { + return SideMenuBig + } else if(container.getAttribute('data-sidewithcategories')) { + return SideMenuWithCategories + } else { + return SideMenu + } + })() + + const View = Vue.extend(component) + const App = new View({}) + + App.$mount('#side-menu') + + document.querySelector('body').dispatchEvent(new CustomEvent('side-menu.ready')) +} + +const mountAppMenu = () => { + const container = document.querySelector('#header .app-menu') + + if (!container) { + return window.setTimeout(mountAppMenu, 50) + } + + const View = Vue.extend(AppMenu) + const App = new View({}) + + App.$mount('#header .app-menu') +} + +mountSideMenuComponent() +mountAppMenu() diff --git a/src/SideMenu.vue b/src/SideMenu.vue new file mode 100644 index 0000000..de7065d --- /dev/null +++ b/src/SideMenu.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/components/SideMenuApp.vue b/src/SideMenuApp.vue similarity index 55% rename from src/components/SideMenuApp.vue rename to src/SideMenuApp.vue index a6a1190..c910dce 100644 --- a/src/components/SideMenuApp.vue +++ b/src/SideMenuApp.vue @@ -15,44 +15,38 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/SideMenuBig.vue b/src/SideMenuBig.vue new file mode 100644 index 0000000..a51ba61 --- /dev/null +++ b/src/SideMenuBig.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/components/SideMenuBigApp.vue b/src/SideMenuBigApp.vue similarity index 55% rename from src/components/SideMenuBigApp.vue rename to src/SideMenuBigApp.vue index a6a1190..a0fcdde 100644 --- a/src/components/SideMenuBigApp.vue +++ b/src/SideMenuBigApp.vue @@ -15,44 +15,38 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/SideMenuWithCategories.vue b/src/SideMenuWithCategories.vue new file mode 100644 index 0000000..556f45b --- /dev/null +++ b/src/SideMenuWithCategories.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/admin.js b/src/admin.js index 79505b7..66fb71d 100644 --- a/src/admin.js +++ b/src/admin.js @@ -8,27 +8,275 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ -import './scss/admin.scss' +import AdminCategoriesCustom from './AdminCategoriesCustom.vue' +import Vue from 'vue' -import '@formatjs/intl-segmenter/polyfill.js' +Vue.prototype.OC = window.OC +Vue.prototype.OCA = window.OCA -import { createApp } from 'vue' -import { createPinia } from 'pinia' -import { waitContainer } from './lib/dom.js' +let elements = [] -import AdminSettings from './pages/AdminSettings' +const selector = '#side-menu-message' -waitContainer('#side-menu-admin-settings').then((selector) => { - const pinia = createPinia() - const app = createApp(AdminSettings) - app.use(pinia) - app.mixin({ methods: { t, n } }) - app.mount(selector) +const userConfig = (name, value, callbacks) => { + const url = OC.generateUrl('/apps/side_menu/personalSetting/valueSet') + const formData = [] + + formData.push('name=' + encodeURIComponent(name)) + formData.push('value=' + encodeURIComponent(value)) + + fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formData.join('&') + }) + .then(callbacks.success) + .catch(callbacks.error) +} + +const appConfig = (name, value, callbacks) => { + OCP.AppConfig.setValue('side_menu', name, value, callbacks) +} + +const saveSettings = (key) => { + const element = elements[key] + + if (!element) { + return + } + + let value + let name + + if (element.hasAttribute('data-checkbox')) { + name = element.getAttribute('data-name') + value = [] + + const inputs = document.querySelectorAll('input[name="' + name + '[]"]:checked') + + for (let input of inputs) { + value.push(input.value) + } + + value = JSON.stringify(value) + } else { + name = element.getAttribute('name') + value = element.value + } + + const size = elements.length + + if (name === 'cache') { + ++value + } + + const progress = document.querySelector('#side-menu-save-progress') + + progress.style.width = '40px'; + progress.style.marginLeft = '5px'; + + const callbacks = { + success: () => { + const percent = parseInt((key + 1) * 100 / size); + + progress.setAttribute('value', percent) + + if (key < size - 1) { + saveSettings(key + 1) + } else { + location.reload() + } + }, + error: () => { + OC.msg.finishedError(selector, t('side_menu', 'Error while saving "' + element + '"')) + } + } + + if (element.hasAttribute('data-personal')) { + userConfig(name, value, callbacks) + } else { + appConfig(name, value, callbacks) + } +} + +const elementToggler = (element) => { + let display = 'none' + + if (window.getComputedStyle(element).display === 'none') { + display = 'block' + } + + element.style.display = display +} + +const updateAppsCategoriesCustom = () => { + let values = {} + + for (let item of document.querySelectorAll('.apps-categories-custom')) { + let app = item.getAttribute('data-app') + let value = item.value + + if (value) { + values[app] = value + } + } + + document.querySelector('#apps-categories-custom').value = JSON.stringify(values) +} + +document.addEventListener('DOMContentLoaded', () => { + $('*[data-toggle="tooltip"]').tooltip(); + + if (document.querySelector('#side-menu-categories-custom')) { + const View = Vue.extend(AdminCategoriesCustom) + const adminCategoriesCustom = new View({}) + + adminCategoriesCustom.$mount('#side-menu-categories-custom') + } + + elements = document.querySelectorAll('.side-menu-setting') + + document.querySelector('#side-menu-save').addEventListener('click', (event) => { + event.preventDefault() + OC.msg.startSaving(selector) + + saveSettings(0) + }) + + const resets = document.querySelectorAll('.btn-reset') + + for (let btn of resets) { + btn.addEventListener('click', (event) => { + const target = event.target + const values = JSON.parse(target.getAttribute('data-reset')) + + target.classList.toggle('btn-reset--progress', true) + + for (let i in values) { + document.querySelector(`#${i}`).value = values[i] + } + + window.setTimeout(() => { + target.classList.toggle('btn-reset--progress', false) + }, 800) + }) + } + + const displays = document.querySelectorAll('.side-menu-display') + + for (let display of displays) { + display.addEventListener('click', (event) => { + const target = event.target + + for (let d of displays) { + d.classList.toggle('is-active', d === display) + } + + document.querySelector('#side-menu-always-displayed').value = target.getAttribute('data-alwaysdiplayed') + document.querySelector('#side-menu-big-menu').value = target.getAttribute('data-bigmenu') + document.querySelector('#side-menu-side-with-categories').value = target.getAttribute('data-sidewithcategories') + }) + } + + for (let item of document.querySelectorAll('.apps-categories-custom')) { + item.addEventListener('change', (event) => { + updateAppsCategoriesCustom() + }) + } + + for (let item of document.querySelectorAll('.side-menu-setting-live')) { + item.addEventListener('change', (event) => { + const target = event.target + const name = target.getAttribute('name') + + let value = target.value + let id = null + + if (name === 'background-color-opacity') { + id = '#side-menu-background-color, #side-menu-background-color-to' + } else if (name === 'dark-mode-background-color-opacity') { + id = '#side-menu-dark-mode-background-color, #side-menu-dark-mode-background-color-to' + } + + if (id) { + document.querySelector(id).dispatchEvent(new CustomEvent('change')) + + return + } + + if (name === 'opener') { + const url = OC.generateUrl(`/apps/side_menu/img/${value}.svg`).replace('/index.php', '') + + value = `url(${url})` + } + + if (name === 'icon-invert-filter' || name === 'icon-opacity') { + value/=100 + } + + if (['dark-mode-background-color', 'dark-mode-background-color-to'].indexOf(name) > -1) { + const opacity = parseInt(document.querySelector('#side-menu-dark-mode-background-color-opacity').value * 255 / 100) + + value = [value, opacity.toString(16)].join('') + } else if (['background-color', 'background-color-to'].indexOf(name) > -1) { + const opacity = parseInt(document.querySelector('#side-menu-background-color-opacity').value * 255 / 100) + + value = [value, opacity.toString(16)].join('') + } + + document.documentElement.style.setProperty('--side-menu-' + name, value) + }) + } + + for (let toggler of document.querySelectorAll('.side-menu-toggler')) { + toggler.addEventListener('click', (event) => { + const target = event.target + const element = document.querySelector(target.getAttribute('data-target')) + + elementToggler(element) + }) + } + + sortable('#categories-list .side-menu-setting-list', { + placeholderClass: 'side-menu-setting-list-drop' + }) + + try { + sortable('#categories-list .side-menu-setting-list')[0].addEventListener('sortstop', (e) => { + let value = [] + + for (let item of document.querySelectorAll('#categories-list .side-menu-setting-list-item')) { + value.push(item.getAttribute('data-id')) + } + + document.querySelector('input[name="categories-order"]').value = JSON.stringify(value) + }) + } catch (e) { + } + + sortable('#apps-order-list .side-menu-setting-list', { + placeholderClass: 'side-menu-setting-list-drop' + }) + + try { + sortable('#apps-order-list .side-menu-setting-list')[0].addEventListener('sortstop', (e) => { + let value = [] + + for (let item of document.querySelectorAll('#apps-order-list .side-menu-setting-list-item')) { + value.push(item.getAttribute('data-id')) + } + + document.querySelector('input[name="apps-order"]').value = JSON.stringify(value) + }) + } catch (e) { + } }) diff --git a/src/components/AppSearch.vue b/src/components/AppSearch.vue deleted file mode 100644 index 9366756..0000000 --- a/src/components/AppSearch.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/src/components/MenuLogo.vue b/src/components/MenuLogo.vue deleted file mode 100644 index a619e96..0000000 --- a/src/components/MenuLogo.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - diff --git a/src/components/settings/AdminSaveButton.vue b/src/components/settings/AdminSaveButton.vue deleted file mode 100644 index cd639a8..0000000 --- a/src/components/settings/AdminSaveButton.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/src/components/settings/ExternalLink.vue b/src/components/settings/ExternalLink.vue deleted file mode 100644 index 80313fb..0000000 --- a/src/components/settings/ExternalLink.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/components/settings/SectionTitle.vue b/src/components/settings/SectionTitle.vue deleted file mode 100644 index b08b570..0000000 --- a/src/components/settings/SectionTitle.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - diff --git a/src/components/settings/SettingLabel.vue b/src/components/settings/SettingLabel.vue deleted file mode 100644 index a01b052..0000000 --- a/src/components/settings/SettingLabel.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - diff --git a/src/components/settings/SettingValue.vue b/src/components/settings/SettingValue.vue deleted file mode 100644 index 62db56c..0000000 --- a/src/components/settings/SettingValue.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - diff --git a/src/components/settings/SettingsSection.vue b/src/components/settings/SettingsSection.vue deleted file mode 100644 index f163c27..0000000 --- a/src/components/settings/SettingsSection.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - diff --git a/src/components/settings/UserSaveButton.vue b/src/components/settings/UserSaveButton.vue deleted file mode 100644 index b14974e..0000000 --- a/src/components/settings/UserSaveButton.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - diff --git a/src/components/settings/form/FormAppCategory.vue b/src/components/settings/form/FormAppCategory.vue deleted file mode 100644 index 588ce73..0000000 --- a/src/components/settings/form/FormAppCategory.vue +++ /dev/null @@ -1,292 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormAppPicker.vue b/src/components/settings/form/FormAppPicker.vue deleted file mode 100644 index 00df64b..0000000 --- a/src/components/settings/form/FormAppPicker.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormAppSort.vue b/src/components/settings/form/FormAppSort.vue deleted file mode 100644 index 7a2dec3..0000000 --- a/src/components/settings/form/FormAppSort.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormCatSort.vue b/src/components/settings/form/FormCatSort.vue deleted file mode 100644 index b335228..0000000 --- a/src/components/settings/form/FormCatSort.vue +++ /dev/null @@ -1,119 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormColorPicker.vue b/src/components/settings/form/FormColorPicker.vue deleted file mode 100644 index 904fa95..0000000 --- a/src/components/settings/form/FormColorPicker.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormDisplayPicker.vue b/src/components/settings/form/FormDisplayPicker.vue deleted file mode 100644 index 2e9c648..0000000 --- a/src/components/settings/form/FormDisplayPicker.vue +++ /dev/null @@ -1,85 +0,0 @@ - - diff --git a/src/components/settings/form/FormOpener.vue b/src/components/settings/form/FormOpener.vue deleted file mode 100644 index f1129f9..0000000 --- a/src/components/settings/form/FormOpener.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormRange.vue b/src/components/settings/form/FormRange.vue deleted file mode 100644 index 6ebada7..0000000 --- a/src/components/settings/form/FormRange.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormSelect.vue b/src/components/settings/form/FormSelect.vue deleted file mode 100644 index 3b303ca..0000000 --- a/src/components/settings/form/FormSelect.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormSize.vue b/src/components/settings/form/FormSize.vue deleted file mode 100644 index 1e1b468..0000000 --- a/src/components/settings/form/FormSize.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - diff --git a/src/components/settings/form/FormYesNo.vue b/src/components/settings/form/FormYesNo.vue deleted file mode 100644 index 3d9f0aa..0000000 --- a/src/components/settings/form/FormYesNo.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/src/components/settings/form/index.js b/src/components/settings/form/index.js deleted file mode 100644 index ae9204b..0000000 --- a/src/components/settings/form/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import FormRange from './FormRange' -import FormColorPicker from './FormColorPicker' -import FormOpener from './FormOpener' -import FormSelect from './FormSelect' -import FormYesNo from './FormYesNo' -import FormSize from './FormSize' -import FormAppPicker from './FormAppPicker' -import FormAppSort from './FormAppSort' -import FormCatSort from './FormCatSort' -import FormDisplayPicker from './FormDisplayPicker' -import FormAppCategory from './FormAppCategory' - -export { FormRange, FormColorPicker, FormOpener, FormSelect, FormYesNo, FormSize, FormAppPicker, FormAppSort, FormCatSort, FormDisplayPicker, FormAppCategory } diff --git a/src/components/settings/index.js b/src/components/settings/index.js deleted file mode 100644 index 2036c95..0000000 --- a/src/components/settings/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import SettingsSection from './SettingsSection' -import SettingItem from './SettingItem' -import SettingLabel from './SettingLabel' -import SettingValue from './SettingValue' -import SectionTitle from './SectionTitle' -import ExternalLink from './ExternalLink' -import AdminSaveButton from './AdminSaveButton' -import UserSaveButton from './UserSaveButton' - -export { SettingsSection, SettingItem, SettingLabel, SettingValue, SectionTitle, ExternalLink, AdminSaveButton, UserSaveButton } diff --git a/src/l10n/fixtures/cs.yaml b/src/l10n/fixtures/cs.yaml index ded151a..e92d3f3 100644 --- a/src/l10n/fixtures/cs.yaml +++ b/src/l10n/fixtures/cs.yaml @@ -1,111 +1,94 @@ -'Custom menu': 'Uživatelsky určená nabídka' -'Enable the custom menu': 'Zapnout uživatelsky určenou nabídku' -'No': 'Ne' -'Yes': 'Ano' -'Menu': 'Nabídka' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Pro otevření/skrytí postranní nabídky použijte zkratku Ctrl+o („O“ jako otevřít). Pro pohyb po použijte klávesu tab key.' -'Top menu': 'Horní nabídka' -'Apps that not must be moved in the side menu': 'Aplikace, které nepřesouvat do postranní nabídky' -'If there is no selection then the global configuration is applied.': 'Pokud neexistuje žádný výběr, je uplatněno globální nastavení.' -'Experimental': 'Experimentální' -'Save': 'Uložit' -'You like this app and you want to support me?': 'Líbí se vám tato aplikace a chcete podpořit její vývoj?' -'Buy me a coffee ☕': 'Kupte mi kafe ☕' -'Hidden': 'Skryté' -'Small': 'Malé' -'Normal': 'Normální' -'Big': 'Velké' -'Colors': 'Barvy' -'Background color': 'Barva pozadí' -'Background color of current app': 'Barva pozadí stávající aplikace' -'Text color': 'Barva textu' -'Loader': 'Nástroj pro načítání' -'Icon': 'Ikona' -'Same color': 'Stejná barva' -'Opposite color': 'Doplňková barva' -'Transparent': 'Průhledné' -'Opaque': 'Neprůhledné' -'Opener': 'Tlačítko pro otevření' -'Default': 'Výchozí' -'Default (dark)': 'Výchozí (tmavé)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (tmavé)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (tmavé)' -'Before the logo': 'Před logem' -'After the logo': 'Za logem' -'Position': 'Pozice' -'Show only the opener (hidden logo)': 'Zobrazovat pouze otevírací tlačítko (logo skryto)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Nezobrazovat postranní nabídku a její otevírací tlačítko pokud nejsou dostupné žádné aplikace (např. na veřejných stránkách).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Otevřít nabídku při najetím ukazatelem na tlačítko nabídky (automaticky vypnuto pro dotykové obrazovky)' -'Display the big menu': 'Zobrazit velkou nabídku' -'Display the logo': 'Zobrazit logo' -'Icons and texts': 'Ikony a texty' -'Loader enabled': 'Načítání zapnuto' -'Tips': 'Tipy' -'Always displayed': 'Vždy zobrazeno' -'This is the automatic behavior when the menu is always displayed.': 'Toto je automatické chování, kdy je nabídka vždy zobrazena.' -'Not compatible with touch screens.': 'Nekompatibilní s dotykovými obrazovkami.' -'Big menu': 'Velká nabídka' -'Live preview': 'Živý náhled' -'Open apps in new tab': 'Otevírat aplikace v novém panelu' -'Use the global setting': 'Použít globální nastavení' -'Use my selection': 'Použít můj výběr' -'Show and hide the list of applications': 'Zobrazit/skrýt seznam aplikací' -'Use the avatar instead of the logo': 'Použít namísto loga profilový obrázek uživatele' -'You do not have permission to change the settings.': 'Nemáte oprávnění měnit nastavení.' -'Force this configuration to users': 'Vynutit uplatnění těchto nastavení uživatelům' -'Export the configuration': 'Exportovat nastavení' -'Purge the cache': 'Vyprázdnit mezipaměť' -'Show the link to settings': 'Zobrazit odkaz na nastavení' -'The menu is enabled by default for users': 'Nabídka je ve výchozím stavu pro uživatele zapnutá' -'Except when the configuration is forced.': 'S výjimkou, kdy je nastavení vynuceno.' -'Apps that should not be displayed in the menu': 'Aplikace, které by neměly být v nabídce zobrazeny' -'This feature is only compatible with the big menu display.': 'Tato funkce je kompatibilní pouze s velkou nabídkou.' -'The logo is a link to the default app': 'Logo je odkaz na výchozí aplikaci' -'Others': 'Ostatní' -'Categories': 'Kategorie' -'Customize sorting': 'Přizpůsobit si řazení' -'Order by': 'Řadit podle' -'Name': 'Název' -'Customed': 'Přizpůsobeno' -'Show and hide the list of categories': 'Zobrazit/skrýt seznam kategorií' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Tyto parametry jsou použity v případě, že je zapnutý (Breeze) tmavý motiv vzhledu.' -'Dark mode colors': 'Barvy tmavého režimu' -'With categories': 'S kategoriemi' -'Custom categories': 'Vlastní kategorie' -'Customize application categories': 'Přizpůsobte kategorie aplikací' -'Reset to default': 'Vrátit zpět na výchozí hodnoty' -'Hidden icon': 'Skrytá ikona' -'Small icon': 'Malá ikona' -'Normal icon': 'Normální ikona' -'Big icon': 'Velká ikona' -'Hidden text': 'Skrytý text' -'Small text': 'Malý text' -'Normal text': 'Normální text' -'Big text': 'Velký text' -'Applications': 'Aplikace' -'Applications kept in the top menu': 'Aplikace ponechané v horní nabídce' -'Applications kept in the top menu but also shown in side menu': 'Aplikace ponechané v horní nabídce ale také zobrazené v té boční' -'These applications must be selected in the previous option.': 'Tyto aplikace je třeba vybrat v předchozí volbě.' -'Hide labels on mouse over': 'Skrýt popisky při najetím ukazatele myši' -'Except the hovered app': 'S výjimkou nadnášené aplikace' -'Search': 'Hledat' -'Toggle the menu': 'Vyp/zap nabídku' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Zeptejte se vývojáře' -'New request': 'Nový požadavek' -'Report a bug': 'Nahlásit chybu' -'Show the configuration': 'Zobrazit nastavení' -'Configuration:': 'Configuration:' -'Done!': 'Hotovo!' -'Copy': 'Zkopírovat' -'Need help': 'Potřebuji pomoc' -'I would like a new feature': 'Rád bych novou funkci v aplikaci' -'Something went wrong': 'Něco se pokazilo' -'Select apps': 'Vyberte aplikace' -'Sort': 'Seřadit' -'Customize': 'Přizpůsobit' -'Custom': 'Custom' -'Close': 'Zavřít' +"Custom menu": "Uživatelsky určená nabídka" +"Enable the custom menu": "Zapnout uživatelsky určenou nabídku" +"No": "Ne" +"Yes": "Ano" +"Menu": "Nabídka" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Pro otevření/skrytí postranní nabídky použijte zkratku Ctrl+O („O“ jako otevřít). Pro pohyb po použijte klávesu Tab.' +"Top menu": "Horní nabídka" +"Apps that not must be moved in the side menu": "Aplikace, které nepřesouvat do postranní nabídky" +"If there is no selection then the global configuration is applied.": "Pokud neexistuje žádný výběr, je uplatněno globální nastavení." +"Experimental": "Experimentální" +"Save": "Uložit" +"You like this app and you want to support me?": "Líbí se vám tato aplikace a chcete podpořit její vývoj?" +"Buy me a coffee ☕": "Kupte mi kafe ☕" +"Hidden": "Skryté" +"Small": "Malé" +"Normal": "Normální" +"Big": "Velké" +"Colors": "Barvy" +"Background color": "Barva pozadí" +"Background color of current app": "Barva pozadí stávající aplikace" +"Text color": "Barva textu" +"Loader": "Nástroj pro načítání" +"Icon": "Ikona" +"Same color": "Stejná barva" +"Opposite color": "Doplňková barva" +"Transparent": "Průhledné" +"Opaque": "Neprůhledné" +"Opener": "Tlačítko pro otevření" +"Default": "Výchozí" +"Default (dark)": "Výchozí (tmavé)" +"Hamburger": "Hamburger" +"Hamburger (dark)": "Hamburger (tmavé)" +"Hamburger 2": "Hamburger 2" +"Hamburger 2 (dark)": "Hamburger 2 (tmavé)" +"Before the logo": "Před logem" +"After the logo": "Za logem" +"Position": "Pozice" +"Show only the opener (hidden logo)": "Zobrazovat pouze otevírací tlačítko (logo skryto)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "Nezobrazovat postranní nabídku a její otevírací tlačítko pokud nejsou dostupné žádné aplikace (např. na veřejných stránkách)." +"Panel": "Panel" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Otevřít nabídku při najetím ukazatelem na tlačítko nabídky (automaticky vypnuto pro dotykové obrazovky)" +"Display the big menu": "Zobrazit velkou nabídku" +"Display the logo": "Zobrazit logo" +"Icons and texts": "Ikony a texty" +"Loader enabled": "Načítání zapnuto" +"Tips": "Tipy" +"Always displayed": "Vždy zobrazeno" +"This is the automatic behavior when the menu is always displayed.": "Toto je automatické chování, kdy je nabídka vždy zobrazena." +"Not compatible with touch screens.": "Nekompatibilní s dotykovými obrazovkami." +"Big menu": "Velká nabídka" +"Live preview": "Živý náhled" +"Open apps in new tab": "Otevírat aplikace v novém panelu" +"Use the global setting": "Použít globální nastavení" +"Use my selection": "Použít můj výběr" +"Show and hide the list of applications": "Zobrazit/skrýt seznam aplikací" +"Use the avatar instead of the logo": "Použít namísto loga profilový obrázek uživatele" +"You do not have permission to change the settings.": "Nemáte oprávnění měnit nastavení." +"Force this configuration to users": "Vynutit uplatnění těchto nastavení uživatelům" +"Export the configuration": "Exportovat nastavení" +"Purge the cache": "Vyprázdnit mezipaměť" +"Show the link to settings": "Zobrazit odkaz na nastavení" +"The menu is enabled by default for users": "Nabídka je ve výchozím stavu pro uživatele zapnutá" +"Except when the configuration is forced.": "S výjimkou, kdy je nastavení vynuceno." +"Apps that should not be displayed in the menu": "Aplikace, které by neměly být v nabídce zobrazeny" +"This feature is only compatible with the big menu display.": "Tato funkce je kompatibilní pouze s velkou nabídkou." +"The logo is a link to the default app": "Logo je odkaz na výchozí aplikaci" +"Others": "Ostatní" +"Categories": "Kategorie" +"Customize sorting": "Přizpůsobit si řazení" +"Order by": "Řadit podle" +"Name": "Název" +"Customed": "Přizpůsobeno" +"Show and hide the list of categories": "Zobrazit/skrýt seznam kategorií" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Tyto parametry jsou použity v případě, že je zapnutý (Breeze) tmavý motiv vzhledu." +"Dark mode colors": "Barvy tmavého režimu" +"With categories": "S kategoriemi" +"Custom categories": "Vlastní kategorie" +"Customize application categories": "Přizpůsobte kategorie aplikací" +"Reset to default": "Vrátit zpět na výchozí hodnoty" +"Hidden icon": "Skrytá ikona" +"Small icon": "Malá ikona" +"Normal icon": "Normální ikona" +"Big icon": "Velká ikona" +"Hidden text": "Skrytý text" +"Small text": "Malý text" +"Normal text": "Normální text" +"Big text": "Velký text" +"Applications": "Aplikace" +"Applications kept in the top menu": "Aplikace ponechané v horní nabídce" +"Applications kept in the top menu but also shown in side menu": "Aplikace ponechané v horní nabídce ale také zobrazené v té boční" +"These applications must be selected in the previous option.": "Tyto aplikace je třeba vybrat v předchozí volbě." +"Hide labels on mouse over": "Skrýt popisky při najetím ukazatele myši" +"Except the hovered app": "Except the hovered app" diff --git a/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index 6323421..a58dcd9 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -1,111 +1,94 @@ -'Custom menu': 'Benutzerdefiniertes Menü' -'Enable the custom menu': 'Benutzerdefiniertes Menü aktivieren' -'No': 'Nein' -'Yes': 'Ja' -'Menu': 'Menü' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Verwende die Tastenkombination Strg+o, um das Seitenmenü ein- und auszublenden. Verwende tab key zum Navigieren.' -'Top menu': 'Obere Navigationsleiste' -'Apps that not must be moved in the side menu': 'Apps, die nicht ins Seitenmenü verschoben werden sollen' -'If there is no selection then the global configuration is applied.': 'Wenn keine Auswahl vorhanden ist, wird die globale Konfiguration angewendet.' -'Experimental': 'Experimentell' -'Save': 'Speichern' -'You like this app and you want to support me?': 'Du magst diese App und möchtest mich unterstützen?' -'Buy me a coffee ☕': 'Gib mir einen Kaffee aus ☕' -'Hidden': 'Ausblenden' -'Small': 'Klein' -'Normal': 'Normal' -'Big': 'Groß' -'Colors': 'Farben' -'Background color': 'Hintergrundfarbe' -'Background color of current app': 'Hintergrundfarbe der aktuellen App' -'Text color': 'Textfarbe' -'Loader': 'Fortschrittsbalken' -'Icon': 'Symbol' -'Same color': 'Selbe Farbe' -'Opposite color': 'Gegenfarbe' -'Transparent': 'Transparent' -'Opaque': 'Nicht transparent' -'Opener': 'Menü-Symbol' -'Default': 'Standard' -'Default (dark)': 'Standard (dunkel)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (dunkel)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (dunkel)' -'Before the logo': 'Vor dem Logo' -'After the logo': 'Nach dem Logo' -'Position': 'Position' -'Show only the opener (hidden logo)': 'Nur das Menü-Symbol anzeigen (Logo wird ausgeblendet)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Zeige das Seitenmenü und das Menü-Symbol nicht an, wenn keine App vorhanden ist (z.B. bei öffentlichen Seiten).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Öffne das Menü, wenn die Maus über das Menü-Symbol bewegt wird (auf Touchscreens automatisch deaktiviert)' -'Display the big menu': 'Großes Menü anzeigen' -'Display the logo': 'Logo anzeigen' -'Icons and texts': 'Symbole und Texte' -'Loader enabled': 'Fortschrittsbalken anzeigen' -'Tips': 'Tipps' -'Always displayed': 'Immer anzeigen' -'This is the automatic behavior when the menu is always displayed.': 'Dies ist das automatische Verhalten, wenn das Menü immer angezeigt wird.' -'Not compatible with touch screens.': 'Nicht kompatibel mit Touchscreens.' -'Big menu': 'Großes Menü' -'Live preview': 'Live-Vorschau' -'Open apps in new tab': 'Öffne Apps in einem neuen Tab' -'Use the global setting': 'Verwende die globale Einstellung' -'Use my selection': 'Verwende meine Auswahl' -'Show and hide the list of applications': 'Ein- und Ausblenden der Appliste' -'Use the avatar instead of the logo': 'Avatar anstelle des Logos anzeigen' -'You do not have permission to change the settings.': 'Du hast keine Berechtigung, die Einstellungen dieser App zu ändern.' -'Force this configuration to users': 'Konfiguration für alle Benutzer erzwingen' -'Export the configuration': 'Konfiguration exportieren' -'Purge the cache': 'Cache leeren' -'Show the link to settings': 'Link zu den Einstellungen anzeigen' -'The menu is enabled by default for users': 'Das Menü ist standardmäßig für alle Benutzer aktiviert' -'Except when the configuration is forced.': 'Gilt nicht, wenn die Konfiguration erzwungen wird.' -'Apps that should not be displayed in the menu': 'Apps, die nicht im Menü angezeigt werden sollen' -'This feature is only compatible with the big menu display.': 'Kompatibel mit dem großen Menü.' -'The logo is a link to the default app': 'Das Logo ist ein Link zur Standard-App' -'Others': 'Andere' -'Categories': 'Kategorien' -'Customize sorting': 'Sortierung anpassen' -'Order by': 'Sortieren nach' -'Name': 'Name' -'Customed': 'Benutzerdefiniert' -'Show and hide the list of categories': 'Liste der Kategorien ein- und ausblenden' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Diese Optionen werden auf Dark Theme oder Breeze Dark Theme angewendet.' -'Dark mode colors': 'Farben für den dunklen Modus' -'With categories': 'Mit Kategorien' -'Custom categories': 'Benutzerdefinierte Kategorien' -'Customize application categories': 'App-Kategorien anpassen' -'Reset to default': 'Auf Standard zurücksetzen' -'Hidden icon': 'Verstecktes Symbol' -'Small icon': 'Kleines Symbol' -'Normal icon': 'Normales Symbol' -'Big icon': 'Großes Icon' -'Hidden text': 'Versteckter Text' -'Small text': 'Kleiner Text' -'Normal text': 'Normaler Text' -'Big text': 'Großer Text' -'Applications': 'Apps' -'Applications kept in the top menu': 'Apps in der oberen Navigationsleiste' -'Applications kept in the top menu but also shown in side menu': 'Apps in der oberen Navigationsleiste, die auch im Seitenmenü angezeigt werden sollen' -'These applications must be selected in the previous option.': 'Diese Apps müssen auch in der vorherigen Einstellung ausgewählt werden.' -'Hide labels on mouse over': 'Labels ausblenden, wenn sich die Maus darüber befindet (Hover)' -'Except the hovered app': 'Außer die markierte App' -'Search': 'Suche' -'Toggle the menu': 'Menü ein- und ausblenden' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Ask the developer' -'New request': 'New request' -'Report a bug': 'Report a bug' -'Show the configuration': 'Show the configuration' -'Configuration:': 'Configuration:' -'Done!': 'Done!' -'Copy': 'Copy' -'Need help': 'Need help' -'I would like a new feature': 'I would like a new feature' -'Something went wrong': 'Something went wrong' -'Select apps': 'Select apps' -'Sort': 'Sort' -'Customize': 'Customize' -'Custom': 'Custom' -'Close': 'Close' +"Custom menu": "Benutzerdefiniertes Menü" +"Enable the custom menu": "Benutzerdefiniertes Menü aktivieren" +"No": "Nein" +"Yes": "Ja" +"Menu": "Menü" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Verwende die Tastenkombination Strg+o, um das Seitenmenü ein- und auszublenden. Verwende tab zum Navigieren.' +"Top menu": "Obere Navigationsleiste" +"Apps that not must be moved in the side menu": "Anwendungen, die nicht ins Seitenmenü verschoben werden sollen" +"If there is no selection then the global configuration is applied.": "Wenn keine Auswahl vorhanden ist, wird die globale Konfiguration angewendet." +"Experimental": "Experimentell" +"Save": "Speichern" +"You like this app and you want to support me?": "Du magst diese Anwendung und möchtest mich unterstützen?" +"Buy me a coffee ☕": "Gib mir einen Kaffee aus ☕" +"Hidden": "Ausblenden" +"Small": "Klein" +"Normal": "Normal" +"Big": "Groß" +"Colors": "Farben" +"Background color": "Hintergrundfarbe" +"Background color of current app": "Hintergrundfarbe der aktuellen Anwendung" +"Text color": "Textfarbe" +"Loader": "Ladestandanzeige" +"Icon": "Symbol" +"Same color": "Selbe Farbe" +"Opposite color": "Gegenfarbe" +"Transparent": "Transparent" +"Opaque": "Nicht transparent" +"Opener": "Menü-Symbol" +"Default": "Standard" +"Default (dark)": "Standard (dunkel)" +"Hamburger": "Hamburger" +"Hamburger (dark)": "Hamburger (dunkel)" +"Hamburger 2": "Hamburger 2" +"Hamburger 2 (dark)": "Hamburger 2 (dunkel)" +"Before the logo": "Vor dem Logo" +"After the logo": "Nach dem Logo" +"Position": "Position" +"Show only the opener (hidden logo)": "Nur das Menü-Symbol anzeigen (Logo wird ausgeblendet)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "Zeige das Seitenmenü und das Menü-Symbol nicht an, wenn keine Anwendung vorhanden ist (z.B. bei öffentlichen Seiten)." +"Panel": "Panel" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Öffne das Menü, wenn die Maus über das Menü-Symbol bewegt wird (auf Touchscreens automatisch deaktiviert)" +"Display the big menu": "Großes Menü anzeigen" +"Display the logo": "Logo anzeigen" +"Icons and texts": "Symbole und Texte" +"Loader enabled": "Ladestandanzeige aktiviert" +"Tips": "Tipps" +"Always displayed": "Immer anzeigen" +"This is the automatic behavior when the menu is always displayed.": "Dies ist das automatische Verhalten, wenn das Menü immer angezeigt wird." +"Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens." +"Big menu": "Großes Menü" +"Live preview": "Live-Vorschau" +"Open apps in new tab": "Öffne Anwendungen in einem neuen Tab" +"Use the global setting": "Verwende die globale Einstellung" +"Use my selection": "Verwende meine Auswahl" +"Show and hide the list of applications": "Ein- und Ausblenden der Anwendungsliste" +"Use the avatar instead of the logo": "Avatar anstelle des Logos anzeigen" +"You do not have permission to change the settings.": "Du hast keine Berechtigung, die Einstellungen dieser Anwendung zu ändern." +"Force this configuration to users": "Konfiguration für alle Benutzer erzwingen" +"Export the configuration": "Konfiguration exportieren" +"Purge the cache": "Cache leeren" +"Show the link to settings": "Link zu den Einstellungen anzeigen" +"The menu is enabled by default for users": "Das Menü ist standardmäßig für alle Benutzer aktiviert" +"Except when the configuration is forced.": "Gilt nicht, wenn die Konfiguration erzwungen wird." +"Apps that should not be displayed in the menu": "Anwendungen, die nicht im Menü angezeigt werden sollen" +"This feature is only compatible with the big menu display.": "Kompatibel mit dem großen Menü." +"The logo is a link to the default app": "Das Logo ist ein Link zur Standard-App" +"Others": "Andere" +"Categories": "Kategorien" +"Customize sorting": "Sortierung anpassen" +"Order by": "Sortieren nach" +"Name": "Name" +"Customed": "Benutzerdefiniert" +"Show and hide the list of categories": "Liste der Kategorien ein- und ausblenden" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Diese Optionen werden auf Dark Theme oder Breeze Dark Theme angewendet." +"Dark mode colors": "Farben für den dunklen Modus" +"With categories": "Mit Kategorien" +"Custom categories": "Benutzerdefinierte Kategorien" +"Customize application categories": "Anwendungskategorien anpassen" +"Reset to default": "Auf Standard zurücksetzen" +"Hidden icon": "Verstecktes Symbol" +"Small icon": "Kleines Symbol" +"Normal icon": "Normales Symbol" +"Big icon": "Große Ikone" +"Hidden text": "Versteckter Text" +"Small text": "Kleiner Text" +"Normal text": "Normaler Text" +"Big text": "Großer Text" +"Applications": "Anwendungen" +"Applications kept in the top menu": "Applications kept in the top menu" +"Applications kept in the top menu but also shown in side menu": "Applications kept in the top menu but also shown in side menu" +"These applications must be selected in the previous option.": "These applications must be selected in the previous option." +"Hide labels on mouse over": "Hide labels on mouse over" +"Except the hovered app": "Except the hovered app" diff --git a/src/l10n/fixtures/es.yaml b/src/l10n/fixtures/es.yaml index e1af7a6..46df437 100644 --- a/src/l10n/fixtures/es.yaml +++ b/src/l10n/fixtures/es.yaml @@ -1,111 +1,94 @@ -'Custom menu': 'Menú personalizado' -'Enable the custom menu': 'Activar el menú personalizado' -'No': 'No' -'Yes': 'Sí' -'Menu': 'Menú' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Usa la combinación de teclas Ctrl+o para activar y desactivar el menú lateral. Use tab key para navegar.' -'Top menu': 'Menu principal' -'Apps that not must be moved in the side menu': 'Aplicaciones que no se deben mover al menú lateral' -'If there is no selection then the global configuration is applied.': 'Si no hay selección, se aplica la configuración global.' -'Experimental': 'En pruebas' -'Save': 'Guardar' -'You like this app and you want to support me?': '¿Te gusta esta aplicación y quieres apoyarme?' -'Buy me a coffee ☕': 'Cómprame un café ☕' -'Hidden': 'Oculto' -'Small': 'Pequeño' -'Normal': 'Normal' -'Big': 'Grande' -'Hidden icon': 'Ocultar Icono' -'Small icon': 'Icono pequeño' -'Normal icon': 'Icono normal' -'Big icon': 'Icono grande' -'Hidden text': 'Texto oculto' -'Small text': 'Texto pequeño' -'Normal text': 'Texto normal' -'Big text': 'Texto grande' -'Colors': 'Colores' -'Background color': 'Color de fondo' -'Background color of current app': 'Color de fondo de la aplicación actual' -'Text color': 'Color del texto' -'Loader': 'Cargador' -'Icon': 'Icono' -'Same color': 'El mismo color' -'Opposite color': 'Color opuesto' -'Transparent': 'Transparente' -'Opaque': 'Opaco' -'Opener': 'Abrir' -'Default': 'Por defecto' -'Default (dark)': 'Por defecto (oscuro)' -'Hamburger': 'Hamburguesa' -'Hamburger (dark)': 'Hamburger (negro)' -'Hamburger 2': 'Hamburguesa 2' -'Hamburger 2 (dark)': 'Hamburger 2 (negro)' -'Before the logo': 'Antes del logotipo' -'After the logo': 'Después del logotipo' -'Position': 'Posición' -'Show only the opener (hidden logo)': 'Mostrar solo abrir (ocultar logotipo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'No mostrar el menú lateral y el abridor si no hay aplicación (por ejemplo: páginas públicas).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Abra el menú cuando el ratón esté sobre el icono (se desactiva automáticamente en las pantallas táctiles)' -'Display the big menu': 'Mostrar el menú grande' -'Display the logo': 'Mostrar el logotipo' -'Icons and texts': 'Iconos y textos' -'Loader enabled': 'Cargador activado' -'Tips': 'Consejos' -'Always displayed': 'Siempre se muestra' -'This is the automatic behavior when the menu is always displayed.': 'Este es el comportamiento automático cuando aún se muestra el menú.' -'Not compatible with touch screens.': 'No es compatible con las pantallas táctiles.' -'Big menu': 'Menú grande' -'Live preview': 'Previsualización en directo' -'Open apps in new tab': 'Abrir las aplicaciones en una nueva pestaña' -'Use the global setting': 'Utilizar la configuración global' -'Use my selection': 'Utilizar mi selección' -'Show and hide the list of applications': 'Mostrar y ocultar la lista de aplicaciones' -'Use the avatar instead of the logo': 'Utilizar un avatar en lugar de un logotipo' -'You do not have permission to change the settings.': 'No tienes permiso para cambiar la configuración.' -'Force this configuration to users': 'Forzar esta configuración a todos los usuarios' -'Export the configuration': 'Exportar la configuración' -'Purge the cache': 'Vaciar la caché' -'Show the link to settings': 'Mostrar un enlace a la configuración' -'The menu is enabled by default for users': 'El menú está activado por defecto para los usuarios' -'Except when the configuration is forced.': 'Excepto cuando la configuración es forzada.' -'Apps that should not be displayed in the menu': 'Aplicaciones que no deben aparecer en el menú' -'This feature is only compatible with the big menu display.': 'Esta función sólo es compatible con la pantalla del menú grande.' -'The logo is a link to the default app': 'El logotipo es un enlace a la aplicación por defecto' -'Others': 'Otros' -'Categories': 'Categorías' -'Customize sorting': 'Personalizar la clasificación' -'Order by': 'Ordenar por' -'Name': 'Nombre' -'Customed': 'Personalizado' -'Show and hide the list of categories': 'Mostrar y ocultar la lista de categorías' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Estos parámetros se utilizan cuando el tema oscuro o el tema oscuro de Breeze están activados.' -'Dark mode colors': 'Colores del modo oscuro' -'With categories': 'Con categorías' -'Custom categories': 'Categorías personalizadas' -'Customize application categories': 'Personalizar las categorías de las aplicaciones' -'Reset to default': 'Restablecer los valores por defecto' -'Applications': 'Aplicaciones' -'Applications kept in the top menu': 'Aplicaciones guardadas en el menú superior' -'Applications kept in the top menu but also shown in side menu': 'Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral' -'These applications must be selected in the previous option.': 'Estas aplicaciones deben ser seleccionadas en las opciones anteriores.' -'Hide labels on mouse over': 'Ocultar las etiquetas al pasar el ratón' -'Except the hovered app': 'Excepto la aplicación sobre la que se pasa el cursor' -'Search': 'Buscar' -'Toggle the menu': 'Alternar el menú' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Pregúntale al desarrollador' -'New request': 'Nueva solicitud' -'Report a bug': 'Informar de un fallo' -'Show the configuration': 'Mostrar los ajustes' -'Configuration:': 'Configuration:' -'Done!': '¡Realizado!' -'Copy': 'Copiar' -'Need help': 'Ayudame' -'I would like a new feature': 'Me gustaría una nueva función' -'Something went wrong': 'Algo salió mal' -'Select apps': 'Selecciona las aplicaciones' -'Sort': 'Ordenar' -'Customize': 'Personalizar' -'Custom': 'Custom' -'Close': 'Cerrar' +"Custom menu": "Menú personalizado" +"Enable the custom menu": "Habilitar el menú personalizado" +"No": "No" +"Yes": "Sí" +"Menu": "Menú" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Usa la combinación de teclas Ctrl+o para activar y desactivar el menú lateral. Use tab para navegar.' +"Top menu": "Menu principal" +"Apps that not must be moved in the side menu": "Aplicaciones que no se deben mover al menú lateral" +"If there is no selection then the global configuration is applied.": "Si no hay selección, se aplica la configuración global." +"Experimental": "En pruebas" +"Save": "Guardar" +"You like this app and you want to support me?": "¿Te gusta esta aplicación y quieres apoyarme?" +"Buy me a coffee ☕": "Cómprame un café ☕" +"Hidden": "Oculto" +"Small": "Pequeño" +"Normal": "Normal" +"Big": "Grande" +"Hidden icon": "Ocultar Icono" +"Small icon": "Icono pequeño" +"Normal icon": "Icono normal" +"Big icon": "Icono grande" +"Hidden text": "Texto oculto" +"Small text": "Texto pequeño" +"Normal text": "Texto normal" +"Big text": "Texto grande" +"Colors": "Colores" +"Background color": "Color de fondo" +"Background color of current app": "Color de fondo de la aplicación actual" +"Text color": "Color del texto" +"Loader": "Cargador" +"Icon": "Icono" +"Same color": "El mismo color" +"Opposite color": "Color opuesto" +"Transparent": "Transparente" +"Opaque": "Opaco" +"Opener": "Abrir" +"Default": "Por defecto" +"Default (dark)": "Por defecto (oscuro)" +"Hamburger": "Hamburguesa" +"Hamburger (dark)": "Hamburger (negro)" +"Hamburger 2": "Hamburguesa 2" +"Hamburger 2 (dark)": "Hamburger 2 (negro)" +"Before the logo": "Antes del logotipo" +"After the logo": "Después del logotipo" +"Position": "Posición" +"Show only the opener (hidden logo)": "Mostrar solo abrir (ocultar logotipo)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "No mostrar el menú lateral y el abridor si no hay aplicación (por ejemplo: páginas públicas)." +"Panel": "Panel" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Abra el menú cuando el ratón esté sobre el icono (se desactiva automáticamente en las pantallas táctiles)" +"Display the big menu": "Mostrar el menú grande" +"Display the logo": "Mostrar el logotipo" +"Icons and texts": "Iconos y textos" +"Loader enabled": "Cargador activado" +"Tips": "Consejos" +"Always displayed": "Siempre se muestra" +"This is the automatic behavior when the menu is always displayed.": "Este es el comportamiento automático cuando aún se muestra el menú." +"Not compatible with touch screens.": "No es compatible con las pantallas táctiles." +"Big menu": "Menú grande" +"Live preview": "Previsualización en directo" +"Open apps in new tab": "Abrir las aplicaciones en una nueva pestaña" +"Use the global setting": "Utilizar la configuración global" +"Use my selection": "Utilizar mi selección" +"Show and hide the list of applications": "Mostrar y ocultar la lista de aplicaciones" +"Use the avatar instead of the logo": "Utilizar un avatar en lugar de un logotipo" +"You do not have permission to change the settings.": "No tienes permiso para cambiar la configuración." +"Force this configuration to users": "Forzar esta configuración a todos los usuarios" +"Export the configuration": "Exportar la configuración" +"Purge the cache": "Vaciar la caché" +"Show the link to settings": "Mostrar un enlace a la configuración" +"The menu is enabled by default for users": "El menú está activado por defecto para los usuarios" +"Except when the configuration is forced.": "Excepto cuando la configuración es forzada." +"Apps that should not be displayed in the menu": "Aplicaciones que no deben aparecer en el menú" +"This feature is only compatible with the big menu display.": "Esta función sólo es compatible con la pantalla del menú grande." +"The logo is a link to the default app": "El logotipo es un enlace a la aplicación por defecto" +"Others": "Otros" +"Categories": "Categorías" +"Customize sorting": "Personalizar la clasificación" +"Order by": "Ordenar por" +"Name": "Nombre" +"Customed": "Personalizado" +"Show and hide the list of categories": "Mostrar y ocultar la lista de categorías" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Estos parámetros se utilizan cuando el tema oscuro o el tema oscuro de Breeze están activados." +"Dark mode colors": "Colores del modo oscuro" +"With categories": "Con categorías" +"Custom categories": "Categorías personalizadas" +"Customize application categories": "Personalizar las categorías de las aplicaciones" +"Reset to default": "Restablecer los valores por defecto" +"Applications": "Aplicaciones" +"Applications kept in the top menu": "Aplicaciones guardadas en el menú superior" +"Applications kept in the top menu but also shown in side menu": "Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral" +"These applications must be selected in the previous option.": "Estas aplicaciones deben ser seleccionadas en las opciones anteriores." +"Hide labels on mouse over": "Ocultar las etiquetas al pasar el ratón" +"Except the hovered app": "Except the hovered app" diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index 295680a..cde508a 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -1,130 +1,94 @@ -'Custom menu': 'Menu personnalisé' -'Enable the custom menu': 'Activer le menu personnalisé' -'No': 'Non' -'Yes': 'Oui' -'Menu': 'Menu' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Utiliser - le raccourcis clavier Ctrl+o pour ouvrir et fermer le menu latéral. Utiliser tab - key pour naviguer.' -'Top menu': 'Menu supérieur' -'Apps that not must be moved in the side menu': 'Les applications qui ne doivent pas - être affichées dans le menu latéral' -'If there is no selection then the global configuration is applied.': "Si il n'y a - aucune sélection alors la configuration globale sera appliquée." -'Experimental': 'Expérimental' -'Save': 'Sauvegarder' -'You like this app and you want to support me?': "Vous aimer cette application et - vous souhaitez m'aider ?" -'Buy me a coffee ☕': 'Offrez moi un café ☕' -'Hidden': 'Caché' -'Small': 'Petit' -'Normal': 'Normal' -'Big': 'Gros' -'Hidden icon': 'Icône masqué' -'Small icon': 'Petit icône' -'Normal icon': 'Icône normal' -'Big icon': 'Gros icône' -'Hidden text': 'Text masqué' -'Small text': 'Texte petit' -'Normal text': 'Texte normal' -'Big text': 'Gros texte' -'Colors': 'Couleurs' -'Background color': 'Couleur de fond' -'Background color of current app': "Couleur de fond de l'application en cours" -'Text color': 'Couleur du texte' -'Loader': 'Indicateur de chargement' -'Icon': 'Icône' -'Same color': 'Même couleur' -'Opposite color': 'Couleur opposée' -'Transparent': 'Transparent' -'Opaque': 'Opaque' -'Opener': "Bouton d'ouverture" -'Default': 'Par défaut' -'Default (dark)': 'Par défaut (sombre)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (sombre)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (sombre)' -'Before the logo': 'Avant le logo' -'After the logo': 'Après le logo' -'Position': 'Position' -'Show only the opener (hidden logo)': "Afficher uniquement le bouton d'ouverture (masquer - le logo)" -'Do not display the side menu and the opener if there is no application (eg: public pages).': "Ne - pas afficher le menu latéral et le bouton d'ouverture s'il n'y a aucune application - (exemple : page publiques)." -'Panel': 'Panneau' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Ouvrir - le menu au passage de la souris (automatiquement désactivé sur les écrans tactiles)' -'Display the big menu': 'Afficher le menu large' -'Display the logo': 'Afficher le logo' -'Icons and texts': 'Icônes et textes' -'Loader enabled': "Activation de l'indicateur de chargement" -'Tips': 'Astuces' -'Always displayed': 'Toujours affiché' -'This is the automatic behavior when the menu is always displayed.': "C'est le comportement - automatique lorsque le menu est toujours affiché." -'Not compatible with touch screens.': 'Incompatible avec les écrans tactiles.' -'Big menu': 'Menu large' -'Live preview': 'Aperçu en direct' -'Open apps in new tab': 'Ouvrir les applications dans un nouvel onglet' -'Use the global setting': 'Utiliser la configuration globale' -'Use my selection': 'Utiliser ma sélection' -'Show and hide the list of applications': 'Afficher et masquer la liste des applications' -'Use the avatar instead of the logo': "Utiliser l'avatar à la place du logo" -'You do not have permission to change the settings.': "Vous n'avez pas la permission - de changer les paramètres." -'Force this configuration to users': 'Forcer cette configuration aux utilisateurs' -'Export the configuration': 'Exporter la configuration' -'Purge the cache': 'Purger le cache' -'Show the link to settings': 'Afficher le lien vers les paramètres' -'The menu is enabled by default for users': 'Le menu est activé par défaut pour les - utilisateurs' -'Except when the configuration is forced.': 'Sauf lorsque la configuration est forcée.' -'Apps that should not be displayed in the menu': 'Applications qui ne doivent pas - être affichées dans le menu' -'This feature is only compatible with the big menu display.': "Compatible - avec l'affichage Menu large." -'The logo is a link to the default app': "Le logo est un lien vers l'application par - défaut" -'Others': 'Autres' -'Categories': 'Catégories' -'Customize sorting': 'Personnaliser le tri' -'Order by': 'Trier par' -'Name': 'Nom' -'Customed': 'Personnalisé' -'Show and hide the list of categories': 'Afficher et masquer la liste des catégories' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Ces - paramètres sont utilisés lorsque le thème sombre ou le thème Breeze Dark sont activés.' -'Dark mode colors': 'Couleurs du mode sombre' -'With categories': 'Avec les catégories' -'Custom categories': 'Catégories personnalisées' -'Customize application categories': 'Personnaliser les catégories des applications' -'Reset to default': 'Restaurer les valeurs par défaut' -'Applications': 'Applications' -'Applications kept in the top menu': 'Applications conservées dans le menu supérieur' -'Applications kept in the top menu but also shown in side menu': 'Applications conservées - dans le menu supérieur mais également affichées dans le menu latéral' -'These applications must be selected in the previous option.': "Ces applications doivent - également être sélectionnées dans l'option précédente." -'Hide labels on mouse over': 'Masquer le libellé des applications au passage de la - souris' -'Except the hovered app': "À l'exception de l'application survolée" -'Search': 'Rechercher' -'Toggle the menu': 'Basculer le menu' -'Open the documentation': 'Afficher la documentation' -'Ask the developer': 'Demander au(x) développeurs⋅euses' -'New request': 'Nouvelle requête' -'Report a bug': 'Rapporter un bug' -'Show the configuration': 'Afficher la configuration' -'Configuration:': 'Configuration :' -'Done!': 'Fait !' -'Copy': 'Copié' -'Need help': "Besoin d'aide" -'I would like a new feature': 'Je souhaiterais une fonctionnalité' -'Something went wrong': "Quelque chose s'est mal passé" -'Select apps': 'Selection des apps' -'Sort': 'Ordonner' -'Customize': 'Personnaliser' -'Custom': 'Personnalisé' -'Close': 'Fermer' +"Custom menu": "Menu personnalisé" +"Enable the custom menu": "Activer le menu personnalisé" +"No": "Non" +"Yes": "Oui" +"Menu": "Menu" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Utiliser le raccourcis clavier Ctrl+o pour ouvrir et fermer le menu latéral. Utiliser tab pour naviguer.' +"Top menu": "Menu supérieur" +"Apps that not must be moved in the side menu": "Les applications qui ne doivent pas être affichées dans le menu latéral" +"If there is no selection then the global configuration is applied.": "Si il n'y a aucune sélection alors la configuration globale sera appliquée." +"Experimental": "Expérimental" +"Save": "Sauvegarder" +"You like this app and you want to support me?": "Vous aimer cette application et vous souhaitez m'aider ?" +"Buy me a coffee ☕": "Offrez moi un café ☕" +"Hidden": "Caché" +"Small": "Petit" +"Normal": "Normal" +"Big": "Gros" +"Hidden icon": "Icône masqué" +"Small icon": "Petit icône" +"Normal icon": "Icône normal" +"Big icon": "Gros icône" +"Hidden text": "Text masqué" +"Small text": "Texte petit" +"Normal text": "Texte normal" +"Big text": "Gros texte" +"Colors": "Couleurs" +"Background color": "Couleur de fond" +"Background color of current app": "Couleur de fond de l'application en cours" +"Text color": "Couleur du texte" +"Loader": "Indicateur de chargement" +"Icon": "Icône" +"Same color": "Même couleur" +"Opposite color": "Couleur opposée" +"Transparent": "Transparent" +"Opaque": "Opaque" +"Opener": "Bouton d'ouverture" +"Default": "Par défaut" +"Default (dark)": "Par défaut (sombre)" +"Hamburger": "Hamburger" +"Hamburger (dark)": "Hamburger (sombre)" +"Hamburger 2": "Hamburger 2" +"Hamburger 2 (dark)": "Hamburger 2 (sombre)" +"Before the logo": "Avant le logo" +"After the logo": "Après le logo" +"Position": "Position" +"Show only the opener (hidden logo)": "Afficher uniquement le bouton d'ouverture (masquer le logo)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "Ne pas afficher le menu latéral et le bouton d'ouverture s'il n'y a aucune application (exemple : page publiques)." +"Panel": "Panneau" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Ouvrir le menu au passage de la souris (automatiquement désactivé sur les écrans tactiles)" +"Display the big menu": "Afficher le menu large" +"Display the logo": "Afficher le logo" +"Icons and texts": "Icônes et textes" +"Loader enabled": "Activation de l'indicateur de chargement" +"Tips": "Astuces" +"Always displayed": "Toujours affiché" +"This is the automatic behavior when the menu is always displayed.": "C'est le comportement automatique lorsque le menu est toujours affiché." +"Not compatible with touch screens.": "Incompatible avec les écrans tactiles." +"Big menu": "Menu large" +"Live preview": "Aperçu en direct" +"Open apps in new tab": "Ouvrir les applications dans un nouvel onglet" +"Use the global setting": "Utiliser la configuration globale" +"Use my selection": "Utiliser ma sélection" +"Show and hide the list of applications": "Afficher et masquer la liste des applications" +"Use the avatar instead of the logo": "Utiliser l'avatar à la place du logo" +"You do not have permission to change the settings.": "Vous n'avez pas la permission de changer les paramètres." +"Force this configuration to users": "Forcer cette configuration aux utilisateurs" +"Export the configuration": "Exporter la configuration" +"Purge the cache": "Purger le cache" +"Show the link to settings": "Afficher le lien vers les paramètres" +"The menu is enabled by default for users": "Le menu est activé par défaut pour les utilisateurs" +"Except when the configuration is forced.": "Sauf lorsque la configuration est forcée." +"Apps that should not be displayed in the menu": "Applications qui ne doivent pas être affichées dans le menu" +"This feature is only compatible with the big menu display.": "Compatible avec l'affichage Menu large." +"The logo is a link to the default app": "Le logo est un lien vers l'application par défaut" +"Others": "Autres" +"Categories": "Catégories" +"Customize sorting": "Personnaliser le tri" +"Order by": "Trier par" +"Name": "Nom" +"Customed": "Personnalisé" +"Show and hide the list of categories": "Afficher et masquer la liste des catégories" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Ces paramètres sont utilisés lorsque le thème sombre ou le thème Breeze Dark sont activés." +"Dark mode colors": "Couleurs du mode sombre" +"With categories": "Avec les catégories" +"Custom categories": "Catégories personnalisées" +"Customize application categories": "Personnaliser les catégories des applications" +"Reset to default": "Restaurer les valeurs par défaut" +"Applications": "Applications" +"Applications kept in the top menu": "Applications conservées dans le menu supérieur" +"Applications kept in the top menu but also shown in side menu": "Applications conservées dans le menu supérieur mais également affichées dans le menu latéral" +"These applications must be selected in the previous option.": "Ces applications doivent également être sélectionnées dans l'option précédente." +"Hide labels on mouse over": "Masquer le libellé des applications au passage de la souris" +"Except the hovered app": "À l'exception de l'application survolée" diff --git a/src/l10n/fixtures/gl.yaml b/src/l10n/fixtures/gl.yaml deleted file mode 100644 index 59176d5..0000000 --- a/src/l10n/fixtures/gl.yaml +++ /dev/null @@ -1,111 +0,0 @@ -'Custom menu': 'Menú personalizado' -'Enable the custom menu': 'Activar o menú personalizado' -'No': 'Non' -'Yes': 'Si' -'Menu': 'Menú' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Use o atallo Ctrl+o para abrir e agochar o menú lateral. Use a tecla Tab para navegar.' -'Top menu': 'Top menu' -'Apps that not must be moved in the side menu': 'As aplicacións que non deben moverse no menú lateral' -'If there is no selection then the global configuration is applied.': 'Se non hai selección, aplícase a configuración global.' -'Experimental': 'Experimental' -'Save': 'Gardar' -'You like this app and you want to support me?': 'Gústalle esta aplicación e quere axudarme?' -'Buy me a coffee ☕': 'Convídeme a un café ☕' -'Hidden': 'Agochado' -'Small': 'Pequeno' -'Normal': 'Normal' -'Big': 'Grande' -'Hidden icon': 'Icona agochada' -'Small icon': 'Icona pequena' -'Normal icon': 'Icona normal' -'Big icon': 'Icona grande' -'Hidden text': 'Texto agochado' -'Small text': 'Texto pequeno' -'Normal text': 'Texto normal' -'Big text': 'Texto grande' -'Colors': 'Cores' -'Background color': 'Cor do fondo' -'Background color of current app': 'Cor do fondo da aplicación actual' -'Text color': 'Cor do texto' -'Loader': 'Cargador' -'Icon': 'Icona' -'Same color': 'A mesma cor' -'Opposite color': 'A cor oposta' -'Transparent': 'Transparente' -'Opaque': 'Opaco' -'Opener': 'Abrir' -'Default': 'Predeterminado' -'Default (dark)': 'Predeterminado (escuro)' -'Hamburger': 'Hamburguesa' -'Hamburger (dark)': 'Hamburguesa (escuro)' -'Hamburger 2': 'Hamburguesa 2' -'Hamburger 2 (dark)': 'Hamburguesa 2 (escuro)' -'Before the logo': 'Antes do logotipo' -'After the logo': 'Após o logotipo' -'Position': 'Posición' -'Show only the opener (hidden logo)': 'Amosar só a icona de abrir (agochar o logotipo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Non amosar o menú lateral e a icona de abrir se non hai ningunha aplicación (por exemplo: páxinas públicas).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Abre o menú cando o rato está sobre a icona de abrir (desactivado automaticamente nas pantallas táctiles)' -'Display the big menu': 'Amosar o menú en grande' -'Display the logo': 'Amosar o logotipo' -'Icons and texts': 'Iconas e textos' -'Loader enabled': 'Cargador activado' -'Tips': 'Consellos' -'Always displayed': 'Amosado sempre' -'This is the automatic behavior when the menu is always displayed.': 'Este é o comportamento automático cando se amosa sempre o menú.' -'Not compatible with touch screens.': 'Non é compatíbel coas pantallas táctiles.' -'Big menu': 'Menú grande' -'Live preview': 'Vista previa en directo' -'Open apps in new tab': 'Abrir as aplicacións nunha nova lapela' -'Use the global setting': 'Usar o axuste global' -'Use my selection': 'Usar a miña selección' -'Show and hide the list of applications': 'Amosar e agochar a lista de aplicacións' -'Use the avatar instead of the logo': 'Usar o avatar no canto do logotipo' -'You do not have permission to change the settings.': 'Non ten permiso para cambiar os axustes.' -'Force this configuration to users': 'Forzar esta configuración para os usuarios' -'Export the configuration': 'Exportar a configuración' -'Purge the cache': 'Limpar a caché' -'Show the link to settings': 'Amosar a ligazón aos axustes' -'The menu is enabled by default for users': 'De xeito predeterminado o menú está activado para os usuarios' -'Except when the configuration is forced.': 'Agás cando a configuración é forzada.' -'Apps that should not be displayed in the menu': 'Aplicacións que non deben amosarse no menú' -'This feature is only compatible with the big menu display.': 'Esta función só é compatíbel coa presentación do menú grande.' -'The logo is a link to the default app': 'O logotipo é unha ligazón á aplicación predeterminada' -'Others': 'Outros' -'Categories': 'Categorías' -'Customize sorting': 'Personalizar a ordenación' -'Order by': 'Ordenar por' -'Name': 'Nome' -'Customed': 'Personalizado' -'Show and hide the list of categories': 'Amosar e agochar a lista de categorías' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Estes parámetros úsanse cando o tema escuro ou o tema escuro de Breeze están activados.' -'Dark mode colors': 'Cores do modo escuro' -'With categories': 'Con categorías' -'Custom categories': 'Categorías personalizadas' -'Customize application categories': 'Personalizar as categorías das aplicacións' -'Reset to default': 'Restabelecer os valores predeterminados' -'Applications': 'Aplicacións' -'Applications kept in the top menu': 'As aplicacións mantéñense no menú superior' -'Applications kept in the top menu but also shown in side menu': 'As aplicacións mantéñense no menú superior mais tamén aparecen no menú lateral' -'These applications must be selected in the previous option.': 'Estas aplicacións deben ser seleccionadas na opción anterior.' -'Hide labels on mouse over': 'Agochar as etiquetas ao pasar o rato' -'Except the hovered app': 'Agás a aplicación que pasa o rato' -'Search': 'Buscar' -'Toggle the menu': 'Alternar o menú' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Preguntar ao desenvolvedor' -'New request': 'Nova solicitude' -'Report a bug': 'Informar dun fallo' -'Show the configuration': 'Amosar a configuración' -'Configuration:': 'Configuración:' -'Done!': 'Feito!' -'Copy': 'Copiar' -'Need help': 'Necesito axuda' -'I would like a new feature': 'Gustaríame unha nova característica' -'Something went wrong': 'Algo foi mal' -'Select apps': 'Seleccionar as aplicacións' -'Sort': 'Ordenar' -'Customize': 'Personalizar' -'Custom': 'Personalizado' -'Close': 'Pechar' diff --git a/src/l10n/fixtures/nl.yaml b/src/l10n/fixtures/nl.yaml index f1b3e55..9e60180 100644 --- a/src/l10n/fixtures/nl.yaml +++ b/src/l10n/fixtures/nl.yaml @@ -1,111 +1,94 @@ -'Custom menu': 'Aangepast menu' -'Enable the custom menu': 'Het aangepaste menu inschakelen' -'No': 'Nee' -'Yes': 'Ja' -'Menu': 'Menu' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Gebruik de snelkoppeling Ctrl+o om het zijmenu te openen en te verbergen. Gebruik tab key om te navigeren.' -'Top menu': 'Bovenste menu' -'Apps that not must be moved in the side menu': 'Apps die niet moeten worden verplaatst in het zijmenu' -'If there is no selection then the global configuration is applied.': 'Als er geen keuze is, wordt de globale configuratie toegepast.' -'Experimental': 'Experimenteel' -'Save': 'Opslaan' -'You like this app and you want to support me?': 'Vind je deze app leuk en wil je me steunen?' -'Buy me a coffee ☕': 'Koop een koffie voor me ☕' -'Hidden': 'Verborgen' -'Small': 'Klein' -'Normal': 'Normaal' -'Big': 'Groot' -'Hidden icon': 'Verborgen icoon' -'Small icon': 'Klein icoon' -'Normal icon': 'Normaal icoon' -'Big icon': 'Groot icoon' -'Hidden text': 'Verborgen tekst' -'Small text': 'Kleine tekst' -'Normal text': 'Normale tekst' -'Big text': 'Grote tekst' -'Colors': 'Kleuren' -'Background color': 'Achtergrond kleur' -'Background color of current app': 'Achtergrondkleur van huidige app' -'Text color': 'Tekst kleur' -'Loader': 'Lader' -'Icon': 'Icoon' -'Same color': 'Zelfde kleur' -'Opposite color': 'Tegenovergestelde kleur' -'Transparent': 'Transparant' -'Opaque': 'Ondoorzichtig' -'Opener': 'Opener' -'Default': 'Standaard' -'Default (dark)': 'Standaard (donker)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (donker)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (donker)' -'Before the logo': 'Voor het logo' -'After the logo': 'Na het logo' -'Position': 'Positie' -'Show only the opener (hidden logo)': 'Toon alleen de opener (verborgen logo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Geef het zijmenu en de opener niet weer als er geen toepassing is (bijv. openbare pagina''s).' -'Panel': 'Paneel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Open het menu wanneer de muis over de opener gaat (automatisch uitgeschakeld op aanraakschermen)' -'Display the big menu': 'Toon het grote menu' -'Display the logo': 'Toon het logo' -'Icons and texts': 'Iconen en teksten' -'Loader enabled': 'Lader ingeschakeld' -'Tips': 'Tips' -'Always displayed': 'Altijd weergegeven' -'This is the automatic behavior when the menu is always displayed.': 'Dit is het automatische gedrag wanneer het menu altijd wordt weergegeven.' -'Not compatible with touch screens.': 'Niet compatibel met aanraakschermen.' -'Big menu': 'Groot menu' -'Live preview': 'Live voorbeeld' -'Open apps in new tab': 'Open apps in nieuwe tab' -'Use the global setting': 'Gebruik de globale instellingen' -'Use my selection': 'Gebruik mijn selectie' -'Show and hide the list of applications': 'De lijst met toepassingen tonen en verbergen' -'Use the avatar instead of the logo': 'Gebruik avatar in plaats van het logo' -'You do not have permission to change the settings.': 'Je hebt geen toestemming om de instellingen te veranderen.' -'Force this configuration to users': 'Forceer deze configuratie aan gebruikers' -'Export the configuration': 'Exporteer de configuratie' -'Purge the cache': 'De cache wissen' -'Show the link to settings': 'Toon de link naar de instellingen' -'The menu is enabled by default for users': 'Het menu is standaard ingeschakeld voor gebruikers' -'Except when the configuration is forced.': 'Behalve als de configuratie geforceerd is.' -'Apps that should not be displayed in the menu': 'Apps die niet in het menu weergegeven mogen worden' -'This feature is only compatible with the big menu display.': 'Deze functie is alleen compatibel met het grote menu scherm.' -'The logo is a link to the default app': 'Het logo is een link naar de standaard app' -'Others': 'Overige' -'Categories': 'Categorieën' -'Customize sorting': 'Sortering aanpassen' -'Order by': 'Sorteer op' -'Name': 'Naam' -'Customed': 'Aangepast' -'Show and hide the list of categories': 'De lijst met categorieën tonen en verbergen' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Deze parameters worden gebruikt wanneer Dark theme of Breeze Dark Theme zijn ingeschakeld.' -'Dark mode colors': 'Donkere modus kleuren' -'With categories': 'Met categorieën' -'Custom categories': 'Aangepaste categorieën' -'Customize application categories': 'Toepassingscategorieën aanpassen' -'Reset to default': 'Terugzetten naar standaard' -'Applications': 'Applicaties' -'Applications kept in the top menu': 'Applicaties bewaard in het bovenste menu' -'Applications kept in the top menu but also shown in side menu': 'Applicaties blijven in het topmenu maar worden ook in het zijmenu getoond' -'These applications must be selected in the previous option.': 'Deze toepassingen moeten bij de vorige optie zijn geselecteerd.' -'Hide labels on mouse over': 'Hide labels on mouse over' -'Except the hovered app': 'Except the hovered app' -'Search': 'Search' -'Toggle the menu': 'Toggle the menu' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Ask the developer' -'New request': 'New request' -'Report a bug': 'Report a bug' -'Show the configuration': 'Show the configuration' -'Configuration:': 'Configuration:' -'Done!': 'Done!' -'Copy': 'Copy' -'Need help': 'Need help' -'I would like a new feature': 'I would like a new feature' -'Something went wrong': 'Something went wrong' -'Select apps': 'Select apps' -'Sort': 'Sort' -'Customize': 'Customize' -'Custom': 'Custom' -'Close': 'Close' +"Custom menu": "Aangepast menu" +"Enable the custom menu": "Het aangepaste menu inschakelen" +"No": "Nee" +"Yes": "Ja" +"Menu": "Menu" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Gebruik de snelkoppeling Ctrl+o om het zijmenu te openen en te verbergen. Gebruik tab om te navigeren.' +"Top menu": "Bovenste menu" +"Apps that not must be moved in the side menu": "Apps die niet moeten worden verplaatst in het zijmenu" +"If there is no selection then the global configuration is applied.": "Als er geen keuze is, wordt de globale configuratie toegepast." +"Experimental": "Experimenteel" +"Save": "Opslaan" +"You like this app and you want to support me?": "Vind je deze app leuk en wil je me steunen?" +"Buy me a coffee ☕": "Koop een koffie voor me ☕" +"Hidden": "Verborgen" +"Small": "Klein" +"Normal": "Normaal" +"Big": "Groot" +"Hidden icon": "Verborgen icoon" +"Small icon": "Klein icoon" +"Normal icon": "Normaal icoon" +"Big icon": "Groot icoon" +"Hidden text": "Verborgen tekst" +"Small text": "Kleine tekst" +"Normal text": "Normale tekst" +"Big text": "Grote tekst" +"Colors": "Kleuren" +"Background color": "Achtergrond kleur" +"Background color of current app": "Achtergrondkleur van huidige app" +"Text color": "Tekst kleur" +"Loader": "Lader" +"Icon": "Icoon" +"Same color": "Zelfde kleur" +"Opposite color": "Tegenovergestelde kleur" +"Transparent": "Transparant" +"Opaque": "Ondoorzichtig" +"Opener": "Opener" +"Default": "Standaard" +"Default (dark)": "Standaard (donker)" +"Hamburger": "Hamburger" +"Hamburger (dark)": "Hamburger (donker)" +"Hamburger 2": "Hamburger 2" +"Hamburger 2 (dark)": "Hamburger 2 (donker)" +"Before the logo": "Voor het logo" +"After the logo": "Na het logo" +"Position": "Positie" +"Show only the opener (hidden logo)": "Toon alleen de opener (verborgen logo)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "Geef het zijmenu en de opener niet weer als er geen toepassing is (bijv. openbare pagina's)." +"Panel": "Paneel" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Open het menu wanneer de muis over de opener gaat (automatisch uitgeschakeld op aanraakschermen)" +"Display the big menu": "Toon het grote menu" +"Display the logo": "Toon het logo" +"Icons and texts": "Iconen en teksten" +"Loader enabled": "Lader ingeschakeld" +"Tips": "Tips" +"Always displayed": "Altijd weergegeven" +"This is the automatic behavior when the menu is always displayed.": "Dit is het automatische gedrag wanneer het menu altijd wordt weergegeven." +"Not compatible with touch screens.": "Niet compatibel met aanraakschermen." +"Big menu": "Groot menu" +"Live preview": "Live voorbeeld" +"Open apps in new tab": "Open apps in nieuwe tab" +"Use the global setting": "Gebruik de globale instellingen" +"Use my selection": "Gebruik mijn selectie" +"Show and hide the list of applications": "De lijst met toepassingen tonen en verbergen" +"Use the avatar instead of the logo": "Gebruik avatar in plaats van het logo" +"You do not have permission to change the settings.": "Je hebt geen toestemming om de instellingen te veranderen." +"Force this configuration to users": "Forceer deze configuratie aan gebruikers" +"Export the configuration": "Exporteer de configuratie" +"Purge the cache": "De cache wissen" +"Show the link to settings": "Toon de link naar de instellingen" +"The menu is enabled by default for users": "Het menu is standaard ingeschakeld voor gebruikers" +"Except when the configuration is forced.": "Behalve als de configuratie geforceerd is." +"Apps that should not be displayed in the menu": "Apps die niet in het menu weergegeven mogen worden" +"This feature is only compatible with the big menu display.": "Deze functie is alleen compatibel met het grote menu scherm." +"The logo is a link to the default app": "Het logo is een link naar de standaard app" +"Others": "Overige" +"Categories": "Categorieën" +"Customize sorting": "Sortering aanpassen" +"Order by": "Sorteer op" +"Name": "Naam" +"Customed": "Aangepast" +"Show and hide the list of categories": "De lijst met categorieën tonen en verbergen" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Deze parameters worden gebruikt wanneer Dark theme of Breeze Dark Theme zijn ingeschakeld." +"Dark mode colors": "Donkere modus kleuren" +"With categories": "Met categorieën" +"Custom categories": "Aangepaste categorieën" +"Customize application categories": "Toepassingscategorieën aanpassen" +"Reset to default": "Terugzetten naar standaard" +"Applications": "Applicaties" +"Applications kept in the top menu": "Applicaties bewaard in het bovenste menu" +"Applications kept in the top menu but also shown in side menu": "Applicaties blijven in het topmenu maar worden ook in het zijmenu getoond" +"These applications must be selected in the previous option.": "Deze toepassingen moeten bij de vorige optie zijn geselecteerd." +"Hide labels on mouse over": "Hide labels on mouse over" +"Except the hovered app": "Except the hovered app" diff --git a/src/l10n/fixtures/pt_BR.yaml b/src/l10n/fixtures/pt_BR.yaml deleted file mode 100644 index 9e314a5..0000000 --- a/src/l10n/fixtures/pt_BR.yaml +++ /dev/null @@ -1,109 +0,0 @@ -'Custom menu': 'Menú personalizado' -'Enable the custom menu': 'Activar o menu personalizado' -'No': 'Não' -'Yes': 'Sim' -'Menu': 'Menu' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Use o atalho Ctrl+o para exibir e para esconder o menu lateral. Use tab key para navegar.' -'Top menu': 'Menu superior' -'Apps that not must be moved in the side menu': 'Apps que não devem ser movidos para o menu lateral' -'If there is no selection then the global configuration is applied.': 'Se não houver seleção, a configuração global será aplicada.' -'Experimental': 'Experimental' -'Save': 'Salvar' -'You like this app and you want to support me?': 'Você gosta deste aplicativo e quer me apoiar?' -'Buy me a coffee ☕': 'Me pague um café ☕' -'Hidden': 'Oculto' -'Small': 'Pequeno' -'Normal': 'Normal' -'Big': 'Grande' -'Hidden icon': 'Ícone oculto' -'Small icon': 'Ícone pequeno' -'Normal icon': 'Ícone normal' -'Big icon': 'Ícone grance' -'Hidden text': 'Texto oculto' -'Small text': 'Texto pequeno' -'Normal text': 'Texto normal' -'Big text': 'Texto grande' -'Colors': 'Cores' -'Background color': 'Cor de fundo' -'Background color of current app': 'Cor de fundo do app atual' -'Text color': 'Cor do texto' -'Loader': 'Progresso' -'Icon': 'Ícone' -'Same color': 'Mesma cor' -'Opposite color': 'Cor oposta' -'Transparent': 'Transparente' -'Opaque': 'Opaco' -'Opener': 'Abrir' -'Default': 'Padrão' -'Default (dark)': 'Padrão (escuro)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (escuro)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (escuro)' -'Before the logo': 'Antes da logo' -'After the logo': 'Depois da logo' -'Position': 'Posição' -'Show only the opener (hidden logo)': 'Mostrar apenas o Abrir (ocultar logo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Não mostrar o menu lateral e o Abrir se não houver aplicação (p.ex. páginas públicas).' -'Panel': 'Painel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Abrir o menu quando o mouse passar sobre o Abrir (desativado automaticamente em telas de toque)' -'Display the big menu': 'Mostrar o menu grande' -'Display the logo': 'Mostrar a logo' -'Icons and texts': 'Ícones e textos' -'Loader enabled': 'Progresso ativado' -'Tips': 'Dicas' -'Always displayed': 'Sempre visível' -'This is the automatic behavior when the menu is always displayed.': 'Este é o comportamento automático quando o menu está sempre visível.' -'Not compatible with touch screens.': 'Não compatível com telas de toque.' -'Big menu': 'Menu grande' -'Live preview': 'Visualização ao vivo' -'Open apps in new tab': 'Abrir apps em nova aba' -'Use the global setting': 'Usar configurações globais' -'Use my selection': 'Usar minha seleção' -'Show and hide the list of applications': 'Mostrar e ocultar a lista de aplicativos' -'Use the avatar instead of the logo': 'Use o avatar ao invés da logo' -'You do not have permission to change the settings.': 'Você não tem permissão para alterar as configurações.' -'Force this configuration to users': 'Forçar esta configuração para os usuários' -'Export the configuration': 'Exportar a configuração' -'Purge the cache': 'Limpar o cache' -'Show the link to settings': 'Mostrar o link para configurações' -'The menu is enabled by default for users': 'O menu é habilitado por padrão para os usuários' -'Except when the configuration is forced.': 'Exceto quando a configuração é forçada.' -'Apps that should not be displayed in the menu': 'Apps que não devem ser mostrados no menu' -'This feature is only compatible with the big menu display.': 'Este recurso só é compatível com a exibição do menu grande.' -'The logo is a link to the default app': 'A logo é um link para o app padrão' -'Others': 'Outros' -'Categories': 'Categorias' -'Customize sorting': 'Personalizar classificação' -'Order by': 'Ordenar por' -'Name': 'Nome' -'Customed': 'Personalizado' -'Show and hide the list of categories': 'Mostrar e esconder a lista de categorias' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Estes parâmetros são usados quando o tema escuro ou o tema Dark Breeze está ativo.' -'Dark mode colors': 'Cores do modo escuro' -'With categories': 'Com categorias' -'Custom categories': 'Categorias personalizadas' -'Customize application categories': 'Personalizar categorias de apps' -'Reset to default': 'Restaurar padrão' -'Applications': 'Aplicativos' -'Applications kept in the top menu': 'Aplicativos mantidos no menu superior' -'Applications kept in the top menu but also shown in side menu': 'Aplicativos mantidos no menu superior, mas também mostrados no menu lateral' -'These applications must be selected in the previous option.': 'Estes aplicativos devem ser selecionados na opção anterior.' -'Hide labels on mouse over': 'Ocultar descrição ao passar o mouse' -'Toggle the menu': 'Toggle the menu' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Ask the developer' -'New request': 'New request' -'Report a bug': 'Report a bug' -'Show the configuration': 'Show the configuration' -'Configuration:': 'Configuration:' -'Done!': 'Done!' -'Copy': 'Copy' -'Need help': 'Need help' -'I would like a new feature': 'I would like a new feature' -'Something went wrong': 'Something went wrong' -'Select apps': 'Select apps' -'Sort': 'Sort' -'Customize': 'Customize' -'Custom': 'Custom' -'Close': 'Close' diff --git a/src/l10n/fixtures/ru.yaml b/src/l10n/fixtures/ru.yaml index 15943ad..2673a4e 100644 --- a/src/l10n/fixtures/ru.yaml +++ b/src/l10n/fixtures/ru.yaml @@ -1,111 +1,94 @@ -'Custom menu': 'Пользовательское меню' -'Enable the custom menu': 'Включить пользовательское меню' -'No': 'Нет' -'Yes': 'Да' -'Menu': 'Меню' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Используйте сочетание клавиш Ctrl+o, чтобы открыть или скрыть боковое меню. Используйте tab key для навигации.' -'Top menu': 'Верхнее меню' -'Apps that not must be moved in the side menu': 'Приложения не перемещаемые в боковое меню' -'If there is no selection then the global configuration is applied.': 'Если тут ничего не отмечено, применяются глобальные настройки.' -'Experimental': 'Экспериментальный' -'Save': 'Сохранить' -'You like this app and you want to support me?': 'Вам нравится приложение или вы хотите поддержать меня?' -'Buy me a coffee ☕': 'Купить мне чашку кофе ☕' -'Hidden': 'Скрыто' -'Small': 'Маленький' -'Normal': 'Средний' -'Big': 'Большой' -'Hidden icon': 'Без иконки' -'Small icon': 'Маленькая иконка' -'Normal icon': 'Средняя иконка' -'Big icon': 'Большая иконка' -'Hidden text': 'Без текста' -'Small text': 'Маленький текст' -'Normal text': 'Средний текст' -'Big text': 'Большой текст' -'Colors': 'Цвета' -'Background color': 'Цвет фона' -'Background color of current app': 'Цвет фона выбранного приложения' -'Text color': 'Цвет текста' -'Loader': 'Загрузчик' -'Icon': 'Иконка' -'Same color': 'Такой же цвет' -'Opposite color': 'Противоположный цвет' -'Transparent': 'Прозрачный' -'Opaque': 'Непрозрачный' -'Opener': 'Открывалка' -'Default': 'По умолчанию' -'Default (dark)': 'По умолчанию (тёмный)' -'Hamburger': 'Гамбургер' -'Hamburger (dark)': 'Гамбургер (тёмный)' -'Hamburger 2': 'Гамбургер 2' -'Hamburger 2 (dark)': 'Гамбургер 2 (тёмный)' -'Before the logo': 'Перед логотипом' -'After the logo': 'После логотипа' -'Position': 'Положение' -'Show only the opener (hidden logo)': 'Показать только открывающую кнопку (скрытый логотип)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Не отображать боковое меню и открывалку, если нет доступного приложения (н.п. публичные страницы).' -'Panel': 'Панель' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Открывать меню при наведении мыши на открывалку (автоматически отключается на сенсорных экранах)' -'Display the big menu': 'Отобразить большое меню' -'Display the logo': 'Показать логотип' -'Icons and texts': 'Иконки и текст' -'Loader enabled': 'Загрузчик включен' -'Tips': 'Советы' -'Always displayed': 'Всегда отображается' -'This is the automatic behavior when the menu is always displayed.': 'Это автоматическое поведение, когда меню отображается всегда.' -'Not compatible with touch screens.': 'Не совместимо с сенсорными экранами.' -'Big menu': 'Большое меню' -'Live preview': 'Предпросмотр в реальном времени' -'Open apps in new tab': 'Открывать приложения в новой вкладке' -'Use the global setting': 'Использовать глобальные настройки' -'Use my selection': 'Использовать мои настройки' -'Show and hide the list of applications': 'Показать или скрыть список приложений' -'Use the avatar instead of the logo': 'Использовать аватар вместо логотипа' -'You do not have permission to change the settings.': 'У вас нет разрешения изменять настройки.' -'Force this configuration to users': 'Для обеспечения соблюдения этих настроек пользователями' -'Export the configuration': 'Экспортировать конфигурацию' -'Purge the cache': 'Очистить кэш' -'Show the link to settings': 'Показать ссылку на настройки' -'The menu is enabled by default for users': 'Это меню включено по умолчанию для пользователей' -'Except when the configuration is forced.': 'За исключением случаев, когда настройка принудительная.' -'Apps that should not be displayed in the menu': 'Ппрограммы, скрытые из меню' -'This feature is only compatible with the big menu display.': 'Эта возможность совместима только с отображением большого меню.' -'The logo is a link to the default app': 'Логотип открывает приложение по умолчанию' -'Others': 'Прочие' -'Categories': 'Категории' -'Customize sorting': 'Настроить сортировку' -'Order by': 'В порядке' -'Name': 'Название' -'Customed': 'Пользовательское' -'Show and hide the list of categories': 'Показать или скрыть список категорий' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Эти настройки используются темами Тёмная и Тёмная Breeze.' -'Dark mode colors': 'Цвета тёмной темы' -'With categories': 'С категориями' -'Custom categories': 'Пользовательские категории' -'Customize application categories': 'Изменить категории приложений' -'Reset to default': 'Сбросить к значениям по умолчанию' -'Applications': 'Приложения' -'Applications kept in the top menu': 'Приложения, хранящиеся в верхнем меню' -'Applications kept in the top menu but also shown in side menu': 'Приложения хранящиеся в верхнем меню, но также отображающиеся в боковом меню' -'These applications must be selected in the previous option.': 'Эти приложения необходимо выбрать в предыдущем выборе.' -'Hide labels on mouse over': 'Скрыть название при наведении мыши' -'Except the hovered app': 'Кроме приложения на котором сейчас' -'Search': 'Поиск' -'Toggle the menu': 'Переключить меню' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Спросить разработчика' -'New request': 'Новый запрос' -'Report a bug': 'Пожаловаться на ошибку' -'Show the configuration': 'Показать конфигурацию' -'Configuration:': 'Configuration:' -'Done!': 'Готово!' -'Copy': 'Копировать' -'Need help': 'Нужна помощь' -'I would like a new feature': 'Я хочу новую возможность' -'Something went wrong': 'Что-то пошло не так' -'Select apps': 'Выберете приложения' -'Sort': 'Сортировать' -'Customize': 'Приспособить' -'Custom': 'Custom' -'Close': 'Закрыть' +"Custom menu": "Custom menu" +"Enable the custom menu": "Включить пользовательское меню" +"No": "Нет" +"Yes": "Да" +"Menu": "Меню" +? 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.' +: 'Используйте сочетание клавиш Ctrl+o, чтобы открыть или скрыть боковое меню. Используйте Tab для навигации.' +"Top menu": "Верхнее меню" +"Apps that not must be moved in the side menu": "Приложения не перемещаемые в боковое меню" +"If there is no selection then the global configuration is applied.": "Если тут ничего не отмечено, применяются глобальные настройки." +"Experimental": "Экспериментальный" +"Save": "Сохранить" +"You like this app and you want to support me?": "Вам нравится приложение или вы хотите поддержать меня?" +"Buy me a coffee ☕": "Купить мне чашку кофе ☕" +"Hidden": "Скрыто" +"Small": "Маленький" +"Normal": "Средний" +"Big": "Большой" +"Hidden icon": "Без иконки" +"Small icon": "Маленькая иконка" +"Normal icon": "Средняя иконка" +"Big icon": "Большая иконка" +"Hidden text": "Без текста" +"Small text": "Маленький текст" +"Normal text": "Средний текст" +"Big text": "Большой текст" +"Colors": "Цвета" +"Background color": "Цвет фона" +"Background color of current app": "Цвет фона выбранного приложения" +"Text color": "Цвет текста" +"Loader": "Загрузчик" +"Icon": "Иконка" +"Same color": "Такой же цвет" +"Opposite color": "Противоположный цвет" +"Transparent": "Прозрачный" +"Opaque": "Непрозрачный" +"Opener": "Открывалка" +"Default": "По умолчанию" +"Default (dark)": "По умолчанию (тёмный)" +"Hamburger": "Гамбургер" +"Hamburger (dark)": "Гамбургер (тёмный)" +"Hamburger 2": "Гамбургер 2" +"Hamburger 2 (dark)": "Гамбургер 2 (тёмный)" +"Before the logo": "Перед логотипом" +"After the logo": "После логотипа" +"Position": "Положение" +"Show only the opener (hidden logo)": "Показать только открывающую часть (скрытый логотип)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "Не отображать боковое меню и открывалку, если нет приложения (например, публичные страницы)." +"Panel": "Панель" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Открывать меню при наведении мыши на экран (автоматически отключается на сенсорных экранах)" +"Display the big menu": "Отобразить большое меню" +"Display the logo": "Показать логотип" +"Icons and texts": "Иконки и текст" +"Loader enabled": "Загрузчик включен" +"Tips": "Советы" +"Always displayed": "Всегда отображается" +"This is the automatic behavior when the menu is always displayed.": "This is the automatic behavior when the menu is always displayed." +"Not compatible with touch screens.": "Не совместимо с сенсорными экранами." +"Big menu": "Большое меню" +"Live preview": "Live preview" +"Open apps in new tab": "Открывать приложения в новой вкладке" +"Use the global setting": "Использовать глобальные настройки" +"Use my selection": "Использовать мои настройки" +"Show and hide the list of applications": "Показать или скрыть список приложений" +"Use the avatar instead of the logo": "Использовать аватар вместо логотипа" +"You do not have permission to change the settings.": "У вас нет разрешения изменять настройки." +"Force this configuration to users": "Force this configuration to users" +"Export the configuration": "Экспортировать конфигурацию" +"Purge the cache": "Очистить кэш" +"Show the link to settings": "Показать ссылку на настройки" +"The menu is enabled by default for users": "Это меню включено по умолчанию для пользователей" +"Except when the configuration is forced.": "Except when the configuration is forced." +"Apps that should not be displayed in the menu": "Ппрограммы, скрытые из меню" +"This feature is only compatible with the big menu display.": "This feature is only compatible with the big menu display." +"The logo is a link to the default app": "Логотип открывает приложение по умолчанию" +"Others": "Прочие" +"Categories": "Категории" +"Customize sorting": "Настроить сортировку" +"Order by": "В порядке" +"Name": "Название" +"Customed": "Customed" +"Show and hide the list of categories": "Показать или скрыть список категорий" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Эти настройки используются темами Тёмная и Тёмная Breeze." +"Dark mode colors": "Цвета тёмной темы" +"With categories": "С категориями" +"Custom categories": "Пользовательские категории" +"Customize application categories": "Изменить категории приложений" +"Reset to default": "Сбросить к значениям по умолчанию" +"Applications": "Приложения" +"Applications kept in the top menu": "Applications kept in the top menu" +"Applications kept in the top menu but also shown in side menu": "Applications kept in the top menu but also shown in side menu" +"These applications must be selected in the previous option.": "These applications must be selected in the previous option." +"Hide labels on mouse over": "Скрыть название при наведении мыши" +"Except the hovered app": "Except the hovered app" diff --git a/src/l10n/fixtures/sk.yaml b/src/l10n/fixtures/sk.yaml deleted file mode 100644 index 2849008..0000000 --- a/src/l10n/fixtures/sk.yaml +++ /dev/null @@ -1,109 +0,0 @@ -'Custom menu': 'Custom menu' -'Enable the custom menu': 'Enable the custom menu' -'No': 'No' -'Yes': 'Yes' -'Menu': 'Menu' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.' -'Top menu': 'Top menu' -'Apps that not must be moved in the side menu': 'Apps that not must be moved in the side menu' -'If there is no selection then the global configuration is applied.': 'If there is no selection then the global configuration is applied.' -'Experimental': 'Experimental' -'Save': 'Save' -'You like this app and you want to support me?': 'You like this app and you want to support me?' -'Buy me a coffee ☕': 'Buy me a coffee ☕' -'Hidden': 'Hidden' -'Small': 'Small' -'Normal': 'Normal' -'Big': 'Big' -'Hidden icon': 'Hidden icon' -'Small icon': 'Small icon' -'Normal icon': 'Normal icon' -'Big icon': 'Big icon' -'Hidden text': 'Hidden text' -'Small text': 'Small text' -'Normal text': 'Normal text' -'Big text': 'Big text' -'Colors': 'Colors' -'Background color': 'Background color' -'Background color of current app': 'Background color of current app' -'Text color': 'Text color' -'Loader': 'Loader' -'Icon': 'Icon' -'Same color': 'Same color' -'Opposite color': 'Opposite color' -'Transparent': 'Transparent' -'Opaque': 'Opaque' -'Opener': 'Opener' -'Default': 'Default' -'Default (dark)': 'Default (dark)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (dark)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (dark)' -'Before the logo': 'Before the logo' -'After the logo': 'After the logo' -'Position': 'Position' -'Show only the opener (hidden logo)': 'Show only the opener (hidden logo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Do not display the side menu and the opener if there is no application (eg: public pages).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)' -'Display the big menu': 'Display the big menu' -'Display the logo': 'Display the logo' -'Icons and texts': 'Icons and texts' -'Loader enabled': 'Loader enabled' -'Tips': 'Tips' -'Always displayed': 'Always displayed' -'This is the automatic behavior when the menu is always displayed.': 'This is the automatic behavior when the menu is always displayed.' -'Not compatible with touch screens.': 'Not compatible with touch screens.' -'Big menu': 'Big menu' -'Live preview': 'Live preview' -'Open apps in new tab': 'Open apps in new tab' -'Use the global setting': 'Use the global setting' -'Use my selection': 'Use my selection' -'Show and hide the list of applications': 'Show and hide the list of applications' -'Use the avatar instead of the logo': 'Use the avatar instead of the logo' -'You do not have permission to change the settings.': 'You do not have permission to change the settings.' -'Force this configuration to users': 'Force this configuration to users' -'Export the configuration': 'Export the configuration' -'Purge the cache': 'Purge the cache' -'Show the link to settings': 'Show the link to settings' -'The menu is enabled by default for users': 'The menu is enabled by default for users' -'Except when the configuration is forced.': 'Except when the configuration is forced.' -'Apps that should not be displayed in the menu': 'Apps that should not be displayed in the menu' -'This feature is only compatible with the big menu display.': 'This feature is only compatible with the big menu display.' -'The logo is a link to the default app': 'The logo is a link to the default app' -'Others': 'Others' -'Categories': 'Categories' -'Customize sorting': 'Customize sorting' -'Order by': 'Order by' -'Name': 'Name' -'Customed': 'Customed' -'Show and hide the list of categories': 'Show and hide the list of categories' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'This parameters are used when Dark theme or Breeze Dark Theme are enabled.' -'Dark mode colors': 'Dark mode colors' -'With categories': 'With categories' -'Custom categories': 'Custom categories' -'Customize application categories': 'Customize application categories' -'Reset to default': 'Reset to default' -'Applications': 'Applications' -'Applications kept in the top menu': 'Applications kept in the top menu' -'Applications kept in the top menu but also shown in side menu': 'Applications kept in the top menu but also shown in side menu' -'These applications must be selected in the previous option.': 'These applications must be selected in the previous option.' -'Hide labels on mouse over': 'Hide labels on mouse over' -'Toggle the menu': 'Prepnite ponuku' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Ask the developer' -'New request': 'New request' -'Report a bug': 'Report a bug' -'Show the configuration': 'Show the configuration' -'Configuration:': 'Configuration:' -'Done!': 'Done!' -'Copy': 'Copy' -'Need help': 'Need help' -'I would like a new feature': 'I would like a new feature' -'Something went wrong': 'Something went wrong' -'Select apps': 'Select apps' -'Sort': 'Sort' -'Customize': 'Customize' -'Custom': 'Custom' -'Close': 'Close' diff --git a/src/l10n/fixtures/sv.yaml b/src/l10n/fixtures/sv.yaml deleted file mode 100644 index d14314c..0000000 --- a/src/l10n/fixtures/sv.yaml +++ /dev/null @@ -1,111 +0,0 @@ -'Custom menu': 'Anpassad meny' -'Enable the custom menu': 'Aktivera den anpassade menyn' -'No': 'Nej' -'Yes': 'Ja' -'Menu': 'Meny' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Använd genvägen Ctrl+o för att visa eller dölja sidomenyn. Använd tabb-tangenten för att navigera.' -'Top menu': 'Toppmeny' -'Apps that not must be moved in the side menu': 'Appar som inte får flyttas i sidomenyn' -'If there is no selection then the global configuration is applied.': 'Om inget val har gjorts tillämpas den globala konfigurationen.' -'Experimental': 'Experimentell' -'Save': 'Spara' -'You like this app and you want to support me?': 'Gillar du den här appen och vill stödja mig?' -'Buy me a coffee ☕': 'Bjud mig på en kaffe ☕' -'Hidden': 'Dold' -'Small': 'Liten' -'Normal': 'Normal' -'Big': 'Stor' -'Hidden icon': 'Dold ikon' -'Small icon': 'Liten ikon' -'Normal icon': 'Normal ikon' -'Big icon': 'Stor ikon' -'Hidden text': 'Dold text' -'Small text': 'Liten text' -'Normal text': 'Normal text' -'Big text': 'Stor text' -'Colors': 'Färger' -'Background color': 'Bakgrundsfärg' -'Background color of current app': 'Bakgrundsfärg för aktuell app' -'Text color': 'Textfärg' -'Loader': 'Laddare' -'Icon': 'Ikon' -'Same color': 'Samma färg' -'Opposite color': 'Motsatt färg' -'Transparent': 'Transparent' -'Opaque': 'Ogenomskinlig' -'Opener': 'Öppnare' -'Default': 'Standard' -'Default (dark)': 'Standard(mörk)' -'Hamburger': 'Hamburgermeny' -'Hamburger (dark)': 'Hamburgermeny(mörk)' -'Hamburger 2': 'Hamburgermeny 2' -'Hamburger 2 (dark)': 'Hamburgermeny 2 (mörk)' -'Before the logo': 'Före logotypen' -'After the logo': 'Efter logotypen' -'Position': 'Position' -'Show only the opener (hidden logo)': 'Visa endast öppnaren (gömd logotyp)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Visa inte sidomenyn eller öppnaren om det inte finns någon applikation (t.ex. publika sidor).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Öppna menyn när muspekaren hovrar över öppnaren (automatiskt avaktiverat på pekskärmar)' -'Display the big menu': 'Visa den stora menyn' -'Display the logo': 'Visa logotypen' -'Icons and texts': 'Ikoner och texter' -'Loader enabled': 'Laddare aktiverad' -'Tips': 'Tips' -'Always displayed': 'Alltid visad' -'This is the automatic behavior when the menu is always displayed.': 'Detta är det automatiska beteendet när menyn alltid är visad.' -'Not compatible with touch screens.': 'Inte kompatibel med pekskärmar.' -'Big menu': 'Stor meny' -'Live preview': 'Förhandsgranskning i realtid' -'Open apps in new tab': 'Öppna appar i ny flik' -'Use the global setting': 'Använd den globala inställningen' -'Use my selection': 'Använd mitt val' -'Show and hide the list of applications': 'Visa och dölj listan över applikationer' -'Use the avatar instead of the logo': 'Använd avataren istället för logotypen' -'You do not have permission to change the settings.': 'Du har inte behörighet att ändra inställningarna.' -'Force this configuration to users': 'Tvinga denna konfiguration för användare' -'Export the configuration': 'Exportera konfigurationen' -'Purge the cache': 'Rensa cachen' -'Show the link to settings': 'Visa länken till inställningarna' -'The menu is enabled by default for users': 'Menyn är aktiverad som standard för användare' -'Except when the configuration is forced.': 'Förutom när konfigurationen är tvingad.' -'Apps that should not be displayed in the menu': 'Appar som inte ska visas i menyn' -'This feature is only compatible with the big menu display.': 'Denna funktion är endast kompatibel med stor meny.' -'The logo is a link to the default app': 'Logotypen är en länk till standardappen' -'Others': 'Övriga' -'Categories': 'Kategorier' -'Customize sorting': 'Anpassa sortering' -'Order by': 'Sortera efter' -'Name': 'Namn' -'Customed': 'Anpassad' -'Show and hide the list of categories': 'Visa och dölj listan över kategorier' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'Dessa parametrar används när mörkt tema eller Breeze Dark Theme är aktiverade.' -'Dark mode colors': 'Färger för mörkt läge' -'With categories': 'Med kategorier' -'Custom categories': 'Anpassade kategorier' -'Customize application categories': 'Anpassa app kategorier' -'Reset to default': 'Återställ till standardvärden' -'Applications': 'Applikationer' -'Applications kept in the top menu': 'Applikationer som hålls i toppmenyn' -'Applications kept in the top menu but also shown in side menu': 'Applikationer som visas både i toppmenyn och i sidomenyn' -'These applications must be selected in the previous option.': 'Dessa applikationer måste väljas i föregående alternativ.' -'Hide labels on mouse over': 'Dölj etiketter när muspekaren är över' -'Except the hovered app': 'Förutom den app som muspekaren är över' -'Search': 'Sök' -'Toggle the menu': 'Växla menyn' -'Open the documentation': 'Öppna dokumentationen' -'Ask the developer': 'Fråga utvecklaren' -'New request': 'Ny förfrågan' -'Report a bug': 'Rapportera ett fel' -'Show the configuration': 'Visa konfigurationen' -'Configuration:': 'Konfiguration:' -'Done!': 'Klar!' -'Copy': 'Kopiera' -'Need help': 'Behöver hjälp' -'I would like a new feature': 'Jag skulle vilja ha en ny funktion' -'Something went wrong': 'Något gick fel' -'Select apps': 'Välj appar' -'Sort': 'Sortera' -'Customize': 'Anpassa' -'Custom': 'Anpassad' -'Close': 'Stäng' diff --git a/src/l10n/fixtures/tpl/base.yaml b/src/l10n/fixtures/tpl/base.yaml index eebd8c2..01dbccf 100644 --- a/src/l10n/fixtures/tpl/base.yaml +++ b/src/l10n/fixtures/tpl/base.yaml @@ -1,111 +1,96 @@ -'Custom menu': 'Custom menu' -'Enable the custom menu': 'Enable the custom menu' -'No': 'No' -'Yes': 'Yes' -'Menu': 'Menu' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.': 'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab key to navigate.' -'Top menu': 'Top menu' -'Apps that not must be moved in the side menu': 'Apps that not must be moved in the side menu' -'If there is no selection then the global configuration is applied.': 'If there is no selection then the global configuration is applied.' -'Experimental': 'Experimental' -'Save': 'Save' -'You like this app and you want to support me?': 'You like this app and you want to support me?' -'Buy me a coffee ☕': 'Buy me a coffee ☕' -'Hidden': 'Hidden' -'Small': 'Small' -'Normal': 'Normal' -'Big': 'Big' -'Hidden icon': 'Hidden icon' -'Small icon': 'Small icon' -'Normal icon': 'Normal icon' -'Big icon': 'Big icon' -'Hidden text': 'Hidden text' -'Small text': 'Small text' -'Normal text': 'Normal text' -'Big text': 'Big text' -'Colors': 'Colors' -'Background color': 'Background color' -'Background color of current app': 'Background color of current app' -'Text color': 'Text color' -'Loader': 'Loader' -'Icon': 'Icon' -'Same color': 'Same color' -'Opposite color': 'Opposite color' -'Transparent': 'Transparent' -'Opaque': 'Opaque' -'Opener': 'Opener' -'Default': 'Default' -'Default (dark)': 'Default (dark)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (dark)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (dark)' -'Before the logo': 'Before the logo' -'After the logo': 'After the logo' -'Position': 'Position' -'Show only the opener (hidden logo)': 'Show only the opener (hidden logo)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': 'Do not display the side menu and the opener if there is no application (eg: public pages).' -'Panel': 'Panel' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': 'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)' -'Display the big menu': 'Display the big menu' -'Display the logo': 'Display the logo' -'Icons and texts': 'Icons and texts' -'Loader enabled': 'Loader enabled' -'Tips': 'Tips' -'Always displayed': 'Always displayed' -'This is the automatic behavior when the menu is always displayed.': 'This is the automatic behavior when the menu is always displayed.' -'Not compatible with touch screens.': 'Not compatible with touch screens.' -'Big menu': 'Big menu' -'Live preview': 'Live preview' -'Open apps in new tab': 'Open apps in new tab' -'Use the global setting': 'Use the global setting' -'Use my selection': 'Use my selection' -'Show and hide the list of applications': 'Show and hide the list of applications' -'Use the avatar instead of the logo': 'Use the avatar instead of the logo' -'You do not have permission to change the settings.': 'You do not have permission to change the settings.' -'Force this configuration to users': 'Force this configuration to users' -'Export the configuration': 'Export the configuration' -'Purge the cache': 'Purge the cache' -'Show the link to settings': 'Show the link to settings' -'The menu is enabled by default for users': 'The menu is enabled by default for users' -'Except when the configuration is forced.': 'Except when the configuration is forced.' -'Apps that should not be displayed in the menu': 'Apps that should not be displayed in the menu' -'This feature is only compatible with the big menu display.': 'This feature is only compatible with the big menu display.' -'The logo is a link to the default app': 'The logo is a link to the default app' -'Others': 'Others' -'Categories': 'Categories' -'Customize sorting': 'Customize sorting' -'Order by': 'Order by' -'Name': 'Name' -'Customed': 'Customed' -'Show and hide the list of categories': 'Show and hide the list of categories' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': 'This parameters are used when Dark theme or Breeze Dark Theme are enabled.' -'Dark mode colors': 'Dark mode colors' -'With categories': 'With categories' -'Custom categories': 'Custom categories' -'Customize application categories': 'Customize application categories' -'Reset to default': 'Reset to default' -'Applications': 'Applications' -'Applications kept in the top menu': 'Applications kept in the top menu' -'Applications kept in the top menu but also shown in side menu': 'Applications kept in the top menu but also shown in side menu' -'These applications must be selected in the previous option.': 'These applications must be selected in the previous option.' -'Hide labels on mouse over': 'Hide labels on mouse over' -'Except the hovered app': 'Except the hovered app' -'Search': 'Search' -'Toggle the menu': 'Toggle the menu' -'Open the documentation': 'Open the documentation' -'Ask the developer': 'Ask the developer' -'New request': 'New request' -'Report a bug': 'Report a bug' -'Show the configuration': 'Show the configuration' -'Configuration:': 'Configuration:' -'Done!': 'Done!' -'Copy': 'Copy' -'Need help': 'Need help' -'I would like a new feature': 'I would like a new feature' -'Something went wrong': 'Something went wrong' -'Select apps': 'Select apps' -'Sort': 'Sort' -'Customize': 'Customize' -'Custom': 'Custom' -'Close': 'Close' +"Custom menu": "" +"Enable the custom menu": "" +"No": "" +"Yes": "" +"Menu": "" +? 'Use the shortcut Ctrl+o + to open and to hide the side menu. Use tab to + navigate.' +: '' +"Top menu": "" +"Apps that not must be moved in the side menu": "" +"If there is no selection then the global configuration is applied.": "" +"Experimental": "" +"Save": "" +"You like this app and you want to support me?": "" +"Buy me a coffee ☕": "" +"Hidden": "" +"Small": "" +"Normal": "" +"Big": "" +"Hidden icon": "" +"Small icon": "" +"Normal icon": "" +"Big icon": "" +"Hidden text": "" +"Small text": "" +"Normal text": "" +"Big text": "" +"Colors": "" +"Background color": "" +"Background color of current app": "" +"Text color": "" +"Loader": "" +"Icon": "" +"Same color": "" +"Opposite color": "" +"Transparent": "" +"Opaque": "" +"Opener": "" +"Default": "" +"Default (dark)": "" +"Hamburger": "" +"Hamburger (dark)": "" +"Hamburger 2": "" +"Hamburger 2 (dark)": "" +"Before the logo": "" +"After the logo": "" +"Position": "" +"Show only the opener (hidden logo)": "" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "" +"Panel": "" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "" +"Display the big menu": "" +"Display the logo": "" +"Icons and texts": "" +"Loader enabled": "" +"Tips": "" +"Always displayed": "" +"This is the automatic behavior when the menu is always displayed.": "" +"Not compatible with touch screens.": "" +"Big menu": "" +"Live preview": "" +"Open apps in new tab": "" +"Use the global setting": "" +"Use my selection": "" +"Show and hide the list of applications": "" +"Use the avatar instead of the logo": "" +"You do not have permission to change the settings.": "" +"Force this configuration to users": "" +"Export the configuration": "" +"Purge the cache": "" +"Show the link to settings": "" +"The menu is enabled by default for users": "" +"Except when the configuration is forced.": "" +"Apps that should not be displayed in the menu": "" +"This feature is only compatible with the big menu display.": "" +"The logo is a link to the default app": "" +"Others": "" +"Categories": "" +"Customize sorting": "" +"Order by": "" +"Name": "" +"Customed": "" +"Show and hide the list of categories": "" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "" +"Dark mode colors": "" +"With categories": "" +"Custom categories": "" +"Customize application categories": "" +"Reset to default": "" +"Applications": "" +"Applications kept in the top menu": "" +"Applications kept in the top menu but also shown in side menu": "" +"These applications must be selected in the previous option.": "" +"Hide labels on mouse over": "" +"Except the hovered app": "" diff --git a/src/l10n/fixtures/zh_CN.yaml b/src/l10n/fixtures/zh_CN.yaml index bc77571..9a73922 100644 --- a/src/l10n/fixtures/zh_CN.yaml +++ b/src/l10n/fixtures/zh_CN.yaml @@ -1,111 +1,94 @@ -'Custom menu': '自定义菜单' -'Enable the custom menu': '启用自定义菜单' -'No': '否' -'Yes': '是' -'Menu': '菜单' -'Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.': '使用快捷键 Ctrl+o 打开或隐藏侧边栏菜单。使用 Tab 键来导航。' -'Top menu': '顶部菜单' -'Apps that not must be moved in the side menu': '禁止在侧边栏菜单移动的应用' -'If there is no selection then the global configuration is applied.': '如果没有选择,则应用全局配置。' -'Experimental': '实验性' -'Save': '保存' -'You like this app and you want to support me?': '喜欢本应用并支持我一下?' -'Buy me a coffee ☕': '赏一杯咖啡 ☕ 给我' -'Hidden': '隐藏' -'Small': '小型' -'Normal': '标准' -'Big': '大型' -'Colors': '颜色' -'Background color': '背景颜色' -'Background color of current app': '当前应用的背景色' -'Text color': '文本颜色' -'Loader': '菜单指示器' -'Icon': '图标' -'Same color': '相同颜色' -'Opposite color': '相反颜色' -'Transparent': '透明' -'Opaque': '不透明' -'Opener': '触发器' -'Default': '默认' -'Default (dark)': '默认(深色)' -'Hamburger': 'Hamburger' -'Hamburger (dark)': 'Hamburger (深色)' -'Hamburger 2': 'Hamburger 2' -'Hamburger 2 (dark)': 'Hamburger 2 (深色)' -'Before the logo': '在徽标之前' -'After the logo': '在徽标之后' -'Position': '位置' -'Show only the opener (hidden logo)': '仅显示触发器(隐藏徽标)' -'Do not display the side menu and the opener if there is no application (eg: public pages).': '如果没有应用程序(例如:公共页面),则不要显示侧边栏菜单和触发器。' -'Panel': '面板' -'Open the menu when the mouse is hover the opener (automatically disabled on touch screens)': '当鼠标悬停在触发器上时打开菜单(在触摸屏上自动禁用)' -'Display the big menu': '显示大型菜单' -'Display the logo': '显示徽标' -'Icons and texts': '图标和文本' -'Loader enabled': '菜单指示器已启用' -'Tips': '技巧' -'Always displayed': '始终显示' -'This is the automatic behavior when the menu is always displayed.': '这是菜单始终显示时的自动行为。' -'Not compatible with touch screens.': '与触摸屏不兼容。' -'Big menu': '大型菜单' -'Live preview': '实时预览' -'Open apps in new tab': '在新标签页中打开应用' -'Use the global setting': '使用全局设置' -'Use my selection': '使用自定义设置' -'Show and hide the list of applications': '显示和隐藏应用程序列表' -'Use the avatar instead of the logo': '使用头像代替徽标' -'You do not have permission to change the settings.': '您没有更改设置的权限。' -'Force this configuration to users': '强制用户使用此配置' -'Export the configuration': '导出配置' -'Purge the cache': '清除缓存' -'Show the link to settings': '显示设置链接' -'The menu is enabled by default for users': '默认情况下为用户启用菜单' -'Except when the configuration is forced.': '除非强制配置。' -'Apps that should not be displayed in the menu': '禁止在菜单中显示的应用' -'This feature is only compatible with the big menu display.': '此功能只和大型菜单兼容。' -'The logo is a link to the default app': '徽标链接到默认应用' -'Others': '其他' -'Categories': '类别' -'Customize sorting': '自定义排序' -'Order by': '排序方式' -'Name': '名称' -'Customed': '自定义' -'Show and hide the list of categories': '显示或隐藏类别列表' -'This parameters are used when Dark theme or Breeze Dark Theme are enabled.': '启用深色主题时使用此参数。' -'Dark mode colors': '深色模式颜色' -'With categories': '按类别' -'Custom categories': '自定义类别' -'Customize application categories': '自定义应用程序类别' -'Reset to default': '重置为默认设置' -'Hidden icon': '隐藏图标' -'Small icon': '小图标' -'Normal icon': '正常图标' -'Big icon': '大图标' -'Hidden text': '隐藏文本' -'Small text': '小文本' -'Normal text': '普通文本' -'Big text': '大文本' -'Applications': '应用程序' -'Applications kept in the top menu': '应用程序保留在顶部菜单中' -'Applications kept in the top menu but also shown in side menu': '应用程序保留在顶部菜单中,但也显示在侧边栏菜单中' -'These applications must be selected in the previous option.': '必须在上一个选项中选择这些应用程序。' -'Hide labels on mouse over': '鼠标悬停时隐藏标签' -'Except the hovered app': '除了悬停的应用' -'Search': '搜索' -'Toggle menu': '切换菜单' -'Open the documentation': '打开文档' -'Ask the developer': '询问开发者' -'New request': '新请求' -'Report a bug': '报告错误' -'Show the configuration': '显示配置' -'Configuration:': '配置:' -'Done!': '完成!' -'Copy': '复制' -'Need help': '需要帮助' -'I would like a new feature': '我想要一个新功能' -'Something went wrong': '出了点问题' -'Select apps': '选择应用' -'Sort': '排序' -'Customize': '自定义' -'Custom': '自定义' -'Close': '关闭' +"Custom menu": "自定义菜单" +"Enable the custom menu": "激活自定义菜单" +"No": "取消" +"Yes": "确定" +"Menu": "菜单" +? "Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate." +: "使用快捷键 Ctrl+o 打开或隐藏侧边栏菜单。使用tab 来导航。" +"Top menu": "顶部菜单" +"Apps that not must be moved in the side menu": "禁止在侧边栏菜单移动的应用" +"If there is no selection then the global configuration is applied.": "如不选择,将应用全局设定。" +"Experimental": "实验性" +"Save": "保存" +"You like this app and you want to support me?": "喜欢本应用并支持我一下?" +"Buy me a coffee ☕": "赏一杯咖啡 ☕ 给我" +"Hidden": "隐藏" +"Small": "小型" +"Normal": "标准" +"Big": "大型" +"Colors": "颜色" +"Background color": "背景颜色" +"Background color of current app": "当前应用的背景色" +"Text color": "文字颜色" +"Loader": "菜单指示器" +"Icon": "图标" +"Same color": "相同颜色" +"Opposite color": "相反颜色" +"Transparent": "透明" +"Opaque": "不透明" +"Opener": "容器" +"Default": "默认" +"Default (dark)": "默认(深色)" +"Hamburger": "Hamburger" +"Hamburger (dark)": "Hamburger (深色)" +"Hamburger 2": "Hamburger 2" +"Hamburger 2 (dark)": "Hamburger 2 (深色)" +"Before the logo": "在logo前" +"After the logo": "在logo后" +"Position": "位置" +"Show only the opener (hidden logo)": "只显示容器 (隐藏logo)" +"Do not display the side menu and the opener if there is no application (eg: public pages).": "N如果没有应用,不显示侧边栏菜单和容器 (例如 : 公共页面)。" +"Panel": "面板" +"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "鼠标悬停时打开菜单 (触摸屏时将自动禁用)" +"Display the big menu": "显示大型菜单" +"Display the logo": "显示logo" +"Icons and texts": "图标与文字" +"Loader enabled": "菜单指示器已激活" +"Tips": "技巧" +"Always displayed": "一直显示" +"This is the automatic behavior when the menu is always displayed.": "一直显示菜单时的自动动作。" +"Not compatible with touch screens.": "与触屏不兼容。" +"Big menu": "大型菜单" +"Live preview": "实时预览" +"Open apps in new tab": "在新标签中打开应用" +"Use the global setting": "使用全局设定" +"Use my selection": "使用自定义设定" +"Show and hide the list of applications": "显示或隐藏应用列表" +"Use the avatar instead of the logo": "使用头像代替logo" +"You do not have permission to change the settings.": "没有更改设置的权限。" +"Force this configuration to users": "强制用户使用此设置" +"Export the configuration": "导出设置" +"Purge the cache": "清除缓存" +"Show the link to settings": "显示设置链接" +"The menu is enabled by default for users": "用户的默认菜单已激活" +"Except when the configuration is forced.": "除非设置被强制使用。" +"Apps that should not be displayed in the menu": "禁止在菜单中显示的应用" +"This feature is only compatible with the big menu display.": "此功能只和大型菜单兼容。" +"The logo is a link to the default app": "logo链接到默认应用" +"Others": "其他" +"Categories": "类别" +"Customize sorting": "自定义顺序" +"Order by": "排序规则" +"Name": "名称" +"Customed": "自定义" +"Show and hide the list of categories": "显示或隐藏类别列表" +"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "此参数将应用于暗黑主题激活时。" +"Dark mode colors": "暗黑模式颜色" +"With categories": "有类别" +"Custom categories": "自定义类别" +"Customize application categories": "自定义应用程序类别" +"Reset to default": "重置为默认设置" +"Hidden icon": "隐藏图标" +"Small icon": "小图标" +"Normal icon": "正常图标" +"Big icon": "大图标" +"Hidden text": "隐藏文字" +"Small text": "小文本" +"Normal text": "普通文本" +"Big text": "大文本" +"Applications": "Applications" +"Applications kept in the top menu": "Applications kept in the top menu" +"Applications kept in the top menu but also shown in side menu": "Applications kept in the top menu but also shown in side menu" +"These applications must be selected in the previous option.": "These applications must be selected in the previous option." +"Hide labels on mouse over": "Hide labels on mouse over" +"Except the hovered app": "Except the hovered app" diff --git a/src/lib/createElement.js b/src/lib/createElement.js new file mode 100644 index 0000000..19c8207 --- /dev/null +++ b/src/lib/createElement.js @@ -0,0 +1,11 @@ +module.exports = (tagName, attributes) => { + const element = document.createElement(tagName) + + if (typeof attributes === 'object') { + for (let i in attributes) { + element.setAttribute(i, attributes[i]) + } + } + + return element +} diff --git a/src/lib/dom.js b/src/lib/dom.js deleted file mode 100644 index b03ce5e..0000000 --- a/src/lib/dom.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -const waitContainer = async (selector) => { - return new Promise((resolve) => { - const execute = () => { - const container = document.querySelector(selector) - - if (container) { - resolve(container) - } else { - setTimeout(() => { - execute(selector) - }, 50) - } - } - - execute(selector) - }) -} - -const createElement = (tagName, attributes) => { - const element = document.createElement(tagName) - - if (typeof attributes === 'object') { - for (let i in attributes) { - if (i === 'text') { - element.textContent = attributes[i] - } else if (i === 'html') { - element.innerHTML = attributes[i] - } else { - element.setAttribute(i, attributes[i]) - } - } - } - - return element -} - -export { waitContainer, createElement } diff --git a/src/lib/menu.js b/src/lib/menu.js deleted file mode 100644 index 6153682..0000000 --- a/src/lib/menu.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -const focusActiveApp = (menu) => { - window.setTimeout(() => { - const a = menu.querySelector('.side-menu-app.active a') || menu.querySelector('.side-menu-app a') - - if (a) { - a.focus() - } - }, 500) -} - -export { focusActiveApp } diff --git a/src/lib/search.js b/src/lib/search.js deleted file mode 100644 index 033dfd6..0000000 --- a/src/lib/search.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -const containsAppsMatchingSearch = (values, search) => { - if (search.trim() === '') { - return true - } - - for (let key in values) { - if (isAppMatchingSearch(values[key], search)) { - return true - } - } - - return false -} - -const isAppMatchingSearch = (item, search) => { - if (search.trim() === '') { - return true - } - - return item.name.toLowerCase().includes(search.trim().toLowerCase()) -} - -export { containsAppsMatchingSearch, isAppMatchingSearch } diff --git a/src/lib/setting.js b/src/lib/setting.js deleted file mode 100644 index f69ee60..0000000 --- a/src/lib/setting.js +++ /dev/null @@ -1,26 +0,0 @@ -const waitPasswordConfirmation = async () => { - let tries = 0 - - return new Promise((resolve, reject) => { - const execute = () => { - if (!OC.PasswordConfirmation.requiresPasswordConfirmation()) { - resolve() - return - } - - OC.PasswordConfirmation.requirePasswordConfirmation(() => {}) - - if (++tries !== 10) { - setTimeout(() => { - execute() - }, 2000) - } else { - reject() - } - } - - execute() - }) -} - -export { waitPasswordConfirmation } diff --git a/src/menu.js b/src/menu.js deleted file mode 100644 index 9f41a0f..0000000 --- a/src/menu.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import './scss/menu.scss' - -import '@formatjs/intl-segmenter/polyfill.js' - -import { createApp } from 'vue' -import { createPinia } from 'pinia' -import { createElement, waitContainer } from './lib/dom.js' - -import StandardMenu from './menus/StandardMenu' -import MenuContainer from './menus/MenuContainer' - -const pinia = createPinia() -const body = document.querySelector('body') -const container = createElement('div', { - id: 'side-menu-container', -}) - -body.appendChild(container) - -const app = createApp(MenuContainer) -app.use(pinia) -app.mixin({ methods: { t, n } }) -app.mount(container) - -waitContainer('#header .app-menu').then((container) => { - const menu = createElement('div', { - id: 'app-menu-container', - }) - - container.parentNode.insertBefore(menu, container.nextSibling) - container.remove() - - const app = createApp(StandardMenu) - app.use(pinia) - app.mixin({ methods: { t, n } }) - app.mount(menu) -}) diff --git a/src/menus/MenuContainer.vue b/src/menus/MenuContainer.vue deleted file mode 100644 index ba44f97..0000000 --- a/src/menus/MenuContainer.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - - diff --git a/src/menus/SideMenuWithCategories.vue b/src/menus/SideMenuWithCategories.vue deleted file mode 100644 index eb8ae1f..0000000 --- a/src/menus/SideMenuWithCategories.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - - diff --git a/src/menus/SimpleSideMenu.vue b/src/menus/SimpleSideMenu.vue deleted file mode 100644 index 65d0fa4..0000000 --- a/src/menus/SimpleSideMenu.vue +++ /dev/null @@ -1,176 +0,0 @@ - - - - diff --git a/src/menus/StandardMenu.vue b/src/menus/StandardMenu.vue deleted file mode 100644 index 81b9ff9..0000000 --- a/src/menus/StandardMenu.vue +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - diff --git a/src/menus/TopWideMenu.vue b/src/menus/TopWideMenu.vue deleted file mode 100644 index 596b1ea..0000000 --- a/src/menus/TopWideMenu.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - diff --git a/src/pages/AdminSettings.vue b/src/pages/AdminSettings.vue deleted file mode 100644 index d3c7c84..0000000 --- a/src/pages/AdminSettings.vue +++ /dev/null @@ -1,627 +0,0 @@ - - - - diff --git a/src/pages/UserSettings.vue b/src/pages/UserSettings.vue deleted file mode 100644 index d3a7dfb..0000000 --- a/src/pages/UserSettings.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - diff --git a/src/scss/admin.scss b/src/scss/admin.scss deleted file mode 100644 index 0cd332c..0000000 --- a/src/scss/admin.scss +++ /dev/null @@ -1,262 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -.cm-settings { - &--nav { - padding-top: 30px; - } - - &-nav { - .app-navigation__content { - padding: 20px; - } - - .app-navigation-entry-icon { - display: none !important; - } - - .app-navigation-entry__name { - padding-left: 10px !important; - } - } - - &-tips { - margin-bottom: 15px; - } - - &-section { - width: 100%; - padding: 20px; - - &--hidden { - display: none; - } - } - - &-item { - display: flex; - justify-content: start; - margin-bottom: 10px; - - &--disabled { - opacity: 0.5; - } - - &-label { - max-width: 350px; - width: 100%; - padding-right: 20px; - - &--short { - max-width: 300px; - } - - &--top { - vertical-align: top; - } - - &--middle { - display: flex; - flex-direction: column; - text-align: left; - } - } - - &-form { - } - } - - &-form { - &-arrow { - color: var(--color-text-maxcontrast); - display: inline-block; - margin-right: 3px; - } - - &-draggable { - cursor: pointer; - padding: 8px 12px; - border-bottom: 1px solid var(--color-border); - } - - &-displaypicker { - img { - padding: 10px 10px 10px 0; - border: 2px solid transparent; - max-width: 100%; - cursor: pointer; - } - } - - &-colorpicker { - display: inline-block; - margin-right: 12px; - width: 60px; - height: 30px; - - &-value { - cursor: pointer; - width: 60px; - height: 30px; - border-radius: 6px; - border: 1px solid var(--color-border); - } - } - - &-range { - input { - min-height: auto; - } - - div * { - vertical-align: middle; - } - - em + input, - input + em { - margin-left: 10px; - } - } - - &-catsort-modal { - .modal__footer { - padding: 20px; - text-align: right; - } - - .modal__footer button { - display: inline-block; - } - } - - &-appsort-modal { - .modal__footer { - text-align: right; - padding: 20px; - } - - .modal__footer button { - display: inline-block; - } - } - - &-apppicker-modal { - .modal__content { - padding: 20px; - } - - .modal__footer { - margin-top: 20px; - text-align: right; - } - - .modal__footer button { - display: inline-block; - } - - img { - width: 15px; - height: 15px; - } - } - - &-appcategory-modal { - .modal__content { - padding: 20px; - } - - .menu button { - display: inline-block; - margin-right: 5px; - } - - .modal__footer { - margin-top: 20px; - text-align: right; - } - - .modal__footer button { - display: inline-block; - } - - td { - padding: 5px 0; - } - - tr:hover, - td:hover { - background: none !important; - } - - .form { - padding: 10px 0; - } - - img { - width: 15px; - height: 15px; - } - - .btn-close { - margin-left: 20px; - } - } - } - - &-btn { - &--save { - margin-top: 30px; - } - } - - &-config-modal { - textarea { - width: 100%; - height: 30vh; - } - - .modal__content { - padding: 20px; - } - - .modal__footer { - margin-top: 20px; - text-align: right; - } - - .modal__footer button { - display: inline-block; - margin-right: 5px; - } - } - - &-children-inline { - > * { - display: inline-block !important; - margin-right: 5px; - margin-bottom: 5px; - } - } - - &-button-inline { - .button-vue { - display: inline-block !important; - margin-right: 5px; - margin-bottom: 5px; - } - } -} diff --git a/src/scss/menu.scss b/src/scss/menu.scss deleted file mode 100644 index 097c002..0000000 --- a/src/scss/menu.scss +++ /dev/null @@ -1,601 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#header { - .cm-opener { - margin-left: 0px; - margin-top: 0px; - } -} - -.app-menu { - visibility: hidden; -} - -.cm { - position: fixed; - top: 0; - left: 0; - height: 100vh; - width: 100%; - max-width: 290px; - background: linear-gradient(90deg, var(--side-menu-background-color, #333) 0%, var(--side-menu-background-color-to, #333) 100%); - z-index: 3000; - color: var(--side-menu-text-color, #fff); - box-shadow: - rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px, - rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px; - display: none; - - &-opener { - background: var(--side-menu-opener, url('../../img/side-menu-opener.svg')); - background-color: transparent !important; - height: 40px !important; - width: 40px !important; - border-radius: 0 !important; - border: 0 !important; - padding-right: 12px !important; - padding-left: 12px !important; - margin-top: 1px !important; - margin-left: 5px !important; - margin-left: 3px !important; - overflow: hidden; - - span { - position: relative; - left: 50px; - display: block; - width: 1px; - height: 1px; - overflow: hidden; - } - - &:active, - &:focus { - background-color: var(--side-menu-current-app-background-color, #444) !important; - } - } - - &-closer { - background: url('../../img/side-menu-opener-closer.svg'); - display: none; - } - - a { - transition: 0.2s; - } - - &-categories-wrapper { - padding-bottom: 70px; - } - - &-search { - float: right; - - input { - background: none; - border: 0; - border-radius: 0; - color: var(--side-menu-text-color); - - &::placeholder { - color: var(--side-menu-text-color); - } - } - } - - &-categories { - max-height: calc(100vh - 55px); - overflow: auto; - position: relative; - display: flex; - flex-wrap: wrap; - justify-content: center; - padding: 0 10% 0 10%; - } - - &-category { - padding: 10px 20px; - flex: 1 1 auto; - - &-title { - padding-left: 10px; - color: var(--side-menu-text-color, #fff); - font-weight: bold; - font-size: 20px; - margin-bottom: 12px; - line-height: 30px; - margin-top: 0; - } - } - - &-header { - width: 100%; - z-index: 2300; - max-width: 290px; - padding-top: 2px; - top: 0; - - &::after { - content: ' '; - display: block; - clear: both; - } - } - - &-loader { - position: fixed; - top: 0; - left: 0; - width: 100%; - z-index: 3001; - - &-bar { - height: 4px; - background: var(--side-menu-loader-color, #0e75ac); - width: 0; - transition-property: width; - } - } - - &-apps { - height: calc(100vh - 49px); - top: 49px; - z-index: 2200; - position: fixed; - width: 100%; - max-width: 290px; - overflow: auto; - - &.side-menu-apps-list--with-logo { - height: calc(100vh - 160px); - top: 160px; - } - } - - &-app { - a { - line-height: 30px; - color: var(--side-menu-text-color, #fff); - display: block; - padding: 7px 0 5px 13px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - a:hover, - a:focus, - &:active, - &.active { - background: var(--side-menu-current-app-background-color, #444); - } - - &-icon { - width: 20px; - vertical-align: middle; - margin-top: -4px; - margin-right: 10px; - filter: invert(var(--side-menu-icon-invert-filter, 0%)); - opacity: var(--side-menu-icon-opacity, 1); - } - } - - &-setting { - margin-right: 9px; - margin-top: 2px; - float: right; - line-height: 34px; - height: 42px; - display: none; - - a { - color: var(--side-menu-text-color, #fff); - display: block; - padding: 4px 7px; - } - - &:hover a, - a:active, - a:focus { - background: var(--side-menu-current-app-background-color, #444); - } - - img { - vertical-align: bottom; - margin-left: 3px; - width: 32px; - height: 32px; - } - } - - &.open { - display: block; - - .cm-setting { - display: block; - } - } - - &-logo { - text-align: center; - clear: both; - - img { - max-width: 60%; - max-height: 100px; - } - } - - &--topwidemenu { - max-width: 100%; - height: auto; - } - - &--sidemenuwithcategories { - max-width: 290px; - height: 100vh; - - .cm-categories { - display: block; - padding: 0; - width: 100%; - } - - .cm-category { - padding: 10px 0; - } - - .cm-header { - max-width: 295px; - } - } - - &.cm--topwidemenu, - &.cm--sidemenuwithcategories { - .cm-apps { - height: auto !important; - position: static !important; - max-width: 100vw !important; - overflow: auto !important; - } - - .cm-app { - a { - padding: 7px 0 7px 7px; - } - - &-icon { - vertical-align: middle; - margin-top: -2px; - } - } - } -} - -.cm-standardmenu { - visibility: hidden; - - &.show { - visibility: visible; - } -} - -.cm-always-displayed { - body { - width: calc(100% - 50px) !important; - position: absolute; - left: 50px; - } - - #header { - position: absolute !important; - - .cm-opener { - display: none; - } - } - - .cm { - display: block; - width: 50px; - - &-apps { - height: calc(100vh - 49px); - width: 50px; - top: 49px; - - &:hover { - overflow: auto; - } - } - - &-header { - height: 49px; - width: 50px; - } - - &-logo { - display: none; - } - - &-app { - &-text { - display: none; - } - } - - &.open { - width: 100%; - max-width: 290px; - - .cm-apps { - width: 100%; - } - - .cm-app { - &-text { - display: inline; - } - } - - .cm-header { - width: 100%; - } - } - } - - .app-navigation-toggle-wrapper { - right: 0 !important; - margin-left: 0 !important; - } -} - -@media screen and (max-width: 1024px) { - .cm { - &--topwidemenu { - max-width: 290px; - height: 100vh; - - .cm-header { - max-width: 100%; - } - } - - &-categories { - display: block; - padding: 0; - } - - &-category { - padding: 10px 0; - } - } -} - -@media screen and (min-width: 1024px) { - .cm { - &--topwidemenu { - .cm-header { - max-width: 100%; - } - } - - &-closer { - display: block; - float: right; - margin-right: 9px; - } - } -} - -$header-icon-size: 20px; - -.cm-standardmenu { - width: 100%; - display: flex; - flex-shrink: 1; - flex-wrap: wrap; - - .app-menu-main { - display: flex; - flex-wrap: nowrap; - - .app-menu-entry { - width: 50px; - height: 50px; - position: relative; - display: flex; - - &.app-menu-entry__active { - opacity: 1; - - &::before { - content: ' '; - position: absolute; - pointer-events: none; - border-bottom-color: var(--color-main-background); - transform: translateX(-50%); - width: 12px; - height: 5px; - border-radius: 3px; - background-color: var(--color-primary-text); - left: 50%; - bottom: 6px; - display: block; - transition: all 0.1s ease-in-out; - opacity: 1; - } - - .app-menu-entry--label { - font-weight: bold; - } - } - - a { - width: calc(100% - 4px); - height: calc(100% - 4px); - margin: 2px; - color: var(--color-primary-text); - position: relative; - } - - img { - transition: margin 0.1s ease-in-out; - width: $header-icon-size; - height: $header-icon-size; - padding: calc((100% - $header-icon-size) / 2); - box-sizing: content-box; - filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright)); - } - - .app-menu-entry--label { - opacity: 0; - position: absolute; - font-size: 12px; - color: var(--color-primary-text); - text-align: center; - left: 50%; - top: 45%; - display: block; - min-width: 100%; - transform: translateX(-50%); - transition: all 0.1s ease-in-out; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - letter-spacing: -0.5px; - } - - &:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):hover, - &:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):focus-within { - opacity: 1; - .app-menu-entry--label { - opacity: 1; - font-weight: bolder; - bottom: 0; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - } - } - } - - // Show labels - &:hover, - &:focus-within, - .app-menu-entry:hover, - .app-menu-entry:focus { - opacity: 1; - } - - &:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):hover, - &:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):focus-within, - .app-menu-entry:not(.app-menu-entry__hidden-label):hover, - .app-menu-entry:not(.app-menu-entry__hidden-label):focus { - opacity: 1; - - img { - margin-top: -8px; - } - - .app-menu-entry--label { - opacity: 1; - bottom: 0; - } - - &::before, - .app-menu-entry::before { - opacity: 0; - } - } - - &.app-menu-main__show-hovered .app-menu-entry:hover, - &.app-menu-main__show-hovered .app-menu-entry:focus { - img { - margin-top: -8px; - } - - .app-menu-entry--label { - opacity: 1; - bottom: 0; - } - - &::before, - .app-menu-entry::before { - opacity: 0; - } - } - } - - .app-menu-more .button-vue--vue-tertiary { - opacity: 0.7; - margin: 8px 3px 3px 3px; - filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright)); - - &:not([aria-expanded='true']) { - color: var(--color-main-text); - - &:hover { - opacity: 1; - background-color: transparent !important; - } - } - - &:focus-visible { - opacity: 1; - outline: none !important; - } - } - - &-app-menu-popover-entry { - .app-icon { - position: relative; - height: 35px; - width: 40px; - display: flex; - align-items: center; - justify-content: center; - filter: var(--background-invert-if-bright, var(--primary-invert-if-bright)); - - &.has-unread::after { - background-color: var(--color-main-text); - } - - img { - width: $header-icon-size; - height: $header-icon-size; - } - } - } - - .has-unread::after { - content: ''; - width: 8px; - height: 8px; - background-color: var(--color-primary-element-text); - border-radius: 50%; - position: absolute; - display: block; - top: 10px; - right: 10px; - } - - .unread-counter { - display: none; - } -} diff --git a/src/store/config.js b/src/store/config.js deleted file mode 100644 index 65540be..0000000 --- a/src/store/config.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import { defineStore } from 'pinia' -import axios from '@nextcloud/axios' -import { generateUrl } from '@nextcloud/router' - -export const useConfigStore = defineStore('config', () => { - let config = null - let appConfig = null - let userConfig = null - - async function getConfig() { - if (config === null) { - config = await axios.get(generateUrl('/apps/side_menu/js/config')).then((response) => response.data) - } - - return config - } - - async function getAppConfig() { - if (appConfig === null) { - appConfig = await axios.get(generateUrl('/apps/side_menu/admin/config')).then((response) => response.data) - } - - return appConfig - } - - async function getUserConfig() { - if (userConfig === null) { - userConfig = await axios.get(generateUrl('/apps/side_menu/user/config')).then((response) => response.data) - } - - return userConfig - } - - return { - getConfig, - getAppConfig, - getUserConfig, - } -}) diff --git a/src/store/nav.js b/src/store/nav.js deleted file mode 100644 index 98abe0d..0000000 --- a/src/store/nav.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import { defineStore } from 'pinia' -import axios from '@nextcloud/axios' -import { generateUrl, generateOcsUrl } from '@nextcloud/router' - -export const useNavStore = defineStore('nav', () => { - let categories = null - let apps = null - let coreApps = null - - async function getApps() { - if (apps === null) { - apps = [] - const cats = await getCategories() - - cats.forEach((category) => { - Object.values(category.apps).forEach((app) => { - apps.push(app) - }) - }) - } - - return apps - } - - async function getCoreApps() { - if (coreApps == null) { - coreApps = await await axios.get(generateUrl('/apps/side_menu/core/apps')).then((response) => response.data.items) - } - - return coreApps - } - - async function getCategories() { - if (categories === null) { - categories = await axios.get(generateUrl('/apps/side_menu/nav/items')).then((response) => response.data.items) - } - - return categories - } - - return { - getApps, - getCoreApps, - getCategories, - } -}) diff --git a/src/user.js b/src/user.js deleted file mode 100644 index 0147a7c..0000000 --- a/src/user.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import './scss/admin.scss' - -import '@formatjs/intl-segmenter/polyfill.js' - -import { createApp } from 'vue' -import { createPinia } from 'pinia' -import { waitContainer } from './lib/dom.js' - -import UserSettings from './pages/UserSettings' - -waitContainer('#side-menu-user-settings').then((selector) => { - const pinia = createPinia() - const app = createApp(UserSettings) - app.use(pinia) - app.mixin({ methods: { t, n } }) - app.mount(selector) -}) diff --git a/templates/css/stylesheet.php b/templates/css/stylesheet.php index 5bdc08b..6582131 100644 --- a/templates/css/stylesheet.php +++ b/templates/css/stylesheet.php @@ -1,124 +1,121 @@ - $value) { - echo sprintf( - "--side-menu-%s: %s;\n", - $key, - 'opener' === $key - ? sprintf('url("%s")', image_path('side_menu', $value.'.svg')) - : $value - ); - } -} -?> - :root { - + $value): ?> + + --side-menu-: url(''); + + --side-menu-: ; + + } -@media (prefers-color-scheme: light) { - :root { - + + #appmenu { + display: none; } -} -@media (prefers-color-scheme: dark) { - -} + #appmenu + nav { + display: none; + } + + .app-hidden { + opacity: 0; + } + -body[data-theme-dark], body[data-theme-dark-highcontrast] { - -} - -body[data-theme-light], body[data-theme-light-highcontrast] { - -} - - + #nextcloud { - display: none !important; - } - - - - .cm-apps { - - width: 55px; - - width: 52px; - - } - - .cm .cm-opener { - - margin-left: 1px; - - margin-left: 0px; - - } - - - - .cm-app-icon { display: none; } - - .cm-app-icon svg { + + + + .side-menu-logo { + display: none; + } + + .side-menu-header { + height: 50px; + } + + .side-menu-apps-list { + height: calc(100vh - 49px); + top: 49px; + } + + #side-menu.hide-opener .side-menu-header { + visibility: hidden; + } + + + #side-menu, .side-menu-apps-list { + + width: 55px; + + width: 52px; + + } + + #side-menu .side-menu-opener { + + margin-left: 1px; + + margin-left: 0px; + + } + + + + + .side-menu-app-icon { + display: none; + } + + .side-menu-app-icon svg { width: 15px; height: 15px; } - img.cm-app-icon { + img.side-menu-app-icon { width: 15px; height: 15px; } - - .cm-app a { - padding-left: 16px !important; - } - - .cm-app-icon svg { + + .side-menu-app-icon svg { width: 20px; height: 20px; } - img.cm-app-icon { + img.side-menu-app-icon { width: 20px; height: 20px; } - - .cm-app-icon svg { + + .side-menu-app-icon svg { width: 23px; height: 23px; } - img.cm-app-icon { + img.side-menu-app-icon { width: 23px; height: 23px; } + - .cm-app a { - padding-left: 11px !important; - } - - - - .cm-app-text { + + .side-menu-app-text { display: none; } - - .cm-app-text { + + .side-menu-app-text { font-size: 12px; } - - .cm-app-text { + + .side-menu-app-text { font-size: 16px; } - + - + #content { left: 53px; width: calc(100% - (var(--body-container-margin) * 2) - 62px); @@ -128,4 +125,4 @@ body[data-theme-light], body[data-theme-light-highcontrast] { width: calc(100% - (var(--body-container-margin) * 2) - 60px); margin-left: 11px; } - + diff --git a/templates/js/script.php b/templates/js/script.php new file mode 100644 index 0000000..27e1273 --- /dev/null +++ b/templates/js/script.php @@ -0,0 +1,188 @@ + + +(function() { + const sideMenuContainer = SMcreateElement('div', {id: 'side-menu-container'}) + const sideMenuOpener = SMcreateElement('button', {'class': 'side-menu-opener'}) + const sideMenu = SMcreateElement('div', {id: 'side-menu'}) + + const body = document.querySelector('body') + const html = document.querySelector('html') + const nextcloud = document.querySelector('#nextcloud') + + const isTouchDevice = window.matchMedia("(pointer: coarse)").matches + + window.targetBlankApps = + window.topMenuApps = + window.topSideMenuApps = + window.menuAppsOrder = + window.topMenuAppsMouseOverHiddenLabel = + + + sideMenu.setAttribute('data-bigmenu', '1') + + sideMenu.setAttribute('data-sidewithcategories', '1') + + + document.querySelector('body').addEventListener('side-menu.apps', (e) => { + const apps = e.detail.apps; + + + const sideMenu = document.querySelector('#side-menu') + + if (apps.length === 0) { + sideMenu.classList.remove('open') + sideMenu.classList.add('hide') + sideMenuOpener.classList.add('hide') + } else { + sideMenu.classList.remove('hide') + sideMenuOpener.classList.remove('hide') + } + + + if (apps.length === 0) { + html.classList.remove('side-menu-always-displayed') + } else { + html.classList.add('side-menu-always-displayed') + } + + + + if (apps.length === 0) { + html.classList.remove('side-menu-always-displayed') + } else { + html.classList.add('side-menu-always-displayed') + } + + + }) + + body.addEventListener('side-menu.ready', () => { + const sideMenu = document.querySelector('#side-menu') + const headerMenuOpener = document.querySelector('#header .side-menu-opener') + const sideMenuOpener = document.querySelectorAll('#side-menu .side-menu-opener') + + if (!headerMenuOpener) { + return + } + + sideMenuFocus = () => { + let a = document.querySelector('.side-menu-app.active a', sideMenu) + + if (!a) { + return + } + + if (a.length === 0) { + a = sideMenu.querySelector('.side-menu-app:first-child a') + } + + if (a.length > 0) { + a.focus() + } + } + + + const sideMenuMouseLeave = () => { + sideMenu.classList.remove('open') + sideMenu.removeEventListener('mouseleave', sideMenuMouseLeave) + } + + const sideMenuMouseEnter = () => { + sideMenu.addEventListener('mouseleave', sideMenuMouseLeave) + } + + const sideMenuOpenerMouseEnter = () => { + sideMenu.classList.add('open') + sideMenu.addEventListener('mouseenter', sideMenuMouseEnter) + + sideMenuFocus() + } + + if (!isTouchDevice) { + + headerMenuOpener.addEventListener('mouseenter', sideMenuOpenerMouseEnter) + + sideMenu.classList.add('hide-opener') + + + sideMenu.addEventListener('mouseleave', sideMenuMouseLeave) + sideMenu.addEventListener('mouseenter', sideMenuOpenerMouseEnter) + } + + + headerMenuOpener.addEventListener('click', () => { + sideMenu.classList.add('open') + + const a = sideMenu.querySelector('.side-menu-app.active a') + + if (a !== null) { + a.focus() + } + + headerMenuOpener.blur() + }) + + for (let opener of sideMenuOpener) { + opener.addEventListener('click', () => { + + sideMenu.classList.toggle('open') + + sideMenu.classList.remove('open') + + }) + } + + document.addEventListener('keydown', (e) => { + var key = e.key || e.keyCode + + if ((key === 'o' || key === 79) && e.ctrlKey === true) { + e.preventDefault() + + sideMenu.classList.toggle('open') + sideMenuFocus() + } + }) + + const sideMenuObserver = new MutationObserver((e) => { + if (body.getAttribute('id') !== 'body-settings') { + return + } + + body.classList.toggle('body-settings-side-menu', sideMenu.classList.contains('open')) + }) + + sideMenuObserver.observe(sideMenu, { + attributes: true, + attributeFilter: ['class'], + childList: false, + characterData: false + }) + }) + + body.appendChild(sideMenuContainer) + sideMenuContainer.appendChild(sideMenu) + + + PageLoader() + + + if (nextcloud) { + + nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud) + + nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud.nextSibling) + + } +})(); diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 9666f08..c547405 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -20,7 +20,1130 @@ use OCP\IURLGenerator; use OCP\IConfig; use OCA\SideMenu\AppInfo\Application; -script('side_menu', 'side_menu-admin'); -?> +vendor_script('side_menu', 'html5sortable.min'); +script('side_menu', 'admin'); +style('side_menu', 'admin'); -
+$urlGenerator = \OC::$server[IURLGenerator::class]; +$cacheSize = floor(mb_strlen(\OC::$server[IConfig::class]->getAppValue(Application::APP_ID, 'cache-categories', ''), '8bit') / 1024); + +$choicesYesNo = [ + 'No' => '0', + 'Yes' => '1', +]; + +$choicesSizes = [ + 'Hidden' => 'hidden', + 'Small' => 'small', + 'Normal' => 'normal', + 'Big' => 'big', +]; + +$labelShowHideApps = 'Show and hide the list of applications'; +$labelReset = 'Reset to default'; +$labelDefault = 'Default'; +$labelWithCategories = 'With categories'; +$labelBigMenu = 'Big menu'; +$labelAlwaysDisplayed = 'Always displayed'; + +?> +
+ +
+

+ t('Panel')); ?> +

+ + !$_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'], + 'always-displayed' => $_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'], + 'side-with-categories' => $_['side-with-categories'] && !$_['always-displayed'] && !$_['big-menu'], + 'big-menu' => $_['big-menu'] && !$_['always-displayed'] && !$_['side-with-categories'], + ]; + ?> + +
+ +
+

+ <?php p($l->t($labelDefault)); ?> +

+ +
+ +
+

+ <?php p($l->t($labelWithCategories)); ?> +

+ +
+ +
+

+ <?php p($l->t($labelBigMenu)); ?> +

+ +
+ +
+

t('Not compatible with touch screens.')); ?>

+

+ <?php p($l->t($labelAlwaysDisplayed)); ?> +

+ + + + +
+ +
+

+ t('Colors')); ?> + + t('Live preview')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +
+
+
+ t('Background color')); ?> +
+
+ + + +
+
+ + t('Transparent')); ?> + + + + + + t('Opaque')); ?> + +
+
+ +
+
+ +
+
+
+ t('Background color of current app')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Text color')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Loader')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Icon')); ?> +
+
+
+ + t('Same color')); ?> + + + + + + t('Opposite color')); ?> + +
+ +
+ + t('Transparent')); ?> + + + + + + t('Opaque')); ?> + +
+
+
+
+ +
+ 'side-menu-opener', + 'Default (dark)' => 'side-menu-opener-dark', + 'Hamburger' => 'side-menu-opener-hamburger', + 'Hamburger (dark)' => 'side-menu-opener-hamburger-dark', + 'Hamburger 2' => 'side-menu-opener-hamburger-2', + 'Hamburger 2 (dark)' => 'side-menu-opener-hamburger-2-dark', + ]; + ?> +
+
+ t('Icon')); ?> +
+
+ +
+
+
+ +

+ t('Dark mode colors')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +

+ t('This parameters are used when Dark theme or Breeze Dark Theme are enabled.'); ?> +

+ +
+
+
+ t('Background color')); ?> +
+
+ + + +
+ +
+ + t('Transparent')); ?> + + + + + + t('Opaque')); ?> + +
+
+
+
+ +
+
+
+ t('Background color of current app')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Text color')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Loader')); ?> +
+
+ + +
+
+
+
+ +
+
+
+ t('Icon')); ?> +
+
+
+ + t('Same color')); ?> + + + + + + t('Opposite color')); ?> + +
+ +
+ + t('Transparent')); ?> + + + + + + t('Opaque')); ?> + +
+
+
+
+ +
+ 'side-menu-opener', + 'Default (dark)' => 'side-menu-opener-dark', + 'Hamburger' => 'side-menu-opener-hamburger', + 'Hamburger (dark)' => 'side-menu-opener-hamburger-dark', + 'Hamburger 2' => 'side-menu-opener-hamburger-2', + 'Hamburger 2 (dark)' => 'side-menu-opener-hamburger-2-dark', + ]; + ?> +
+
+ t('Icon')); ?> +
+
+ +
+
+
+
+ +
+

+ t('Opener')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +
+
+ 'before', + 'After the logo' => 'after', + ]; + ?> +
+ t('Position')); ?> +
+
+ +
+
+ +
+
+ t('Show only the opener (hidden logo)')); ?> +
+
+ +
+
+ +
+
+ t('Do not display the side menu and the opener if there is no application (eg: public pages).')); ?> +
+
+ +
+
+ +
+
+ t('Open the menu when the mouse is hover the opener (automatically disabled on touch screens)')); ?> + +
+ t('This is the automatic behavior when the menu is always displayed.')); ?> +
+
+ +
+
+
+
+ +
+
+
+
+ t('Display the logo')); ?> + +
+ t($labelDefault)); ?> +
+
+
+ +
+
+ +
+
+ t('Use the avatar instead of the logo')); ?> + +
+ t($labelDefault)); ?> +
+
+
+ +
+
+ +
+
+ t('The logo is a link to the default app')); ?> + +
+ t($labelDefault)); ?> +
+
+
+ +
+
+ +
+
+ t('Apps that should not be displayed in the menu')); ?> + +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+
+
+ + 🖱️ t($labelShowHideApps)); ?> + + + +
+
+ +
+
+ t('Show the link to settings')); ?> +
+
+ +
+
+ +
+
+ t('Icons and texts')); ?> +
+
+ + + +
+
+ +
+
+ t('Open apps in new tab')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + + +
+
+ +
+
+ t('Loader enabled')); ?> +
+
+ +
+
+
+
+ +
+

+ t('Top menu')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +
+
+
+ t('Applications kept in the top menu')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + + +
+
+ +
+
+ t('Applications kept in the top menu but also shown in side menu')); ?> +
+ t('These applications must be selected in the previous option.')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + + +
+
+
+
+ t('Hide labels on mouse over')); ?> +
+ '2'] + ); + ?> +
+ +
+
+
+
+ +
+

+ t('Applications')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +
+
+
+ t('Customize sorting')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + +
+ + + + ' name="apps-order" class="side-menu-setting" id="side-menu-apps-order"> +
+
+
+
+ + +
+

+ t('Categories')); ?> +

+ +
+ t($labelWithCategories)); ?> + t($labelBigMenu)); ?> +
+ +
+
+ 'default', + 'Customed' => 'custom', + ]; + ?> +
+ t('Order by')); ?> +
+
+ +
+
+ +
+
+ t('Custom categories')); ?> +
+
+ + +
+
+
+
+ +
+
+ t('Customize application categories')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + + + + +
+
+ +
+
+ t('Customize sorting')); ?> +
+
+ + 🖱️ t('Show and hide the list of categories')); ?> + + + + + ' name="categories-order" class="side-menu-setting"> +
+
+
+
+ +
+

+ t('Tips')); ?> +

+ +
+ t($labelDefault)); ?> + t($labelWithCategories)); ?> + t($labelBigMenu)); ?> + t($labelAlwaysDisplayed)); ?> +
+ +

+ t('Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.'); ?> +

+
+ +
+
+
+
+ t('The menu is enabled by default for users')); ?> +
+ t('Except when the configuration is forced.')); ?> +
+
+ +
+
+ +
+
+ t('Force this configuration to users')); ?> +
+
+ +
+
+
+ + +
+ +
+ + + + + + + + + + +
+ +
+ + t('You like this app and you want to support me?')); ?> + + + + + +
+
+
diff --git a/templates/settings/personal-form.php b/templates/settings/personal-form.php index e2ff8e4..e49f8a7 100644 --- a/templates/settings/personal-form.php +++ b/templates/settings/personal-form.php @@ -16,11 +16,250 @@ * along with this program. If not, see . */ -use OCP\IURLGenerator; -use OCP\IConfig; -use OCA\SideMenu\AppInfo\Application; +vendor_script('side_menu', 'html5sortable.min'); +script('side_menu', 'admin'); +style('side_menu', 'admin'); -script('side_menu', 'side_menu-user'); +$choicesYesNo = [ + 'No' => '0', + 'Yes' => '1', +]; + + +$labelShowHideApps = 'Show and hide the list of applications'; +$labelReset = 'Reset to default'; ?> +
+ +
+

+ t('Menu')); ?> +

-
+

+ t('You do not have permission to change the settings.'); ?> +

+
+ +
+

+ t('Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.'); ?> +

+ +
+
+
+ t('Enable the custom menu')); ?> +
+
+ +
+
+
+ +
+
+
+ t('Open apps in new tab')); ?> +
+
+ '1', + 'Use my selection' => '2', + ]; ?> + + + +

+ + 🖱️ t($labelShowHideApps)); ?> + +

+ + +
+
+
+
+ +
+

+ t('Top menu')); ?> +

+ +
+
+
+ t('Applications kept in the top menu')); ?> +

+ + t('If there is no selection then the global configuration is applied.')); ?> + +

+
+
+

+ + 🖱️ t($labelShowHideApps)); ?> + +

+ + +
+
+
+ +
+
+
+ t('Applications kept in the top menu but also shown in side menu')); ?> +

+ + t('These applications must be selected in the previous option.')); ?>
+ t('If there is no selection then the global configuration is applied.')); ?> +
+

+
+
+

+ + 🖱️ t($labelShowHideApps)); ?> + +

+ + +
+
+
+
+
+

+ t('Applications')); ?> +

+ +
+
+
+ t('Customize sorting')); ?> +
+
+ + 🖱️ t($labelShowHideApps)); ?> + + +
+ + + + ' name="apps-order" class="side-menu-setting" id="side-menu-apps-order" data-personal> +
+
+
+
+ + +
+ + + + + +
+ + +
+ + t('You like this app and you want to support me?')); ?> + + + + + +
+
+
diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 0c16d61..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,97 +0,0 @@ -const path = require('path') -const webpack = require('webpack') -const { VueLoaderPlugin } = require('vue-loader') - -const rules = require('./webpack.rules.js') -const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') -const TerserPlugin = require('terser-webpack-plugin') - -const appName = 'side_menu' -const buildMode = process.env.NODE_ENV -const isDev = buildMode === 'development' - -module.exports = { - target: 'web', - mode: buildMode, - devtool: false, - entry: { - menu: path.resolve(path.join('src', 'menu.js')), - admin: path.resolve(path.join('src', 'admin.js')), - user: path.resolve(path.join('src', 'user.js')), - }, - output: { - path: path.resolve('./js'), - publicPath: path.join('/apps/', appName, '/js/'), - - // Output file names - filename: `${appName}-[name].js?v=[contenthash]`, - chunkFilename: `${appName}-[name].js?v=[contenthash]`, - - // Clean output before each build - clean: true, - }, - - optimization: { - chunkIds: 'named', - splitChunks: { - automaticNameDelimiter: '-', - minSize: 10000, - maxSize: 250000, - }, - minimize: !isDev, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - } - }, - extractComments: true, - }), - ], - }, - - module: { - rules: Object.values(rules), - }, - - plugins: [ - new VueLoaderPlugin(), - - // Make sure we auto-inject node polyfills on demand - // https://webpack.js.org/blog/2020-10-10-webpack-5-release/#automatic-nodejs-polyfills-removed - new NodePolyfillPlugin({ - // Console is available in the web-browser - excludeAliases: ['console'], - }), - - // @nextcloud/moment since v1.3.0 uses `moment/min/moment-with-locales.js` - // Which works only in Node.js and is not compatible with Webpack bundling - // It has an unused function `localLocale` that requires locales by invalid relative path `./locale` - // Though it is not used, Webpack tries to resolve it with `require.context` and fails - new webpack.IgnorePlugin({ - resourceRegExp: /^\.[/\\]locale$/, - contextRegExp: /moment[/\\]min$/, - }), - - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'], - }), - - new webpack.DefinePlugin({ - appName: JSON.stringify(appName), - }), - ], - - resolve: { - extensions: ['.*', '.mjs', '.js', '.vue'], - symlinks: false, - // Ensure npm does not duplicate vue dependency, and that npm link works for vue 3 - // See https://github.com/vuejs/core/issues/1503 - // See https://github.com/nextcloud/nextcloud-vue/issues/3281 - alias: { - 'vue$': path.resolve('./node_modules/vue') - }, - }, -} - diff --git a/webpack.js b/webpack.js new file mode 100644 index 0000000..6e3eac8 --- /dev/null +++ b/webpack.js @@ -0,0 +1,54 @@ +const path = require('path') +const { VueLoaderPlugin } = require('vue-loader') +const StyleLintPlugin = require('stylelint-webpack-plugin') + +module.exports = { + devtool: "source-map", + entry: { + 'admin': path.join(__dirname, 'src', 'admin.js'), + 'sideMenu': path.join(__dirname, 'src', 'SideMenu.js'), + }, + output: { + path: path.resolve(__dirname, './js'), + publicPath: '/js', + filename: '[name].js?v=[hash]', + chunkFilename: 'chunks/[name]-[hash].js', + }, + module: { + rules: [ + { + test: /\.css$/, + use: ['vue-style-loader', 'css-loader'], + }, + { + test: /\.scss$/, + use: ['vue-style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.vue$/, + loader: 'vue-loader', + }, + { + test: /\.js$/, + loader: 'babel-loader', + exclude: /node_modules/, + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'url-loader', + options: { + name: '[name].[ext]?[hash]', + limit: 8192, + }, + }, + ], + }, + plugins: [ + new VueLoaderPlugin(), + new StyleLintPlugin(), + ], + resolve: { + extensions: ['*', '.js', '.vue'], + symlinks: false, + }, +} diff --git a/webpack.rules.js b/webpack.rules.js deleted file mode 100644 index 4314a8f..0000000 --- a/webpack.rules.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - scss: { - test: /\.scss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - }, - css: { - test: /\.css$/, - use: ['style-loader', 'css-loader'], - }, - vue: { - test: /\.vue$/, - loader: 'vue-loader', - }, - js: { - test: /\.js$/, - loader: 'babel-loader', - exclude: /node_modules/, - }, - assets: { - test: /\.(png|jpe?g|gif|svg|woff2?|eot|ttf)$/, - type: 'asset/inline', - }, -}