From a2a427e1661ae25f7a2ca61602bfc9494d665b37 Mon Sep 17 00:00:00 2001 From: Kevin Hoang Date: Wed, 20 Dec 2023 14:54:09 -0600 Subject: [PATCH] Changes for 1.4.0 --- CHANGELOG.md | 26 + package-lock.json | 2462 ++++++++++++++++- package.json | 1 + release/app/package-lock.json | 4 +- release/app/package.json | 2 +- src/main/main.ts | 11 +- src/main/menu.ts | 24 + src/main/preload.ts | 3 +- src/renderer/App.tsx | 20 +- .../components/app/etc/HistoryButton.tsx | 13 + .../components/app/etc/ResetMenuApp.tsx | 65 + src/renderer/components/app/main/MainTab.tsx | 1 + .../components/app/main/MediaCard.tsx | 14 + .../components/app/search/FilterSelect.tsx | 99 + src/renderer/components/app/search/Search.tsx | 5 +- .../app/styled/StyledComponents.tsx | 2 +- .../components/mediaAdvanced/AdvancedMain.tsx | 2 +- .../mediaAdvanced/AdvancedMainNOL.tsx | 2 +- .../entryInput/onList/RepeatCheckBox.tsx | 0 .../information/AdvancedInformation.tsx | 10 +- .../AdvancedInformationDefault.tsx | 84 +- src/renderer/components/settings/Settings.tsx | 52 +- .../components/settings/SettingsMain.tsx | 18 + .../settings/about/AboutSection.tsx | 88 + .../settings/app/SelectSeasonChange.tsx | 48 + src/renderer/context/SeasonInputContext.tsx | 13 +- .../functions/MainMediaListFunctions.tsx | 52 + src/renderer/functions/SearchFunctions.tsx | 11 + src/renderer/functions/SeasonsFunctions.tsx | 11 + src/renderer/functions/edit/formatInfo.ts | 2 +- .../functions/view/CountFunctions.tsx | 56 +- .../functions/view/DataTableFunctions.tsx | 18 +- .../functions/view/FilterFunctions.tsx | 269 +- .../functions/view/MainViewFunctions.tsx | 9 +- .../functions/view/SearchViewFunctions.tsx | 6 +- .../functions/view/SeasonViewFunctions.tsx | 6 +- src/renderer/store.ts | 12 + 37 files changed, 3229 insertions(+), 292 deletions(-) create mode 100644 src/renderer/components/app/etc/HistoryButton.tsx create mode 100644 src/renderer/components/app/etc/ResetMenuApp.tsx create mode 100644 src/renderer/components/app/search/FilterSelect.tsx create mode 100644 src/renderer/components/mediaAdvanced/entryInput/onList/RepeatCheckBox.tsx create mode 100644 src/renderer/components/settings/about/AboutSection.tsx create mode 100644 src/renderer/components/settings/app/SelectSeasonChange.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index f5edd8b..70531c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Changes +## 1.4.0 + +### Main Changes + +- Advanced filtering is now available. +- Rewatch/reread feature now implemented when updating through grid media cards that are not in completed section. + (adds to total rereads/rewatches if the media has a complete date or a total repeat count > 0). +- Preview season early feature is now in the settings menu, default setting is now early season change. +- About section with version number of the app and the changelog between versions. +- New infomration for advanced media window: episode duration(anime) and end date(manga/light novels). + +### Toolbar changes + +- Added changelog link for toolbar under help section. +- Added bug/issue link for toolbar under help section. +- Added Reset Settings option for toolbar under file section. +- Added issues option to allow for users to quickly report issues. + +### Other changes + +- Changed color elevation of context menu for better visibility. +- Bolded information labels. +- Reordered the information properties in advanced media window. +- "Not Yet Released" text changed to "Not yet released" +- Changed 'Average Score' to 'Avg. Score'. + ## 1.3.2 - Just added type filter. An updated list of what you can filter/sort by can be found [here](https://github.com/ReStartQ/anicour/blob/main/help/FilterAndSortList.md). diff --git a/package-lock.json b/package-lock.json index d2f2515..2a48f06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@mui/x-date-pickers": "^6.17.0", "@tanstack/react-query": "^4.19.0", "@uidotdev/usehooks": "^2.2.0", + "@uiw/react-md-editor": "^4.0.1", "axios": "^1.2.0", "cheerio": "^1.0.0-rc.12", "dayjs": "^1.11.7", @@ -4741,7 +4742,6 @@ "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dev": true, "dependencies": { "@types/ms": "*" } @@ -4769,8 +4769,15 @@ "node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", + "dependencies": { + "@types/estree": "*" + } }, "node_modules/@types/express": { "version": "4.17.17", @@ -4813,6 +4820,14 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -4937,6 +4952,14 @@ "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", "dev": true }, + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mime": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", @@ -4946,8 +4969,7 @@ "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { "version": "20.6.2", @@ -4971,6 +4993,11 @@ "xmlbuilder": ">=11.0.1" } }, + "node_modules/@types/prismjs": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", + "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==" + }, "node_modules/@types/prop-types": { "version": "15.7.10", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz", @@ -5118,6 +5145,11 @@ "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", "dev": true }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/@types/uuid": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", @@ -5650,6 +5682,60 @@ "react-dom": ">=18.0.0" } }, + "node_modules/@uiw/copy-to-clipboard": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@uiw/copy-to-clipboard/-/copy-to-clipboard-1.0.16.tgz", + "integrity": "sha512-IXR+N363nLTR3ilklmM+B0nk774jVE/muOrBYt4Rdww/Pf3uP9XHyv2x6YZrbDh29F7w9BkzQyB8QF6WDShmJA==" + }, + "node_modules/@uiw/react-markdown-preview": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@uiw/react-markdown-preview/-/react-markdown-preview-5.0.4.tgz", + "integrity": "sha512-iADUBojo6fXWjF3uBPR6/EhecnSvpmjCOmVP97Bfw7A4yIlPhvIQ0BE87ABSjKpKvZpjG0EOYncECD51IE8bpA==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@uiw/copy-to-clipboard": "~1.0.12", + "react-markdown": "~9.0.1", + "rehype-attr": "~3.0.1", + "rehype-autolink-headings": "~7.1.0", + "rehype-ignore": "^2.0.0", + "rehype-prism-plus": "1.6.3", + "rehype-raw": "^7.0.0", + "rehype-rewrite": "~4.0.0", + "rehype-slug": "~6.0.0", + "remark-gfm": "~4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@uiw/react-md-editor": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@uiw/react-md-editor/-/react-md-editor-4.0.1.tgz", + "integrity": "sha512-+UTBQAfawQNU3JwOB0VMAYS+O9Po5xJTQCYoMVcn+O5BdbFW8mYBFjxvHwOF7unWCAOM6GwpTBpIOWypg+sD6w==", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@uiw/react-markdown-preview": "^5.0.2", + "rehype": "~13.0.0", + "rehype-prism-plus": "~1.6.1" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -6692,6 +6778,15 @@ "@babel/core": "^7.0.0" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "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", @@ -6724,6 +6819,15 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -7334,6 +7438,15 @@ } ] }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "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", @@ -7359,6 +7472,42 @@ "node": ">=10" } }, + "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==", + "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==", + "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==", + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -7774,6 +7923,15 @@ "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -8320,6 +8478,21 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-selector-parser": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.4.tgz", + "integrity": "sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, "node_modules/css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -8594,6 +8767,18 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -8926,6 +9111,14 @@ "node": ">= 0.6" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -8974,6 +9167,18 @@ "detect-port": "bin/detect-port.js" } }, + "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==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -9014,6 +9219,18 @@ "node": ">=8" } }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dmg-builder": { "version": "24.6.4", "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", @@ -10719,6 +10936,15 @@ "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==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -10907,6 +11133,11 @@ "node": ">=4" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -11481,6 +11712,11 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -11741,6 +11977,261 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", + "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", + "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "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": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^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-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz", + "integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz", + "integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==", + "dependencies": { + "inline-style-parser": "0.2.2" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dependencies": { + "@types/hast": "^3.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==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -12071,6 +12562,24 @@ "entities": "^4.4.0" } }, + "node_modules/html-url-attributes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz", + "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/html-webpack-plugin": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", @@ -12515,6 +13024,28 @@ "node": ">= 10" } }, + "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==", + "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==", + "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.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -12605,8 +13136,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-callable": { - "version": "1.2.7", + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "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==", "dev": true, @@ -12655,6 +13208,15 @@ "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==", + "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", @@ -12735,6 +13297,15 @@ "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -15200,6 +15771,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -15336,6 +15916,15 @@ "tmpl": "1.0.5" } }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -15376,6 +15965,271 @@ "react-dom": ">=18.0" } }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "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-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.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-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.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-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@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-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "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.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "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-remove-position": "^5.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==", + "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-phrasing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", + "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", + "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.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "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-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==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -15444,96 +16298,631 @@ "node": ">= 0.6" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "@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.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=8.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=4.0.0" - } - }, - "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==", - "engines": { - "node": ">= 0.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", "dependencies": { - "mime-db": "1.52.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-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", - "dev": true, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "url": "https://opencollective.com/unified" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "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.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", @@ -15977,6 +17366,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -16489,6 +17883,30 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^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.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -16506,6 +17924,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -17504,6 +18927,15 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -17922,6 +19354,31 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, "node_modules/react-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", @@ -18166,94 +19623,512 @@ "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/refractor": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-4.8.1.tgz", + "integrity": "sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/prismjs": "^1.0.0", + "hastscript": "^7.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/@types/hast": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", + "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/refractor/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/refractor/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/refractor/node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/rehype": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", + "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-attr": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/rehype-attr/-/rehype-attr-3.0.3.tgz", + "integrity": "sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==", + "dependencies": { + "unified": "~11.0.0", + "unist-util-visit": "~5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/rehype-autolink-headings": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", + "integrity": "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-ignore": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rehype-ignore/-/rehype-ignore-2.0.2.tgz", + "integrity": "sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==", + "dependencies": { + "hast-util-select": "^6.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", + "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-1.6.3.tgz", + "integrity": "sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==", + "dependencies": { + "hast-util-to-string": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "refractor": "^4.8.0", + "rehype-parse": "^8.0.2", + "unist-util-filter": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/rehype-prism-plus/node_modules/@types/hast": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", + "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/rehype-prism-plus/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/rehype-prism-plus/node_modules/hast-util-from-parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", + "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/hast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz", + "integrity": "sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rehype-prism-plus/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/rehype-prism-plus/node_modules/rehype-parse": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", + "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^6.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, + "node_modules/rehype-prism-plus/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dependencies": { - "regenerate": "^1.4.2" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "node_modules/rehype-prism-plus/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, + "node_modules/rehype-prism-plus/node_modules/vfile-location": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", + "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", "dependencies": { - "@babel/runtime": "^7.8.4" + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, + "node_modules/rehype-prism-plus/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regexpu-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", - "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", - "dev": true, + "node_modules/rehype-rewrite": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rehype-rewrite/-/rehype-rewrite-4.0.2.tgz", + "integrity": "sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "hast-util-select": "^6.0.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", "dependencies": { - "jsesc": "~0.5.0" + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" }, - "bin": { - "regjsparser": "bin/parser" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "node_modules/rehype-stringify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/relateurl": { @@ -18265,6 +20140,68 @@ "node": ">= 0.10" } }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.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==", + "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.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz", + "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==", + "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/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remove-accents": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", @@ -19305,6 +21242,15 @@ "node": ">=0.10.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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/spawn-command": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", @@ -19551,6 +21497,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "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": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -20206,6 +22165,24 @@ "tree-kill": "cli.js" } }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -20608,6 +22585,35 @@ "node": ">=4" } }, + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "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/unified/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-filename": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", @@ -20632,6 +22638,122 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/unist-util-filter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-filter/-/unist-util-filter-4.0.1.tgz", + "integrity": "sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "node_modules/unist-util-filter/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/unist-util-filter/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-filter/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.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==", + "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==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.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==", + "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==", + "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==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -20882,6 +23004,46 @@ "node": ">=0.6.0" } }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.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==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -20949,6 +23111,15 @@ "defaults": "^1.0.3" } }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -21751,6 +23922,15 @@ "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 59a2294..6ef893a 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "@mui/x-date-pickers": "^6.17.0", "@tanstack/react-query": "^4.19.0", "@uidotdev/usehooks": "^2.2.0", + "@uiw/react-md-editor": "^4.0.1", "axios": "^1.2.0", "cheerio": "^1.0.0-rc.12", "dayjs": "^1.11.7", diff --git a/release/app/package-lock.json b/release/app/package-lock.json index e7ea5b8..08e6b68 100644 --- a/release/app/package-lock.json +++ b/release/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "anicour", - "version": "1.3.2", + "version": "1.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "anicour", - "version": "1.3.2", + "version": "1.4.0", "hasInstallScript": true, "license": "GPL-3.0" } diff --git a/release/app/package.json b/release/app/package.json index 34cffca..a688bd1 100644 --- a/release/app/package.json +++ b/release/app/package.json @@ -1,6 +1,6 @@ { "name": "anicour", - "version": "1.3.2", + "version": "1.4.0", "description": "Anime, Manga, and Light Novel Tracker Desktop Application for Windows. A fast and interactive way for AniList users to track and manage their anime/manga lists. ", "license": "GPL-3.0", "author": { diff --git a/src/main/main.ts b/src/main/main.ts index 9516ac1..3b94c04 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -85,6 +85,10 @@ const schema: any = { type: 'string', default: 'CURRENT', }, + seasonChange: { + type: 'string', + default: 'Early', + }, }; const store = new Store({ schema }); @@ -474,7 +478,7 @@ const createNewMediaWindow = async (arg: any) => { mediaWindow = new BrowserWindow({ show: false, width: 860, - height: 650, + height: 666, icon: getAssetPath('lightweight-48.png'), webPreferences: { nodeIntegration: true, // this is for future database use = true @@ -680,3 +684,8 @@ app }); }) .catch(console.log); + +ipcMain.on('appVersion', async (event, arg: any) => { + console.log('appVersion'); + settingsWindow?.webContents.send('appVersion', [app.getVersion()]); +}); diff --git a/src/main/menu.ts b/src/main/menu.ts index 63a6a95..2a30016 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -197,6 +197,14 @@ export default class MenuBuilder { { label: '&File', submenu: [ + { + label: 'Reset Settings', + click: () => { + this.mainWindow.webContents.send('updateMainFromSettings', [ + 'resetSettings', + ]); + }, + }, { label: '&Close', accelerator: 'Ctrl+W', @@ -251,6 +259,14 @@ export default class MenuBuilder { { label: 'Help', submenu: [ + { + label: 'Changelog', + click() { + shell.openExternal( + 'https://github.com/ReStartQ/anicour/blob/main/CHANGELOG.md', + ); + }, + }, { label: 'Setup', click() { @@ -259,6 +275,14 @@ export default class MenuBuilder { ); }, }, + { + label: 'Issues', + click() { + shell.openExternal( + 'https://github.com/ReStartQ/anicour/issues/new', + ); + }, + }, { label: 'GitHub', click() { diff --git a/src/main/preload.ts b/src/main/preload.ts index 48d6452..9f6d93d 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -14,7 +14,8 @@ export type Channels = | 'updateMainFromAdvanced' | 'updateAdvancedFromMain' | 'openExternalLink' - | 'adultFlag'; + | 'adultFlag' + | 'appVersion'; const electronHandler = { ipcRenderer: { diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index a957f86..5a0ad8a 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -88,6 +88,7 @@ import { import { AdvancedMoreInfoContextProvider } from './context/advanced/AdvancedMoreInfoContext'; import { AdvancedThemeSongsContextProvider } from './context/advanced/AdvancedThemeSongContext'; import { + appResetDialogOpenAtom, myStore, notificationAltOpenAtom, notificationMediaNamesAtom, @@ -99,6 +100,8 @@ import NewsPage from './components/app/news/NewsPage'; import NewsTabANN from './components/app/news/NewsTabANN'; import { getTitle } from './functions/view/TitlePreferenceFunctions'; import { getSnackbarType } from './functions/edit/componentTypes'; +import FilterSelect from './components/app/search/FilterSelect'; +import ResetMenuApp from './components/app/etc/ResetMenuApp'; declare module '@mui/joy/styles' { interface PaletteWarningOverrides { @@ -253,6 +256,7 @@ const Hello = () => { const [notifcationMediaNames, setNotificationMediaNames] = useAtom( notificationMediaNamesAtom, ); + const [openResetDialog, setOpenResetDialog] = useAtom(appResetDialogOpenAtom); const handleClose = (event?: SyntheticEvent | Event, reason?: string) => { if (reason === 'clickaway') { @@ -341,6 +345,13 @@ const Hello = () => { case 'addStatus': setDefaultAddStatus(arg[1]); break; + case 'resetSettings': + console.log('settings reset'); + // setOpenResetDialog(true); + window.electron.store.clear(); + setAniListUsername(''); + setAniListToken(''); + break; default: console.log('test'); } @@ -355,6 +366,7 @@ const Hello = () => { setAniListToken, setAniListUsername, setDefaultAddStatus, + setOpenResetDialog, ]); /* @@ -452,6 +464,9 @@ const Hello = () => { + + + { > - + diff --git a/src/renderer/components/app/etc/HistoryButton.tsx b/src/renderer/components/app/etc/HistoryButton.tsx new file mode 100644 index 0000000..6f10144 --- /dev/null +++ b/src/renderer/components/app/etc/HistoryButton.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import HistoryIcon from '@mui/icons-material/History'; +import { Button, IconButton } from '@mui/material'; + +const HistoryButton = () => { + return ( + + + + ); +}; + +export default HistoryButton; diff --git a/src/renderer/components/app/etc/ResetMenuApp.tsx b/src/renderer/components/app/etc/ResetMenuApp.tsx new file mode 100644 index 0000000..fff9a45 --- /dev/null +++ b/src/renderer/components/app/etc/ResetMenuApp.tsx @@ -0,0 +1,65 @@ +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, +} from '@mui/material'; +import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew'; +import React from 'react'; +import { useAtom } from 'jotai'; +import { appResetDialogOpenAtom } from 'renderer/store'; + +const ResetMenuApp = () => { + const [open, setOpen] = useAtom(appResetDialogOpenAtom); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = (value: boolean) => { + setOpen(false); + if (value) { + window.electron.store.clear(); + } + // update in main + }; + return ( +
+ + + Reset app data to default? + + + + This will reset all settings to default. +
+ Your account settings data will be reset and you will have to + reconnect your account to the app. +
+
+ + + + +
+
+ ); +}; + +export default ResetMenuApp; diff --git a/src/renderer/components/app/main/MainTab.tsx b/src/renderer/components/app/main/MainTab.tsx index 2282bf6..cf51f48 100644 --- a/src/renderer/components/app/main/MainTab.tsx +++ b/src/renderer/components/app/main/MainTab.tsx @@ -27,6 +27,7 @@ const MainTab = memo(({ props }: any) => { const myTitle: any = useTitle(); const myToken: any = useAniListToken(); const myUsername: any = useAniListUsername(); + const { isLoading, isError, error, data, refetch }: any = useMainMediaList( myUsername.AniListUsername, myToken.AniListToken, diff --git a/src/renderer/components/app/main/MediaCard.tsx b/src/renderer/components/app/main/MediaCard.tsx index 017752b..84a5257 100644 --- a/src/renderer/components/app/main/MediaCard.tsx +++ b/src/renderer/components/app/main/MediaCard.tsx @@ -44,6 +44,7 @@ import { notificationTypeAtom, } from 'renderer/store'; import { useAdvancedMedia } from 'renderer/context/advanced/AdvancedMediaContext'; +import { useCategory } from 'renderer/context/CategoryContext'; import ContextMenu from '../etc/ContextMenu'; import ProgressStepper from '../etc/ProgressStepper'; import ProgressVolumesStepper from '../etc/ProgressVolumesStepper'; @@ -55,6 +56,7 @@ export default function MediaCard({ props }: any) { const myAdvancedMedia: any = useAdvancedMedia(); const myUserName: any = useAniListUsername(); const myToken: any = useAniListToken(); + const myCategory: any = useCategory(); const [notificationType, setNotificationType] = useAtom(notificationTypeAtom); const [notifcationOpen, setNotificationOpen] = useAtom(notificationOpenAtom); @@ -158,6 +160,12 @@ export default function MediaCard({ props }: any) { month: myAdvancedInput.completedAt.month, year: myAdvancedInput.completedAt.year, }, + repeat: + (myAdvancedInput.completedAt.year !== null || + myAdvancedInput.repeat !== 0) && + myCategory.category !== 1 + ? myAdvancedInput.repeat + 1 + : myAdvancedInput.repeat, }, // Local card reducer state advancedMedia: props, }; @@ -189,6 +197,12 @@ export default function MediaCard({ props }: any) { month: myAdvancedInput.completedAt.month, year: myAdvancedInput.completedAt.year, }, + repeat: + (myAdvancedInput.completedAt.year !== null || + myAdvancedInput.repeat !== 0) && + myCategory.category !== 1 + ? myAdvancedInput.repeat + 1 + : myAdvancedInput.repeat, }, // Local card reducer state advancedMedia: props, }; diff --git a/src/renderer/components/app/search/FilterSelect.tsx b/src/renderer/components/app/search/FilterSelect.tsx new file mode 100644 index 0000000..27ded4c --- /dev/null +++ b/src/renderer/components/app/search/FilterSelect.tsx @@ -0,0 +1,99 @@ +import * as React from 'react'; +import IconButton from '@mui/material/IconButton'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import MoreVertIcon from '@mui/icons-material/MoreVert'; +import FilterAltIcon from '@mui/icons-material/FilterAlt'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import { useAtom } from 'jotai'; +import { filterTypeAtom } from 'renderer/store'; +import { Box, Tooltip } from '@mui/material'; +import { useSidebarButton } from 'renderer/context/SidebarContext'; +import { StyledMenu } from '../styled/StyledComponents'; + +const options = [ + 'All', + 'Title', + 'Type', + 'Status', + 'Source', + 'Season/Year', + 'Studio/Producer', + 'Genres', + 'Tags', +]; + +const ITEM_HEIGHT = 100; + +export default function FilterSelect() { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const [filterType, setFilterType] = useAtom(filterTypeAtom); + const mySideBar: any = useSidebarButton(); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = (event: any) => { + setAnchorEl(null); + const { myValue } = event.currentTarget.dataset; + console.log(myValue); + if (myValue !== undefined && myValue !== null) { + setFilterType(myValue); + } + console.log(filterType); + }; + + return ( + + + + + + + + {options.map((option) => ( + + {option} + + ))} + + + ); +} diff --git a/src/renderer/components/app/search/Search.tsx b/src/renderer/components/app/search/Search.tsx index 6f5aef1..319053a 100644 --- a/src/renderer/components/app/search/Search.tsx +++ b/src/renderer/components/app/search/Search.tsx @@ -19,7 +19,8 @@ import { getFilteredTerm } from 'renderer/functions/view/FilterFunctions'; import * as _ from 'lodash'; import { debounce } from '@mui/material/utils'; import { useAtom } from 'jotai'; -import { searchPrevAtom } from 'renderer/store'; +import { filterTypeAtom, searchPrevAtom } from 'renderer/store'; +import FilterSelect from './FilterSelect'; const Search = () => { const myFilter: any = useFilter(); @@ -28,6 +29,7 @@ const Search = () => { const mySearchTerm: any = useSearchTerm(); const [filter, setFilter] = useState(''); const [searchPrev, setSearchPrev] = useAtom(searchPrevAtom); + const [filterType, setFilterType] = useAtom(filterTypeAtom); const debounceFunc = debounce((e) => { myFilter.setFilter(e.target.value); @@ -64,6 +66,7 @@ const Search = () => { onClick={() => { setFilter(''); myFilter.setFilter(''); + setFilterType('All'); }} > diff --git a/src/renderer/components/app/styled/StyledComponents.tsx b/src/renderer/components/app/styled/StyledComponents.tsx index b617edc..a292271 100644 --- a/src/renderer/components/app/styled/StyledComponents.tsx +++ b/src/renderer/components/app/styled/StyledComponents.tsx @@ -2,7 +2,7 @@ import { Menu, alpha, styled } from '@mui/material'; export const StyledMenu = styled((props: any) => ( { gridRow: '5/6', border: '1px solid SteelBlue', height: '100%', - pt: '12px', + pt: '14px', px: '14px', pb: '14px', display: 'flex', @@ -44,7 +44,7 @@ const AdvancedInformation = () => { gridRow: '5/6', border: '1px solid SteelBlue', height: '100%', - pt: '12px', + pt: '14px', px: '14px', pb: '14px', display: 'flex', @@ -64,7 +64,7 @@ const AdvancedInformation = () => { gridRow: '5/6', border: '1px solid SteelBlue', height: '100%', - pt: '12px', + pt: '14px', px: '14px', pb: '14px', display: 'flex', @@ -84,7 +84,7 @@ const AdvancedInformation = () => { gridRow: '5/6', border: '1px solid SteelBlue', height: '100%', - pt: '12px', + pt: '14px', px: '14px', pb: '14px', display: 'flex', @@ -103,7 +103,7 @@ const AdvancedInformation = () => { gridRow: '5/6', border: '1px solid SteelBlue', height: '100%', - pt: '12px', + pt: '14px', px: '14px', pb: '14px', display: 'flex', diff --git a/src/renderer/components/mediaAdvanced/information/AdvancedInformationDefault.tsx b/src/renderer/components/mediaAdvanced/information/AdvancedInformationDefault.tsx index 91af862..b3e7bc3 100644 --- a/src/renderer/components/mediaAdvanced/information/AdvancedInformationDefault.tsx +++ b/src/renderer/components/mediaAdvanced/information/AdvancedInformationDefault.tsx @@ -57,11 +57,15 @@ const AdvancedInformationDefault = () => { return ( - - Type:{' '} - {myAdvancedMedia.advancedMedia.format !== null - ? formatType(myAdvancedMedia.advancedMedia.format) - : '?'} + + + Type:{' '} + + + {myAdvancedMedia.advancedMedia.format !== null + ? formatType(myAdvancedMedia.advancedMedia.format) + : '?'} + {myAdvancedMedia.advancedMedia.type === 'ANIME' ? ( @@ -87,6 +91,18 @@ const AdvancedInformationDefault = () => { ) : null} + {myAdvancedMedia.advancedMedia.type === 'ANIME' ? ( + + + Duration:{' '} + + + {myAdvancedMedia.advancedMedia.duration !== null + ? `${myAdvancedMedia.advancedMedia.duration} mins / ep` + : '?'} + + + ) : null} {myAdvancedMedia.advancedMedia.type === 'MANGA' ? ( @@ -99,19 +115,23 @@ const AdvancedInformationDefault = () => { ) : null} - - Status:{' '} - - {myAdvancedMedia.advancedMedia.status !== null - ? formatStatus(myAdvancedMedia.advancedMedia.status) - : '?'} + + + Status:{' '} + + + + {myAdvancedMedia.advancedMedia.status !== null + ? formatStatus(myAdvancedMedia.advancedMedia.status) + : '?'} + @@ -123,11 +143,15 @@ const AdvancedInformationDefault = () => { : '?'} - - Average Score:{' '} - {myAdvancedMedia.advancedMedia.averageScore !== null - ? `${myAdvancedMedia.advancedMedia.averageScore}%` - : '?'} + + + Avg Score:{' '} + + + {myAdvancedMedia.advancedMedia.averageScore !== null + ? `${myAdvancedMedia.advancedMedia.averageScore}%` + : '?'} + {myAdvancedMedia.advancedMedia.type === 'ANIME' ? ( @@ -158,6 +182,20 @@ const AdvancedInformationDefault = () => { )} + {myAdvancedMedia.advancedMedia.type === 'MANGA' ? ( + + + Ended:{' '} + + + {formatReleaseDate( + myAdvancedMedia.advancedMedia.endDay, + myAdvancedMedia.advancedMedia.endMonth, + myAdvancedMedia.advancedMedia.endYear, + )} + + + ) : null} ; } if (view === 2) { + return ; + } + if (view === 3) { return ; } return <>; } -const getSettingTitle = (type: any) => { +const getSettingTitle = (type: any, appVersion: any) => { switch (type) { case 0: return 'Services'; case 1: return 'Application'; case 2: + return `About`; + case 3: return 'Reset'; default: - return 'Account'; + return 'Settings'; } }; export default function Settings() { const myTheme: any = useTheme(); const sidebarValue: any = useSidebarButton(); + const [appVersion, setAppVersion] = useAtom(appVersionAtom); + return ( @@ -78,7 +88,7 @@ export default function Settings() { > - {getSettingTitle(sidebarValue.sidebar)} + {getSettingTitle(sidebarValue.sidebar, appVersion)} @@ -97,23 +107,25 @@ export default function Settings() { - {['Services', 'Application', 'Reset'].map((text, index) => ( - - { - console.log('settings tab changed'); - sidebarValue.setSidebar(index); - }} - selected={sidebarValue.sidebar === index} - dense - > - - - - - - - ))} + {['Services', 'Application', 'About', 'Reset'].map( + (text, index) => ( + + { + console.log('settings tab changed'); + sidebarValue.setSidebar(index); + }} + selected={sidebarValue.sidebar === index} + dense + > + + + + + + + ), + )} diff --git a/src/renderer/components/settings/SettingsMain.tsx b/src/renderer/components/settings/SettingsMain.tsx index 7bd5524..dd03b96 100644 --- a/src/renderer/components/settings/SettingsMain.tsx +++ b/src/renderer/components/settings/SettingsMain.tsx @@ -22,6 +22,8 @@ import AdultLabel from './app/AdultLabel'; import SelectDefaultLink from './app/SelectDefaultLink'; import DefaultStatus from './app/DefaultStatus'; import SelectDefaultView from './app/SelectDefaultView'; +import AboutSection from './about/AboutSection'; +import SelectSeasonChange from './app/SelectSeasonChange'; function SettingsMainTab({ view }: any) { if (view === 0) { @@ -54,12 +56,28 @@ function SettingsMainTab({ view }: any) { > + ); } if (view === 2) { + return ( + + + + ); + } + if (view === 3) { return ( { + const [appVersion, setAppVersion] = useAtom(appVersionAtom); + const [markdown, setMarkdown] = useState(''); + + const handleLink = (siteUrl: any) => { + window.electron.ipcRenderer.sendMessage('openExternalLink', [siteUrl]); + }; + + const handleOnClick = (e: any) => { + console.log(e.target.href); + e.preventDefault(); + handleLink(e.target.href); + }; + + const getData = async () => { + const { data, status } = await axios + .get( + `https://raw.githubusercontent.com/ReStartQ/anicour/main/CHANGELOG.md`, + ) + .then((response) => { + return response; + }) + .catch((err) => { + console.log('Error: failed to get theme songs'); + return err; + }); + console.log(data); + console.log(typeof data); + console.log(status); + if (status === 200) { + setMarkdown(data); + } + }; + + useLayoutEffect(() => { + const removeEventListener = window.electron.ipcRenderer.on( + 'appVersion', + (arg: any) => { + console.log('app version'); + setAppVersion(arg[0]); + }, + ); + window.electron.ipcRenderer.sendMessage('appVersion', ['hi']); + getData(); + return () => { + removeEventListener(); + }; + }); + + return ( + + Current Version: {appVersion} +
+ { + if (node.type === 'element' && node.tagName === 'a') { + console.log(node); + node.properties = { + ...node.properties, + onClick: handleOnClick, + }; + } + }, + }} + /> +
+ + AniCour is developed and maintained by ReStartQ + +
+ ); +}; + +export default AboutSection; diff --git a/src/renderer/components/settings/app/SelectSeasonChange.tsx b/src/renderer/components/settings/app/SelectSeasonChange.tsx new file mode 100644 index 0000000..4ea643e --- /dev/null +++ b/src/renderer/components/settings/app/SelectSeasonChange.tsx @@ -0,0 +1,48 @@ +import { + Box, + FormControl, + InputLabel, + MenuItem, + NativeSelect, + Select, + SelectChangeEvent, +} from '@mui/material'; +import { useAtom } from 'jotai'; +import React from 'react'; +import { useAdvancedDefaultLink } from 'renderer/context/advanced/AdvancedDefaultLinkContext'; +import { seasonChangeAtom } from 'renderer/store'; + +function SelectSeasonChange() { + const [seasonChange, setSeasonChange] = useAtom(seasonChangeAtom); + + const handleChange = (event: any) => { + setSeasonChange(event.target.value as string); + window.electron.store.set('seasonChange', event.target.value); + window.electron.ipcRenderer.sendMessage('updateMainFromSettings', [ + 'seasonChange', + event.target.value, + ]); + }; + + return ( + + + + Default Season Change + + + + + + + + ); +} + +export default SelectSeasonChange; diff --git a/src/renderer/context/SeasonInputContext.tsx b/src/renderer/context/SeasonInputContext.tsx index 01dc037..cad8989 100644 --- a/src/renderer/context/SeasonInputContext.tsx +++ b/src/renderer/context/SeasonInputContext.tsx @@ -15,8 +15,19 @@ export const SeasonInputContextProvider = ({ children, }: SeasonInputButtonContextProviderProps) => { const date = new Date(); + const standardDate = new Date(); + const earlyDate = new Date(date.setMonth(date.getMonth() + 1)); // sets 1 month after - const [seasonInput, setSeasonInput] = useState(getMyDate(date)); + console.log(standardDate); + console.log(earlyDate); + + const [seasonInput, setSeasonInput] = useState( + getMyDate( + window.electron.store.get('seasonChange') === 'Early' + ? earlyDate + : standardDate, + ), + ); return ( diff --git a/src/renderer/functions/MainMediaListFunctions.tsx b/src/renderer/functions/MainMediaListFunctions.tsx index 12bfc86..f6d2168 100644 --- a/src/renderer/functions/MainMediaListFunctions.tsx +++ b/src/renderer/functions/MainMediaListFunctions.tsx @@ -60,6 +60,11 @@ export const useMainMediaList = (myUserName: string, myToken: string) => month day } + endDate{ + year + month + day + } description genres tags { @@ -230,6 +235,11 @@ export const useMainMediaList = (myUserName: string, myToken: string) => month day } + endDate{ + year + month + day + } description genres tags { @@ -339,6 +349,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: entry.media.startDate.year, startMonth: entry.media.startDate.month, startDay: entry.media.startDate.day, + endYear: entry.media.endDate.year, + endMonth: entry.media.endDate.month, + endDay: entry.media.endDate.day, description: entry.media.description, genres: entry.media.genres, tags: entry.media.tags, @@ -396,6 +409,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: entry.media.startDate.year, startMonth: entry.media.startDate.month, startDay: entry.media.startDate.day, + endYear: entry.media.endDate.year, + endMonth: entry.media.endDate.month, + endDay: entry.media.endDate.day, description: entry.media.description, genres: entry.media.genres, tags: entry.media.tags, @@ -452,6 +468,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: entry.media.startDate.year, startMonth: entry.media.startDate.month, startDay: entry.media.startDate.day, + endYear: entry.media.endDate.year, + endMonth: entry.media.endDate.month, + endDay: entry.media.endDate.day, description: entry.media.description, genres: entry.media.genres, tags: entry.media.tags, @@ -508,6 +527,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: entry.media.startDate.year, startMonth: entry.media.startDate.month, startDay: entry.media.startDate.day, + endYear: entry.media.endDate.year, + endMonth: entry.media.endDate.month, + endDay: entry.media.endDate.day, description: entry.media.description, genres: entry.media.genres, tags: entry.media.tags, @@ -662,6 +684,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -730,6 +755,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -798,6 +826,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -866,6 +897,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -934,6 +968,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -1002,6 +1039,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -1066,6 +1106,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -1132,6 +1175,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -1194,6 +1240,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, @@ -1258,6 +1307,9 @@ export const useMainMediaList = (myUserName: string, myToken: string) => startYear: myQueryManga[i].entries[j].media.startDate.year, startMonth: myQueryManga[i].entries[j].media.startDate.month, startDay: myQueryManga[i].entries[j].media.startDate.day, + endYear: myQueryManga[i].entries[j].media.endDate.year, + endMonth: myQueryManga[i].entries[j].media.endDate.month, + endDay: myQueryManga[i].entries[j].media.endDate.day, description: myQueryManga[i].entries[j].media.description, genres: myQueryManga[i].entries[j].media.genres, tags: myQueryManga[i].entries[j].media.tags, diff --git a/src/renderer/functions/SearchFunctions.tsx b/src/renderer/functions/SearchFunctions.tsx index bc065b8..8d926a4 100644 --- a/src/renderer/functions/SearchFunctions.tsx +++ b/src/renderer/functions/SearchFunctions.tsx @@ -66,6 +66,11 @@ export const useSearchQuery = ( month day } + endDate{ + year + month + day + } description genres tags { @@ -163,6 +168,9 @@ export const useSearchQuery = ( startYear: entry.startDate.year, startMonth: entry.startDate.month, startDay: entry.startDate.day, + endYear: entry.endDate.year, + endMonth: entry.endDate.month, + endDay: entry.endDate.day, description: entry.description, genres: entry.genres, tags: entry.tags, @@ -208,6 +216,9 @@ export const useSearchQuery = ( startYear: entry.startDate.year, startMonth: entry.startDate.month, startDay: entry.startDate.day, + endYear: entry.endDate.year, + endMonth: entry.endDate.month, + endDay: entry.endDate.day, description: entry.description, genres: entry.genres, tags: entry.tags, diff --git a/src/renderer/functions/SeasonsFunctions.tsx b/src/renderer/functions/SeasonsFunctions.tsx index dfd900c..ac141a2 100644 --- a/src/renderer/functions/SeasonsFunctions.tsx +++ b/src/renderer/functions/SeasonsFunctions.tsx @@ -103,6 +103,11 @@ export const useSeasonsQuery = ( month day } + endDate{ + year + month + day + } description genres tags { @@ -201,6 +206,9 @@ export const useSeasonsQuery = ( startYear: entry.startDate.year, startMonth: entry.startDate.month, startDay: entry.startDate.day, + endYear: entry.endDate.year, + endMonth: entry.endDate.month, + endDay: entry.endDate.day, description: entry.description, genres: entry.genres, tags: entry.tags, @@ -246,6 +254,9 @@ export const useSeasonsQuery = ( startYear: entry.startDate.year, startMonth: entry.startDate.month, startDay: entry.startDate.day, + endYear: entry.endDate.year, + endMonth: entry.endDate.month, + endDay: entry.endDate.day, description: entry.description, genres: entry.genres, tags: entry.tags, diff --git a/src/renderer/functions/edit/formatInfo.ts b/src/renderer/functions/edit/formatInfo.ts index fe8de14..398cb92 100644 --- a/src/renderer/functions/edit/formatInfo.ts +++ b/src/renderer/functions/edit/formatInfo.ts @@ -118,7 +118,7 @@ export function formatStatus(status: string | null) { case 'RELEASING': // 5 return status[0].toUpperCase() + status.slice(1).toLowerCase(); case 'NOT_YET_RELEASED': // 4 - return 'Not Yet Released'; + return 'Not yet released'; case 'CANCELLED': // 1 return status[0].toUpperCase() + status.slice(1).toLowerCase(); case 'HIATUS': // 3 diff --git a/src/renderer/functions/view/CountFunctions.tsx b/src/renderer/functions/view/CountFunctions.tsx index daa1f57..f9e0827 100644 --- a/src/renderer/functions/view/CountFunctions.tsx +++ b/src/renderer/functions/view/CountFunctions.tsx @@ -1,5 +1,7 @@ import Typography from '@mui/material/Typography'; import { memo } from 'react'; +import { useAtom } from 'jotai'; +import { filterTypeAtom } from 'renderer/store'; import { isFilteredTermOnList } from './FilterFunctions'; export const MainCount = memo(({ sidebar, category, data }: any) => { @@ -108,6 +110,8 @@ export const MainCount = memo(({ sidebar, category, data }: any) => { export const FilterCount = memo( ({ sidebar, category, data, filterTerm }: any) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + // main count - anime if (sidebar === 0) { if (category === 0) @@ -115,7 +119,7 @@ export const FilterCount = memo( { data.anime.animeWatching.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -125,7 +129,7 @@ export const FilterCount = memo( { data.anime.animeCompleted.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -135,7 +139,7 @@ export const FilterCount = memo( { data.anime.animeOnHold.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -145,7 +149,7 @@ export const FilterCount = memo( { data.anime.animeDropped.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -156,7 +160,7 @@ export const FilterCount = memo( { data.anime.animePlanToWatch.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -166,7 +170,7 @@ export const FilterCount = memo( { data.anime.animeAll.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -179,7 +183,7 @@ export const FilterCount = memo( { data.manga.mangaReading.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -189,7 +193,7 @@ export const FilterCount = memo( { data.manga.mangaCompleted.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -199,7 +203,7 @@ export const FilterCount = memo( { data.manga.mangaOnHold.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -209,7 +213,7 @@ export const FilterCount = memo( { data.manga.mangaDropped.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -219,7 +223,7 @@ export const FilterCount = memo( { data.manga.mangaPlanToRead.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -229,7 +233,7 @@ export const FilterCount = memo( { data.manga.mangaAll.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -242,7 +246,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsReading.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -252,7 +256,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsCompleted.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -262,7 +266,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsOnHold.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -272,7 +276,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsDropped.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -282,7 +286,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsPlanToRead.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -292,7 +296,7 @@ export const FilterCount = memo( { data.lightNovels.lightNovelsAll.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -305,7 +309,7 @@ export const FilterCount = memo( { data.anime.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -315,7 +319,7 @@ export const FilterCount = memo( { data.manga.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -325,7 +329,7 @@ export const FilterCount = memo( { data.lightNovels.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -335,7 +339,7 @@ export const FilterCount = memo( { data.all.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -348,7 +352,7 @@ export const FilterCount = memo( { data.TV.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -358,7 +362,7 @@ export const FilterCount = memo( { data.OVAONASpecial.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -368,7 +372,7 @@ export const FilterCount = memo( { data.Movies.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } @@ -378,7 +382,7 @@ export const FilterCount = memo( { data.All.filter((media: any) => { - return isFilteredTermOnList(media, filterTerm); + return isFilteredTermOnList(media, filterTerm, filterType); }).length } diff --git a/src/renderer/functions/view/DataTableFunctions.tsx b/src/renderer/functions/view/DataTableFunctions.tsx index d1586ab..8e5581d 100644 --- a/src/renderer/functions/view/DataTableFunctions.tsx +++ b/src/renderer/functions/view/DataTableFunctions.tsx @@ -1,5 +1,7 @@ import { useAniListUsername } from 'renderer/context/services/AniListUsernameContext'; import { useAniListToken } from 'renderer/context/services/AniListTokenContext'; +import { filterTypeAtom } from 'renderer/store'; +import { useAtom } from 'jotai'; import { useMainMediaList } from '../MainMediaListFunctions'; import { getFilteredTabData, isFilteredTermOnList } from './FilterFunctions'; import { sortMyListAnime, sortMyListManga } from '../sort/sortMainFunctions'; @@ -30,13 +32,15 @@ export const MainTableView = ( sort: any, title: any, ) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + if (filter !== '' && sidebar === 0) { return sortMyListAnime( sort, title, getFilteredTabData(category, sidebar, data), ).filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }); } if (filter !== '' && sidebar === 1) { @@ -45,7 +49,7 @@ export const MainTableView = ( title, getFilteredTabData(category, sidebar, data), ).filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }); } if (filter !== '' && sidebar === 2) { @@ -54,7 +58,7 @@ export const MainTableView = ( title, getFilteredTabData(category, sidebar, data), ).filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }); } if (sidebar === 0 && category === 0) { @@ -127,6 +131,8 @@ export const SearchTableView = ( sort: any, title: any, ) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + if (filter !== '') { return ( // 140 @@ -136,7 +142,7 @@ export const SearchTableView = ( category, getFilteredTabData(category, sidebar, data), ).filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) ); } @@ -164,13 +170,15 @@ export const SeasonTableView = ( sort: any, title: any, ) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + if (filter !== '') { return sortSeasons( sort, title, getFilteredTabData(category, sidebar, data), ).filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }); } if (category === 0) { diff --git a/src/renderer/functions/view/FilterFunctions.tsx b/src/renderer/functions/view/FilterFunctions.tsx index c5d27d8..bd41737 100644 --- a/src/renderer/functions/view/FilterFunctions.tsx +++ b/src/renderer/functions/view/FilterFunctions.tsx @@ -14,101 +14,262 @@ export const getFilteredTerm = (term: any) => { */ }; -export const isFilteredTermOnList = (media: any, filter: any) => { - if (media.titleRomaji !== null) { - if (getFilteredTerm(media.titleRomaji).includes(getFilteredTerm(filter))) { +export const isFilteredTermOnList = ( + media: any, + filter: any, + filterType: any, +) => { + if (filterType === 'All') { + if (getFilteredTerm(filter) === '') { return true; } - } - if (media.titleNative !== null) { - if (getFilteredTerm(media.titleNative).includes(getFilteredTerm(filter))) { - return true; + if (media.titleRomaji !== null) { + if ( + getFilteredTerm(media.titleRomaji).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + if (media.titleNative !== null) { + if ( + getFilteredTerm(media.titleNative).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + if (media.titleEnglish !== null) { + if ( + getFilteredTerm(media.titleEnglish).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + if (media.synonyms !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.synonyms.length; i++) { + if ( + getFilteredTerm(media.synonyms[i]).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } + if (media.tags !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.tags.length; i++) { + if ( + getFilteredTerm(media.tags[i].name).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } + if (media.genres !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.genres.length; i++) { + if ( + getFilteredTerm(media.genres[i]).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } + if (media.studios !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.studios.length; i++) { + if ( + getFilteredTerm(media.studios[i].node.name).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } + } + if (media.season !== null && media.seasonYear !== null) { + if ( + getFilteredTerm(media.season + media.seasonYear).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } + if (media.seasonYear === null && media.startYear !== null) { + if ( + getFilteredTerm(media.startYear.toString()).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } + if (media.status !== null) { + if ( + getFilteredTerm(formatStatus(media.status)).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } + if (media.source !== null) { + if (getFilteredTerm(media.source).includes(getFilteredTerm(filter))) { + return true; + } + } + if (media.format !== null) { + if ( + getFilteredTerm(media.format).includes(getFilteredTerm(filter)) // || getFilteredTerm(`type:${media.format}`).includes(getFilteredTerm(filter)) + ) { + return true; + } } } - if (media.titleEnglish !== null) { - if (getFilteredTerm(media.titleEnglish).includes(getFilteredTerm(filter))) { + if (filterType === 'Title') { + if (getFilteredTerm(filter) === '') { return true; } - } - if (media.synonyms !== null) { - // eslint-disable-next-line no-plusplus - for (let i = 0; i < media.synonyms.length; i++) { + if (media.titleRomaji !== null) { if ( - getFilteredTerm(media.synonyms[i]).includes(getFilteredTerm(filter)) + getFilteredTerm(media.titleRomaji).includes(getFilteredTerm(filter)) ) { return true; } } - } - if (media.tags !== null) { - // eslint-disable-next-line no-plusplus - for (let i = 0; i < media.tags.length; i++) { + if (media.titleNative !== null) { if ( - getFilteredTerm(media.tags[i].name).includes(getFilteredTerm(filter)) + getFilteredTerm(media.titleNative).includes(getFilteredTerm(filter)) ) { return true; } } - } - if (media.genres !== null) { - // eslint-disable-next-line no-plusplus - for (let i = 0; i < media.genres.length; i++) { - if (getFilteredTerm(media.genres[i]).includes(getFilteredTerm(filter))) { + if (media.titleEnglish !== null) { + if ( + getFilteredTerm(media.titleEnglish).includes(getFilteredTerm(filter)) + ) { return true; } } + if (media.synonyms !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.synonyms.length; i++) { + if ( + getFilteredTerm(media.synonyms[i]).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } } - if (media.studios !== null) { - // eslint-disable-next-line no-plusplus - for (let i = 0; i < media.studios.length; i++) { + if (filterType === 'Tags') { + if (getFilteredTerm(filter) === '') { + return true; + } + if (media.tags !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.tags.length; i++) { + if ( + getFilteredTerm(media.tags[i].name).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } + } + if (filterType === 'Genres') { + if (getFilteredTerm(filter) === '') { + return true; + } + if (media.genres !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.genres.length; i++) { + if ( + getFilteredTerm(media.genres[i]).includes(getFilteredTerm(filter)) + ) { + return true; + } + } + } + } + if (filterType === 'Season/Year') { + if (getFilteredTerm(filter) === '') { + return true; + } + if (media.season !== null && media.seasonYear !== null) { if ( - getFilteredTerm(media.studios[i].node.name).includes( + getFilteredTerm(media.season + media.seasonYear).includes( getFilteredTerm(filter), ) ) { return true; } } - } - if (media.season !== null && media.seasonYear !== null) { - if ( - getFilteredTerm(media.season + media.seasonYear).includes( - getFilteredTerm(filter), - ) - ) { - return true; + if (media.seasonYear === null && media.startYear !== null) { + if ( + getFilteredTerm(media.startYear.toString()).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } } } - if (media.seasonYear === null && media.startYear !== null) { - if ( - getFilteredTerm(media.startYear.toString()).includes( - getFilteredTerm(filter), - ) - ) { + if (filterType === 'Studio/Producer') { + if (getFilteredTerm(filter) === '') { return true; } + if (media.studios !== null) { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < media.studios.length; i++) { + if ( + getFilteredTerm(media.studios[i].node.name).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } + } } - if (media.status !== null) { - if ( - getFilteredTerm(formatStatus(media.status)).includes( - getFilteredTerm(filter), - ) - ) { + if (filterType === 'Status') { + if (getFilteredTerm(filter) === '') { return true; } + if (media.status !== null) { + if ( + getFilteredTerm(formatStatus(media.status)).includes( + getFilteredTerm(filter), + ) + ) { + return true; + } + } } - if (media.source !== null) { - if (getFilteredTerm(media.source).includes(getFilteredTerm(filter))) { + if (filterType === 'Source') { + if (getFilteredTerm(filter) === '') { return true; } + if (media.source !== null) { + if (getFilteredTerm(media.source).includes(getFilteredTerm(filter))) { + return true; + } + } } - if (media.format !== null) { - if ( - getFilteredTerm(media.format).includes(getFilteredTerm(filter)) // || getFilteredTerm(`type:${media.format}`).includes(getFilteredTerm(filter)) - ) { + if (filterType === 'Type') { + if (getFilteredTerm(filter) === '') { return true; } + if (media.format !== null) { + if ( + getFilteredTerm(media.format).includes(getFilteredTerm(filter)) // || getFilteredTerm(`type:${media.format}`).includes(getFilteredTerm(filter)) + ) { + return true; + } + } } + + // if no condition true, then false return false; }; diff --git a/src/renderer/functions/view/MainViewFunctions.tsx b/src/renderer/functions/view/MainViewFunctions.tsx index 9d6ba26..856fabc 100644 --- a/src/renderer/functions/view/MainViewFunctions.tsx +++ b/src/renderer/functions/view/MainViewFunctions.tsx @@ -6,6 +6,8 @@ import { memo, useEffect, useMemo, useState } from 'react'; import { useAniListToken } from 'renderer/context/services/AniListTokenContext'; import { useAniListUsername } from 'renderer/context/services/AniListUsernameContext'; import { useSort } from 'renderer/context/SortContext'; +import { filterTypeAtom } from 'renderer/store'; +import { useAtom } from 'jotai'; import { getFilteredTabData, isFilteredTermOnList } from './FilterFunctions'; import { sortMyListAnime, sortMyListManga } from '../sort/sortMainFunctions'; import { useMainMediaList } from '../MainMediaListFunctions'; @@ -71,6 +73,7 @@ export const MainCategoryView = memo( ({ category, sidebar, mainView, filter, sort, title }: any) => { const myToken: any = useAniListToken(); const myUsername: any = useAniListUsername(); + const [filterType, setFilterType] = useAtom(filterTypeAtom); const { isLoading, isError, error, data, refetch }: any = useMainMediaList( myUsername.AniListUsername, @@ -84,7 +87,7 @@ export const MainCategoryView = memo( getFilteredTabData(category, sidebar, data), ) .filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) .map((media: any, index: any) => { return ( @@ -106,7 +109,7 @@ export const MainCategoryView = memo( getFilteredTabData(category, sidebar, data), ) .filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) .map((media: any, index: any) => { return ( @@ -128,7 +131,7 @@ export const MainCategoryView = memo( getFilteredTabData(category, sidebar, data), ) .filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) .map((media: any, index: any) => { return ( diff --git a/src/renderer/functions/view/SearchViewFunctions.tsx b/src/renderer/functions/view/SearchViewFunctions.tsx index 6d71f6c..984ee34 100644 --- a/src/renderer/functions/view/SearchViewFunctions.tsx +++ b/src/renderer/functions/view/SearchViewFunctions.tsx @@ -3,6 +3,8 @@ import SearchMediaCard from 'renderer/components/app/search/SearchMediaCard'; import SearchMediaCardCompact from 'renderer/components/app/search/SearchMediaCardCompact'; import RenderIfVisible from 'react-render-if-visible'; import { memo } from 'react'; +import { useAtom } from 'jotai'; +import { filterTypeAtom } from 'renderer/store'; import { getFilteredTabData, isFilteredTermOnList } from './FilterFunctions'; import sortMySearch from '../sort/sortSearchFunctions'; @@ -38,6 +40,8 @@ export const SearchView = memo(({ view, media, index, sort }: any) => { export const SearchCategoryView = memo( ({ category, sidebar, data, filter, mainView, sort, title }: any) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + if (filter !== '') { return ( // 140 @@ -48,7 +52,7 @@ export const SearchCategoryView = memo( getFilteredTabData(category, sidebar, data), ) .filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) .map((media: any) => { return ( diff --git a/src/renderer/functions/view/SeasonViewFunctions.tsx b/src/renderer/functions/view/SeasonViewFunctions.tsx index e1319d7..16a4589 100644 --- a/src/renderer/functions/view/SeasonViewFunctions.tsx +++ b/src/renderer/functions/view/SeasonViewFunctions.tsx @@ -3,6 +3,8 @@ import { SeasonMediaCard } from 'renderer/components/app/seasons/SeasonMediaCard import { Box } from '@mui/material'; import { memo } from 'react'; import RenderIfVisible from 'react-render-if-visible'; +import { useAtom } from 'jotai'; +import { filterTypeAtom } from 'renderer/store'; import { getFilteredTabData, isFilteredTermOnList } from './FilterFunctions'; import sortSeasons from '../sort/sortSeasonsFunctions'; @@ -40,6 +42,8 @@ export const SeasonView = memo(({ view, media, index, sort }: any) => { export const SeasonCategoryView = memo( ({ category, sidebar, data, filter, mainView, sort, title }: any) => { + const [filterType, setFilterType] = useAtom(filterTypeAtom); + if (filter !== '') { return sortSeasons( sort, @@ -47,7 +51,7 @@ export const SeasonCategoryView = memo( getFilteredTabData(category, sidebar, data), ) .filter((media: any) => { - return isFilteredTermOnList(media, filter); + return isFilteredTermOnList(media, filter, filterType); }) .map((media: any) => { return ( diff --git a/src/renderer/store.ts b/src/renderer/store.ts index 93c0889..3f3cea9 100644 --- a/src/renderer/store.ts +++ b/src/renderer/store.ts @@ -150,3 +150,15 @@ export const statusAddSelectAtom = atom( window.electron.store.get('defaultAddStatus'), ); myStore.set(statusAddSelectAtom, window.electron.store.get('defaultAddStatus')); + +export const appVersionAtom = atom('0.0.0'); +myStore.set(appVersionAtom, '0.0.0'); + +export const filterTypeAtom = atom('All'); +myStore.set(filterTypeAtom, 'All'); + +export const seasonChangeAtom = atom(window.electron.store.get('seasonChange')); +myStore.set(seasonChangeAtom, window.electron.store.get('seasonChange')); + +export const appResetDialogOpenAtom = atom(false); +myStore.set(appResetDialogOpenAtom, false);