diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9162d3ca71..d0d11b4c5f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/init@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/autobuild@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/analyze@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5 diff --git a/package-lock.json b/package-lock.json index dceb0e30a6..eb12f0c4b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@fontsource/noto-sans-tc": "4.5.12", "@jellyfin/sdk": "unstable", "@loadable/component": "5.15.3", - "blurhash": "2.0.4", + "blurhash": "2.0.5", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", "core-js": "3.28.0", @@ -34,7 +34,7 @@ "jassub": "1.4.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", - "jstree": "3.3.14", + "jstree": "3.3.15", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", "marked": "4.2.12", @@ -54,7 +54,7 @@ "workbox-precaching": "6.5.4" }, "devDependencies": { - "@babel/core": "7.20.12", + "@babel/core": "7.21.0", "@babel/eslint-parser": "7.19.1", "@babel/eslint-plugin": "7.19.1", "@babel/plugin-proposal-class-properties": "7.18.6", @@ -62,14 +62,14 @@ "@babel/plugin-transform-modules-umd": "7.18.6", "@babel/preset-env": "7.20.2", "@babel/preset-react": "7.18.6", - "@babel/preset-typescript": "7.18.6", + "@babel/preset-typescript": "7.21.0", "@types/escape-html": "1.0.2", "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.19", - "@typescript-eslint/eslint-plugin": "5.52.0", - "@typescript-eslint/parser": "5.52.0", + "@typescript-eslint/eslint-plugin": "5.53.0", + "@typescript-eslint/parser": "5.53.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -79,10 +79,10 @@ "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", "css-loader": "6.7.3", - "cssnano": "5.1.14", + "cssnano": "5.1.15", "es-check": "7.1.0", "eslint": "8.34.0", - "eslint-plugin-compat": "4.1.1", + "eslint-plugin-compat": "4.1.2", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", @@ -98,11 +98,11 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.58.1", + "sass": "1.58.3", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", - "stylelint": "14.16.1", + "stylelint": "15.2.0", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", "stylelint-order": "6.0.2", @@ -123,12 +123,26 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { "node": ">=6.0.0" @@ -182,21 +196,21 @@ } }, "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", + "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.0", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -246,13 +260,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -319,17 +334,18 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -394,13 +410,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -419,12 +435,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -443,9 +459,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -454,8 +470,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "engines": { "node": ">=6.9.0" @@ -530,12 +546,12 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -572,9 +588,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -596,14 +612,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -624,9 +640,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1124,12 +1140,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1679,14 +1695,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", + "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1852,14 +1868,14 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", + "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-typescript": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -1894,19 +1910,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", - "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.1", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1915,9 +1931,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -2378,19 +2394,19 @@ } }, "node_modules/@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", + "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", "dev": true, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2", + "postcss": "^8.4", "postcss-selector-parser": "^6.0.10" } }, @@ -2604,9 +2620,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "devOptional": true, "engines": { "node": ">=6.0.0" @@ -2632,19 +2648,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "devOptional": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "devOptional": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3170,14 +3186,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", - "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.53.0.tgz", + "integrity": "sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/type-utils": "5.52.0", - "@typescript-eslint/utils": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/type-utils": "5.53.0", + "@typescript-eslint/utils": "5.53.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -3219,14 +3235,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", - "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.53.0.tgz", + "integrity": "sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/typescript-estree": "5.53.0", "debug": "^4.3.4" }, "engines": { @@ -3246,13 +3262,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", - "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz", + "integrity": "sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0" + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3263,13 +3279,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", - "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.53.0.tgz", + "integrity": "sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.52.0", - "@typescript-eslint/utils": "5.52.0", + "@typescript-eslint/typescript-estree": "5.53.0", + "@typescript-eslint/utils": "5.53.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3290,9 +3306,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", - "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3303,13 +3319,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", - "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz", + "integrity": "sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3374,16 +3390,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", - "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.53.0.tgz", + "integrity": "sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/typescript-estree": "5.53.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -3415,12 +3431,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", - "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.53.0.tgz", + "integrity": "sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/types": "5.53.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4273,9 +4289,9 @@ } }, "node_modules/blurhash": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.4.tgz", - "integrity": "sha512-r/As72u2FbucLoK5NTegM/GucxJc3d8GvHc4ngo13IO/nt2HU4gONxNLq1XPN6EM/V8Y9URIa7PcSz2RZu553A==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" }, "node_modules/body-parser": { "version": "1.20.0", @@ -5450,12 +5466,12 @@ } }, "node_modules/cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "dependencies": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -5471,22 +5487,22 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "dependencies": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -5501,7 +5517,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -6499,22 +6515,21 @@ } }, "node_modules/eslint-plugin-compat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", - "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.2.tgz", + "integrity": "sha512-DNrQgDi5L4mAL4FdFboKBlSRg6MWfd75eA7K91lMjtP5ryN+O11qT2FDn7Z6zqy6sZ4sJawUR5V75qzB6l0CBg==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001450", - "core-js": "^3.27.2", + "caniuse-lite": "^1.0.30001451", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", "semver": "7.3.8" }, "engines": { - "node": ">=9.x" + "node": ">=16.x" }, "peerDependencies": { "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" @@ -8820,9 +8835,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -9789,11 +9804,11 @@ } }, "node_modules/jstree": { - "version": "3.3.14", - "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.14.tgz", - "integrity": "sha512-W8t+nFOKENXNIulvu+DW4gPcnpOXY0FswiTiOn1Fnhs6poRe6eA/Kf6fS1/GJJ8C8KEy0q3ttF6tbGRDmHIM/g==", + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.15.tgz", + "integrity": "sha512-fNK2EBgGjaJQ3cJuINX/80vDeAufYWtM0csudgYl3eJG+eRAH/1r1IJVUOvAlJIa+uSgg+Fi8uGrt+Xbs92eKg==", "dependencies": { - "jquery": "^3.6.0" + "jquery": "^3.5.0" } }, "node_modules/jsx-ast-utils": { @@ -9993,7 +10008,7 @@ "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "node_modules/logform": { @@ -11391,12 +11406,12 @@ } }, "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -12104,9 +12119,9 @@ } }, "node_modules/postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "dependencies": { "browserslist": "^4.21.4", @@ -12574,9 +12589,9 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "dependencies": { "browserslist": "^4.21.4", @@ -13680,9 +13695,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.58.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.1.tgz", - "integrity": "sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg==", + "version": "1.58.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz", + "integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -14775,16 +14790,20 @@ } }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.2.0.tgz", + "integrity": "sha512-wjg5OLn8zQwjlj5cYUgyQpMWKzct42AG5dYlqkHRJQJqsystFFn3onqEc263KH4xfEI0W3lZCnlIhFfS64uwSA==", "dev": true, "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.0.1", + "@csstools/css-tokenizer": "^2.0.1", + "@csstools/media-query-list-parser": "^2.0.1", + "@csstools/selector-specificity": "^2.1.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", + "cosmiconfig": "^8.0.0", "css-functions-list": "^3.1.0", + "css-tree": "^2.3.1", "debug": "^4.3.4", "fast-glob": "^3.2.12", "fastest-levenshtein": "^1.0.16", @@ -14793,7 +14812,7 @@ "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.2.0", - "ignore": "^5.2.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", @@ -14803,7 +14822,7 @@ "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.19", + "postcss": "^8.4.21", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", @@ -14817,13 +14836,13 @@ "svg-tags": "^1.0.0", "table": "^6.8.1", "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.0" }, "bin": { "stylelint": "bin/stylelint.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -17082,6 +17101,12 @@ "stylelint": "^14.5.1 || ^15.0.0" } }, + "node_modules/stylelint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/stylelint/node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -17098,19 +17123,34 @@ "dev": true }, "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.0.tgz", + "integrity": "sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/stylelint/node_modules/globby": { @@ -17167,6 +17207,24 @@ "node": ">=0.10.0" } }, + "node_modules/stylelint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/stylelint/node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -19111,16 +19169,16 @@ } }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/write-file-atomic/node_modules/signal-exit": { @@ -19219,12 +19277,25 @@ }, "dependencies": { "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, "@apideck/better-ajv-errors": { @@ -19262,21 +19333,21 @@ "dev": true }, "@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", "dev": true, "requires": { - "@ampproject/remapping": "^2.1.0", + "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.0", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -19305,13 +19376,14 @@ } }, "@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "requires": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, @@ -19365,17 +19437,18 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" } }, @@ -19419,13 +19492,13 @@ } }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" } }, "@babel/helper-hoist-variables": { @@ -19438,12 +19511,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "requires": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.21.0" } }, "@babel/helper-module-imports": { @@ -19456,9 +19529,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -19467,8 +19540,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" } }, "@babel/helper-optimise-call-expression": { @@ -19522,12 +19595,12 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -19552,9 +19625,9 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true }, "@babel/helper-wrap-function": { @@ -19570,14 +19643,14 @@ } }, "@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "requires": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" } }, "@babel/highlight": { @@ -19592,9 +19665,9 @@ } }, "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -19921,12 +19994,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-arrow-functions": { @@ -20266,14 +20339,14 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", + "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" } }, "@babel/plugin-transform-unicode-escapes": { @@ -20406,14 +20479,14 @@ } }, "@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", + "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-typescript": "^7.21.0" } }, "@babel/runtime": { @@ -20436,27 +20509,27 @@ } }, "@babel/traverse": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", - "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.1", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -20680,9 +20753,9 @@ "requires": {} }, "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", + "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", "dev": true, "requires": {} }, @@ -20854,9 +20927,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "devOptional": true }, "@jridgewell/set-array": { @@ -20876,19 +20949,19 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "devOptional": true }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "devOptional": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -21359,14 +21432,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", - "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.53.0.tgz", + "integrity": "sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/type-utils": "5.52.0", - "@typescript-eslint/utils": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/type-utils": "5.53.0", + "@typescript-eslint/utils": "5.53.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -21388,53 +21461,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", - "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.53.0.tgz", + "integrity": "sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/typescript-estree": "5.53.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", - "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz", + "integrity": "sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0" + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0" } }, "@typescript-eslint/type-utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", - "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.53.0.tgz", + "integrity": "sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.52.0", - "@typescript-eslint/utils": "5.52.0", + "@typescript-eslint/typescript-estree": "5.53.0", + "@typescript-eslint/utils": "5.53.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", - "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", - "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz", + "integrity": "sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21474,16 +21547,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", - "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.53.0.tgz", + "integrity": "sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/typescript-estree": "5.53.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -21501,12 +21574,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", - "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", + "version": "5.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.53.0.tgz", + "integrity": "sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/types": "5.53.0", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { @@ -22163,9 +22236,9 @@ "dev": true }, "blurhash": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.4.tgz", - "integrity": "sha512-r/As72u2FbucLoK5NTegM/GucxJc3d8GvHc4ngo13IO/nt2HU4gONxNLq1XPN6EM/V8Y9URIa7PcSz2RZu553A==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" }, "body-parser": { "version": "1.20.0", @@ -23028,33 +23101,33 @@ "dev": true }, "cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "requires": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "requires": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -23069,7 +23142,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -24049,16 +24122,15 @@ } }, "eslint-plugin-compat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", - "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.2.tgz", + "integrity": "sha512-DNrQgDi5L4mAL4FdFboKBlSRg6MWfd75eA7K91lMjtP5ryN+O11qT2FDn7Z6zqy6sZ4sJawUR5V75qzB6l0CBg==", "dev": true, "requires": { "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001450", - "core-js": "^3.27.2", + "caniuse-lite": "^1.0.30001451", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", "semver": "7.3.8" @@ -25597,9 +25669,9 @@ "dev": true }, "ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "immediate": { @@ -26288,11 +26360,11 @@ "dev": true }, "jstree": { - "version": "3.3.14", - "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.14.tgz", - "integrity": "sha512-W8t+nFOKENXNIulvu+DW4gPcnpOXY0FswiTiOn1Fnhs6poRe6eA/Kf6fS1/GJJ8C8KEy0q3ttF6tbGRDmHIM/g==", + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.15.tgz", + "integrity": "sha512-fNK2EBgGjaJQ3cJuINX/80vDeAufYWtM0csudgYl3eJG+eRAH/1r1IJVUOvAlJIa+uSgg+Fi8uGrt+Xbs92eKg==", "requires": { - "jquery": "^3.6.0" + "jquery": "^3.5.0" } }, "jsx-ast-utils": { @@ -26467,7 +26539,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "logform": { @@ -27487,12 +27559,12 @@ } }, "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -27982,9 +28054,9 @@ } }, "postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "requires": { "browserslist": "^4.21.4", @@ -28273,9 +28345,9 @@ } }, "postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "requires": { "browserslist": "^4.21.4", @@ -29084,9 +29156,9 @@ "dev": true }, "sass": { - "version": "1.58.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.1.tgz", - "integrity": "sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg==", + "version": "1.58.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz", + "integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -29958,16 +30030,20 @@ } }, "stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.2.0.tgz", + "integrity": "sha512-wjg5OLn8zQwjlj5cYUgyQpMWKzct42AG5dYlqkHRJQJqsystFFn3onqEc263KH4xfEI0W3lZCnlIhFfS64uwSA==", "dev": true, "requires": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.0.1", + "@csstools/css-tokenizer": "^2.0.1", + "@csstools/media-query-list-parser": "^2.0.1", + "@csstools/selector-specificity": "^2.1.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", + "cosmiconfig": "^8.0.0", "css-functions-list": "^3.1.0", + "css-tree": "^2.3.1", "debug": "^4.3.4", "fast-glob": "^3.2.12", "fastest-levenshtein": "^1.0.16", @@ -29976,7 +30052,7 @@ "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.2.0", - "ignore": "^5.2.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", @@ -29986,7 +30062,7 @@ "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.19", + "postcss": "^8.4.21", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", @@ -30000,9 +30076,15 @@ "svg-tags": "^1.0.0", "table": "^6.8.1", "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.0" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -30016,16 +30098,25 @@ "dev": true }, "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.0.tgz", + "integrity": "sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" } }, "globby": { @@ -30066,6 +30157,21 @@ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -33352,9 +33458,9 @@ } }, "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "requires": { "imurmurhash": "^0.1.4", diff --git a/package.json b/package.json index ee5a5a22a6..d3c5c2f688 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "@babel/core": "7.20.12", + "@babel/core": "7.21.0", "@babel/eslint-parser": "7.19.1", "@babel/eslint-plugin": "7.19.1", "@babel/plugin-proposal-class-properties": "7.18.6", @@ -13,14 +13,14 @@ "@babel/plugin-transform-modules-umd": "7.18.6", "@babel/preset-env": "7.20.2", "@babel/preset-react": "7.18.6", - "@babel/preset-typescript": "7.18.6", + "@babel/preset-typescript": "7.21.0", "@types/escape-html": "1.0.2", "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.19", - "@typescript-eslint/eslint-plugin": "5.52.0", - "@typescript-eslint/parser": "5.52.0", + "@typescript-eslint/eslint-plugin": "5.53.0", + "@typescript-eslint/parser": "5.53.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -30,10 +30,10 @@ "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", "css-loader": "6.7.3", - "cssnano": "5.1.14", + "cssnano": "5.1.15", "es-check": "7.1.0", "eslint": "8.34.0", - "eslint-plugin-compat": "4.1.1", + "eslint-plugin-compat": "4.1.2", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", @@ -49,11 +49,11 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.58.1", + "sass": "1.58.3", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", - "stylelint": "14.16.1", + "stylelint": "15.2.0", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", "stylelint-order": "6.0.2", @@ -76,7 +76,7 @@ "@fontsource/noto-sans-tc": "4.5.12", "@jellyfin/sdk": "unstable", "@loadable/component": "5.15.3", - "blurhash": "2.0.4", + "blurhash": "2.0.5", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", "core-js": "3.28.0", @@ -93,7 +93,7 @@ "jassub": "1.4.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", - "jstree": "3.3.14", + "jstree": "3.3.15", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", "marked": "4.2.12", diff --git a/src/components/ConnectionRequired.tsx b/src/components/ConnectionRequired.tsx index aa67a257e1..9c5f402b0a 100644 --- a/src/components/ConnectionRequired.tsx +++ b/src/components/ConnectionRequired.tsx @@ -1,5 +1,5 @@ import React, { FunctionComponent, useEffect, useState } from 'react'; -import { Outlet, useNavigate } from 'react-router-dom'; +import { Outlet, useLocation, useNavigate } from 'react-router-dom'; import type { ConnectResponse } from 'jellyfin-apiclient'; import alert from './alert'; @@ -31,11 +31,11 @@ const ConnectionRequired: FunctionComponent = ({ isUserRequired = true }) => { const navigate = useNavigate(); + const location = useLocation(); const [ isLoading, setIsLoading ] = useState(true); useEffect(() => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any const bounce = async (connectionResponse: ConnectResponse) => { switch (connectionResponse.State) { case ConnectionState.SignedIn: @@ -45,12 +45,12 @@ const ConnectionRequired: FunctionComponent = ({ return; case ConnectionState.ServerSignIn: // Bounce to the login page - console.debug('[ConnectionRequired] not logged in, redirecting to login page'); - navigate(BounceRoutes.Login, { - state: { - serverid: connectionResponse.ApiClient.serverId() - } - }); + if (location.pathname === BounceRoutes.Login) { + setIsLoading(false); + } else { + console.debug('[ConnectionRequired] not logged in, redirecting to login page'); + navigate(`${BounceRoutes.Login}?serverid=${connectionResponse.ApiClient.serverId()}`); + } return; case ConnectionState.ServerSelection: // Bounce to select server page @@ -144,7 +144,7 @@ const ConnectionRequired: FunctionComponent = ({ }; validateConnection(); - }, [ isAdminRequired, isUserRequired, navigate ]); + }, [ isAdminRequired, isUserRequired, location.pathname, navigate ]); if (isLoading) { return ; diff --git a/src/components/actionSheet/actionSheet.js b/src/components/actionSheet/actionSheet.js index eacf3624b2..1114908fcf 100644 --- a/src/components/actionSheet/actionSheet.js +++ b/src/components/actionSheet/actionSheet.js @@ -6,7 +6,7 @@ import dom from '../../scripts/dom'; import '../../elements/emby-button/emby-button'; import './actionSheet.scss'; import 'material-design-icons-iconfont'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../components/listview/listview.scss'; function getOffsets(elems) { diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 05feb0ff9c..be7cfd5855 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -124,7 +124,7 @@ class AppRouter { isBack: action === Action.Pop }); } else { - console.info('[appRouter] "%s" route not found', normalizedPath, location); + // The route is not registered here, so it should be handled by react-router this.currentRouteInfo = { route: {}, path: normalizedPath + location.search diff --git a/src/components/collectionEditor/collectionEditor.js b/src/components/collectionEditor/collectionEditor.js index 8af78fede2..89862725a5 100644 --- a/src/components/collectionEditor/collectionEditor.js +++ b/src/components/collectionEditor/collectionEditor.js @@ -12,7 +12,7 @@ import '../../elements/emby-input/emby-input'; import '../../elements/emby-select/emby-select'; import 'material-design-icons-iconfont'; import '../formdialog.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; diff --git a/src/components/dialog/dialog.js b/src/components/dialog/dialog.js index 9629e9bb23..85e81abb02 100644 --- a/src/components/dialog/dialog.js +++ b/src/components/dialog/dialog.js @@ -10,7 +10,7 @@ import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-input/emby-input'; import '../formdialog.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import template from './dialog.template.html'; /* eslint-disable indent */ diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index 9c1ecec625..6811525465 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -7,7 +7,7 @@ import { toBoolean } from '../../utils/string.ts'; import dom from '../../scripts/dom'; import './dialoghelper.scss'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; /* eslint-disable indent */ diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 67137b9174..6bba5c3bdc 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -6,7 +6,7 @@ import imageLoader from './images/imageLoader'; import globalize from '../scripts/globalize'; import layoutManager from './layoutManager'; import { getParameterByName } from '../utils/url.ts'; -import '../assets/css/scrollstyles.scss'; +import '../styles/scrollstyles.scss'; import '../elements/emby-itemscontainer/emby-itemscontainer'; /* eslint-disable indent */ diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index d6b85256a9..4c1b6d625b 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -13,7 +13,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-select/emby-select'; import 'material-design-icons-iconfont'; import '../formdialog.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import template from './filtermenu.template.html'; diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 14c973d511..e353d562ab 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -17,13 +17,13 @@ import dom from '../../scripts/dom'; import './guide.scss'; import './programs.scss'; import 'material-design-icons-iconfont'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-programcell/emby-programcell'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-tabs/emby-tabs'; import '../../elements/emby-scroller/emby-scroller'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import 'webcomponents.js/webcomponents-lite'; import ServerConnections from '../ServerConnections'; import template from './tvguide.template.html'; diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index d149a633a0..1a05d40849 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -20,7 +20,7 @@ import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../formdialog.scss'; import 'material-design-icons-iconfont'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import template from './itemMediaInfo.template.html'; diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index 05c0fb02f8..0c049f8943 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -19,7 +19,7 @@ import '../../elements/emby-select/emby-select'; import '../../elements/emby-toggle/emby-toggle'; import '../listview/listview.scss'; import '../formdialog.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import './style.scss'; import toast from '../toast/toast'; import alert from '../alert'; diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index da0dc2909c..ed54675016 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -17,7 +17,7 @@ import '../listview/listview.scss'; import '../../elements/emby-button/paper-icon-button-light'; import '../formdialog.scss'; import '../../elements/emby-toggle/emby-toggle'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import './style.scss'; import toast from '../toast/toast'; import confirm from '../confirm/confirm'; diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index a36779ba53..6456c5721d 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -15,8 +15,8 @@ import '../../elements/emby-textarea/emby-textarea'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../formdialog.scss'; -import '../../assets/css/clearbutton.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/clearbutton.scss'; +import '../../styles/flexstyles.scss'; import './style.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index 80899d8bed..763f0eb2d1 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -8,6 +8,8 @@ import { appRouter } from '../components/appRouter'; import * as inputManager from '../scripts/inputManager'; import toast from '../components/toast/toast'; import confirm from '../components/confirm/confirm'; +import * as dashboard from '../utils/dashboard'; +import ServerConnections from '../components/ServerConnections'; // TODO: replace with each plugin version const cacheParam = new Date().getTime(); @@ -86,7 +88,9 @@ class PluginManager { appRouter, inputManager, toast, - confirm + confirm, + dashboard, + ServerConnections }); } else { console.debug(`Loading plugin (via dynamic import): ${pluginSpec}`); diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 19cec8d88e..b55754f540 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -4,7 +4,7 @@ import globalize from '../../scripts/globalize'; import layoutManager from '../layoutManager'; import loading from '../loading/loading'; import scrollHelper from '../../scripts/scrollHelper'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-collapse/emby-collapse'; import '../../elements/emby-input/emby-input'; @@ -12,7 +12,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import '../formdialog.scss'; import './recordingcreator.scss'; import 'material-design-icons-iconfont'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import template from './recordingeditor.template.html'; diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index 4b912392ad..a666a49562 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -7,7 +7,7 @@ import recordingHelper from './recordinghelper'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import './recordingfields.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; import template from './recordingfields.template.html'; diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index a649b1231b..590c600e74 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -4,7 +4,7 @@ import layoutManager from '../layoutManager'; import loading from '../loading/loading'; import scrollHelper from '../../scripts/scrollHelper'; import datetime from '../../scripts/datetime'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-checkbox/emby-checkbox'; import '../../elements/emby-input/emby-input'; @@ -13,7 +13,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import '../formdialog.scss'; import './recordingcreator.scss'; import 'material-design-icons-iconfont'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import template from './seriesrecordingeditor.template.html'; diff --git a/src/components/search/SearchFields.tsx b/src/components/search/SearchFields.tsx index 68cf02f38d..8a0fa01dfd 100644 --- a/src/components/search/SearchFields.tsx +++ b/src/components/search/SearchFields.tsx @@ -7,7 +7,7 @@ import globalize from '../../scripts/globalize'; import 'material-design-icons-iconfont'; import '../../elements/emby-input/emby-input'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import './searchfields.scss'; import layoutManager from '../layoutManager'; import browser from '../../scripts/browser'; diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index 394ced6dcb..65aef222e9 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -7,7 +7,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import 'material-design-icons-iconfont'; import '../formdialog.scss'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import template from './sortmenu.template.html'; function onSubmit(e) { diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 1aa6d57fc6..b332e4238f 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -14,7 +14,7 @@ import '../formdialog.scss'; import 'material-design-icons-iconfont'; import './subtitleeditor.scss'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; import confirm from '../confirm/confirm'; diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 6cbced92d2..971b8c775d 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -13,7 +13,7 @@ import '../../elements/emby-select/emby-select'; import '../../elements/emby-slider/emby-slider'; import '../../elements/emby-input/emby-input'; import '../../elements/emby-checkbox/emby-checkbox'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import './subtitlesettings.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index 685b03997e..5f1f14ae9d 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -101,14 +101,16 @@
diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index d34fa40932..ca6f7a6e84 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -7,7 +7,7 @@ import '../listview/listview.scss'; import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-select/emby-select'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import './style.scss'; import Dashboard from '../../utils/dashboard'; import Events from '../../utils/events.ts'; diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 31bb695f3e..2a37fcbe45 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -8,7 +8,7 @@ import globalize from '../../scripts/globalize'; import itemHelper from '../itemHelper'; import './upnextdialog.scss'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; /* eslint-disable indent */ diff --git a/src/components/viewSettings/viewSettings.js b/src/components/viewSettings/viewSettings.js index 8dfa589aa2..f5cb864206 100644 --- a/src/components/viewSettings/viewSettings.js +++ b/src/components/viewSettings/viewSettings.js @@ -9,7 +9,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-select/emby-select'; import 'material-design-icons-iconfont'; import '../formdialog.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import template from './viewSettings.template.html'; function onSubmit(e) { diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 87704d406f..fd98d163e9 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -16,7 +16,7 @@ import imageHelper from '../../scripts/imagehelper'; import indicators from '../../components/indicators/indicators'; import '../../components/listview/listview.scss'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; import taskButton from '../../scripts/taskbutton'; import Dashboard from '../../utils/dashboard'; diff --git a/src/controllers/dashboard/logs.js b/src/controllers/dashboard/logs.js index aa6436962d..23a6d43853 100644 --- a/src/controllers/dashboard/logs.js +++ b/src/controllers/dashboard/logs.js @@ -3,7 +3,7 @@ import loading from '../../components/loading/loading'; import globalize from '../../scripts/globalize'; import '../../elements/emby-button/emby-button'; import '../../components/listview/listview.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import Dashboard from '../../utils/dashboard'; import alert from '../../components/alert'; diff --git a/src/controllers/dashboard/metadataimages.html b/src/controllers/dashboard/metadataimages.html index d0de7cb738..a407ae387b 100644 --- a/src/controllers/dashboard/metadataimages.html +++ b/src/controllers/dashboard/metadataimages.html @@ -26,7 +26,7 @@
${LabelDummyChapterDurationHelp}
- +
${LabelDummyChapterCountHelp}
diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 4c2c429829..c06043e472 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -22,7 +22,7 @@ import libraryMenu from '../../scripts/libraryMenu'; import globalize from '../../scripts/globalize'; import browser from '../../scripts/browser'; import { playbackManager } from '../../components/playback/playbackmanager'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-checkbox/emby-checkbox'; import '../../elements/emby-button/emby-button'; @@ -1063,7 +1063,7 @@ function renderTagline(page, item) { } } -function renderDetails(page, item, apiClient, context, isStatic) { +function renderDetails(page, item, apiClient, context) { renderSimilarItems(page, item, context); renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); @@ -1083,7 +1083,7 @@ function renderDetails(page, item, apiClient, context, isStatic) { } renderTags(page, item); - renderSeriesAirTime(page, item, isStatic); + renderSeriesAirTime(page, item); } function enableScrollX() { @@ -1262,7 +1262,7 @@ function renderSimilarItems(page, item, context) { } } -function renderSeriesAirTime(page, item, isStatic) { +function renderSeriesAirTime(page, item) { const seriesAirTime = page.querySelector('#seriesAirTime'); if (item.Type != 'Series') { seriesAirTime.classList.add('hide'); @@ -1281,19 +1281,6 @@ function renderSeriesAirTime(page, item, isStatic) { if (item.AirTime) { html += ' at ' + item.AirTime; } - if (item.Studios.length) { - if (isStatic) { - html += ' on ' + escapeHtml(item.Studios[0].Name); - } else { - const context = inferContext(item); - const href = appRouter.getRouteUrl(item.Studios[0], { - context: context, - itemType: 'Studio', - serverId: item.ServerId - }); - html += ' on ' + escapeHtml(item.Studios[0].Name) + ''; - } - } if (html) { html = (item.Status == 'Ended' ? 'Aired ' : 'Airs ') + html; seriesAirTime.innerHTML = html; diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index f2a63f3ecd..4deb2b713a 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -6,7 +6,7 @@ import globalize from '../../scripts/globalize'; import * as mainTabsManager from '../../components/maintabsmanager'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import imageLoader from '../../components/images/imageLoader'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-tabs/emby-tabs'; import '../../elements/emby-button/emby-button'; diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index d771464b1d..8b2b4bebc3 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -7,7 +7,7 @@ import layoutManager from '../components/layoutManager'; import loading from '../components/loading/loading'; import browser from '../scripts/browser'; import '../components/listview/listview.scss'; -import '../assets/css/flexstyles.scss'; +import '../styles/flexstyles.scss'; import '../elements/emby-itemscontainer/emby-itemscontainer'; import '../components/cardbuilder/card.scss'; import 'material-design-icons-iconfont'; diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 238b7a6d60..3ea00a9a8c 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -9,11 +9,11 @@ import imageLoader from '../../components/images/imageLoader'; import libraryMenu from '../../scripts/libraryMenu'; import * as mainTabsManager from '../../components/maintabsmanager'; import globalize from '../../scripts/globalize'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-tabs/emby-tabs'; import '../../elements/emby-button/emby-button'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import Dashboard from '../../utils/dashboard'; /* eslint-disable indent */ diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 19c1492d0e..cacea1a304 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -15,10 +15,10 @@ import { appHost } from '../../../components/apphost'; import layoutManager from '../../../components/layoutManager'; import * as userSettings from '../../../scripts/settings/userSettings'; import keyboardnavigation from '../../../scripts/keyboardNavigation'; -import '../../../assets/css/scrollstyles.scss'; +import '../../../styles/scrollstyles.scss'; import '../../../elements/emby-slider/emby-slider'; import '../../../elements/emby-button/paper-icon-button-light'; -import '../../../assets/css/videoosd.scss'; +import '../../../styles/videoosd.scss'; import ServerConnections from '../../../components/ServerConnections'; import shell from '../../../scripts/shell'; import SubtitleSync from '../../../components/subtitlesync/subtitlesync'; diff --git a/src/controllers/session/selectServer/index.js b/src/controllers/session/selectServer/index.js index 4665b2eba0..b45cb71060 100644 --- a/src/controllers/session/selectServer/index.js +++ b/src/controllers/session/selectServer/index.js @@ -10,7 +10,7 @@ import actionSheet from '../../../components/actionSheet/actionSheet'; import dom from '../../../scripts/dom'; import browser from '../../../scripts/browser'; import 'material-design-icons-iconfont'; -import '../../../assets/css/flexstyles.scss'; +import '../../../styles/flexstyles.scss'; import '../../../elements/emby-scroller/emby-scroller'; import '../../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../../components/cardbuilder/card.scss'; diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 1977b7cd4f..5d9b3e2e0b 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -9,7 +9,7 @@ import cardBuilder from '../../components/cardbuilder/cardBuilder'; import { playbackManager } from '../../components/playback/playbackmanager'; import * as mainTabsManager from '../../components/maintabsmanager'; import globalize from '../../scripts/globalize'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-button/emby-button'; import Dashboard from '../../utils/dashboard'; diff --git a/src/controllers/shows/tvupcoming.js b/src/controllers/shows/tvupcoming.js index 0c1be00a18..fa6be1f356 100644 --- a/src/controllers/shows/tvupcoming.js +++ b/src/controllers/shows/tvupcoming.js @@ -4,7 +4,7 @@ import datetime from '../../scripts/datetime'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import imageLoader from '../../components/images/imageLoader'; import globalize from '../../scripts/globalize'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; /* eslint-disable indent */ diff --git a/src/controllers/wizard/user/index.js b/src/controllers/wizard/user/index.js index 9d1f13ae31..d6647f7357 100644 --- a/src/controllers/wizard/user/index.js +++ b/src/controllers/wizard/user/index.js @@ -1,6 +1,6 @@ import loading from '../../../components/loading/loading'; import globalize from '../../../scripts/globalize'; -import '../../../assets/css/dashboard.scss'; +import '../../../styles/dashboard.scss'; import '../../../elements/emby-input/emby-input'; import '../../../elements/emby-button/emby-button'; import Dashboard from '../../../utils/dashboard'; diff --git a/src/elements/emby-tabs/emby-tabs.js b/src/elements/emby-tabs/emby-tabs.js index 723cb7e8fe..9455b5e1db 100644 --- a/src/elements/emby-tabs/emby-tabs.js +++ b/src/elements/emby-tabs/emby-tabs.js @@ -5,7 +5,7 @@ import browser from '../../scripts/browser'; import focusManager from '../../components/focusManager'; import layoutManager from '../../components/layoutManager'; import './emby-tabs.scss'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; /* eslint-disable indent */ const EmbyTabs = Object.create(HTMLDivElement.prototype); diff --git a/src/index.jsx b/src/index.jsx index b9a4d9603e..08b3bfada3 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -6,7 +6,7 @@ import 'intersection-observer'; import 'classlist.js'; import 'whatwg-fetch'; import 'resize-observer-polyfill'; -import './assets/css/site.scss'; +import './styles/site.scss'; import React, { StrictMode } from 'react'; import * as ReactDOM from 'react-dom'; import Events from './utils/events.ts'; @@ -24,7 +24,6 @@ import { appRouter, history } from './components/appRouter'; import './elements/emby-button/emby-button'; import './scripts/autoThemes'; import './scripts/libraryMenu'; -import './scripts/routes'; import './components/themeMediaPlayer'; import './scripts/autoBackdrops'; import { pageClassOn, serverAddress } from './utils/dashboard'; @@ -39,6 +38,10 @@ import { currentSettings } from './scripts/settings/userSettings'; import taskButton from './scripts/taskbutton'; import App from './App.tsx'; +import './styles/livetv.scss'; +import './styles/dashboard.scss'; +import './styles/detailtable.scss'; + function loadCoreDictionary() { const languages = ['af', 'ar', 'be-by', 'bg-bg', 'bn_bd', 'ca', 'cs', 'cy', 'da', 'de', 'el', 'en-gb', 'en-us', 'eo', 'es', 'es_419', 'es-ar', 'es_do', 'es-mx', 'et', 'eu', 'fa', 'fi', 'fil', 'fr', 'fr-ca', 'gl', 'gsw', 'he', 'hi-in', 'hr', 'hu', 'id', 'it', 'ja', 'kk', 'ko', 'lt-lt', 'lv', 'mr', 'ms', 'nb', 'nl', 'nn', 'pl', 'pr', 'pt', 'pt-br', 'pt-pt', 'ro', 'ru', 'sk', 'sl-si', 'sq', 'sv', 'ta', 'th', 'tr', 'uk', 'ur_pk', 'vi', 'zh-cn', 'zh-hk', 'zh-tw']; const translations = languages.map(function (language) { @@ -89,13 +92,13 @@ function onGlobalizeInit() { if (browser.tv && !browser.android) { console.debug('using system fonts with explicit sizes'); - import('./assets/css/fonts.sized.scss'); + import('./styles/fonts.sized.scss'); } else { console.debug('using default fonts'); - import('./assets/css/fonts.scss'); + import('./styles/fonts.scss'); } - import('./assets/css/librarybrowser.scss'); + import('./styles/librarybrowser.scss'); loadPlugins().then(onAppReady); } @@ -135,7 +138,7 @@ async function onAppReady() { console.debug('onAppReady: loading dependencies'); if (browser.iOS) { - import('./assets/css/ios.scss'); + import('./styles/ios.scss'); } Events.on(appHost, 'resume', () => { diff --git a/src/libraries/navdrawer/navdrawer.js b/src/libraries/navdrawer/navdrawer.js index bd27b6e55c..539682a076 100644 --- a/src/libraries/navdrawer/navdrawer.js +++ b/src/libraries/navdrawer/navdrawer.js @@ -6,7 +6,7 @@ import browser from '../../scripts/browser'; import dom from '../../scripts/dom'; import './navdrawer.scss'; -import '../../assets/css/scrollstyles.scss'; +import '../../styles/scrollstyles.scss'; import globalize from '../../scripts/globalize'; function getTouches(e) { diff --git a/src/libraries/scroller.js b/src/libraries/scroller.js index c388c52fe8..670a46f4b9 100644 --- a/src/libraries/scroller.js +++ b/src/libraries/scroller.js @@ -8,7 +8,7 @@ import layoutManager from '../components/layoutManager'; import dom from '../scripts/dom'; import focusManager from '../components/focusManager'; import ResizeObserver from 'resize-observer-polyfill'; -import '../assets/css/scrollstyles.scss'; +import '../styles/scrollstyles.scss'; import globalize from '../scripts/globalize'; /** diff --git a/src/routes/index.tsx b/src/routes/index.tsx index be24c811d8..06e3badaf3 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -4,7 +4,7 @@ import { Navigate, Route, Routes } from 'react-router-dom'; import { ASYNC_ADMIN_ROUTES, ASYNC_USER_ROUTES, toAsyncPageRoute } from './asyncRoutes'; import ConnectionRequired from '../components/ConnectionRequired'; import ServerContentPage from '../components/ServerContentPage'; -import { LEGACY_ADMIN_ROUTES, LEGACY_USER_ROUTES, toViewManagerPageRoute } from './legacyRoutes'; +import { LEGACY_ADMIN_ROUTES, LEGACY_PUBLIC_ROUTES, LEGACY_USER_ROUTES, toViewManagerPageRoute } from './legacyRoutes'; const AppRoutes = () => ( @@ -28,6 +28,8 @@ const AppRoutes = () => ( {/* Public routes */} }> } /> + + {LEGACY_PUBLIC_ROUTES.map(toViewManagerPageRoute)} {/* Suppress warnings for unhandled routes */} diff --git a/src/routes/legacyRoutes/index.tsx b/src/routes/legacyRoutes/index.tsx index b4e97250e9..8f498f98aa 100644 --- a/src/routes/legacyRoutes/index.tsx +++ b/src/routes/legacyRoutes/index.tsx @@ -21,4 +21,5 @@ export function toViewManagerPageRoute(route: LegacyRoute) { } export * from './admin'; +export * from './public'; export * from './user'; diff --git a/src/routes/legacyRoutes/public.ts b/src/routes/legacyRoutes/public.ts new file mode 100644 index 0000000000..0e05875520 --- /dev/null +++ b/src/routes/legacyRoutes/public.ts @@ -0,0 +1,81 @@ +import { LegacyRoute } from '.'; + +export const LEGACY_PUBLIC_ROUTES: LegacyRoute[] = [ + { + path: 'addserver.html', + pageProps: { + controller: 'session/addServer/index', + view: 'session/addServer/index.html' + } + }, + { + path: 'selectserver.html', + pageProps: { + controller: 'session/selectServer/index', + view: 'session/selectServer/index.html' + } + }, + { + path: 'login.html', + pageProps: { + controller: 'session/login/index', + view: 'session/login/index.html' + } + }, + { + path: 'forgotpassword.html', + pageProps: { + controller: 'session/forgotPassword/index', + view: 'session/forgotPassword/index.html' + } + }, + { + path: 'forgotpasswordpin.html', + pageProps: { + controller: 'session/resetPassword/index', + view: 'session/resetPassword/index.html' + } + }, + { + path: 'wizardremoteaccess.html', + pageProps: { + controller: 'wizard/remote/index', + view: 'wizard/remote/index.html' + } + }, + { + path: 'wizardfinish.html', + pageProps: { + controller: 'wizard/finish/index', + view: 'wizard/finish/index.html' + } + }, + { + path: 'wizardlibrary.html', + pageProps: { + controller: 'dashboard/library', + view: 'wizard/library.html' + } + }, + { + path: 'wizardsettings.html', + pageProps: { + controller: 'wizard/settings/index', + view: 'wizard/settings/index.html' + } + }, + { + path: 'wizardstart.html', + pageProps: { + controller: 'wizard/start/index', + view: 'wizard/start/index.html' + } + }, + { + path: 'wizarduser.html', + pageProps: { + controller: 'wizard/user/index', + view: 'wizard/user/index.html' + } + } +]; diff --git a/src/routes/user/userprofiles.tsx b/src/routes/user/userprofiles.tsx index 7d46593ff6..ff39fae33f 100644 --- a/src/routes/user/userprofiles.tsx +++ b/src/routes/user/userprofiles.tsx @@ -11,7 +11,7 @@ import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../../components/cardbuilder/card.scss'; import '../../components/indicators/indicators.scss'; -import '../../assets/css/flexstyles.scss'; +import '../../styles/flexstyles.scss'; import Page from '../../components/Page'; type MenuEntry = { diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 10a474798c..06624898d1 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -303,7 +303,7 @@ import { getParameterByName } from '../utils/url.ts'; updateEditorNode(this, item); }).on('pagebeforeshow', '.metadataEditorPage', function () { /* eslint-disable-next-line @babel/no-unused-expressions */ - import('../assets/css/metadataeditor.scss'); + import('../styles/metadataeditor.scss'); }).on('pagebeforeshow', '.metadataEditorPage', function () { const page = this; Dashboard.getCurrentUser().then(function (user) { diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 3afc730c33..92405f8fe3 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -22,8 +22,8 @@ import { getParameterByName } from '../utils/url.ts'; import '../elements/emby-button/paper-icon-button-light'; import 'material-design-icons-iconfont'; -import '../assets/css/scrollstyles.scss'; -import '../assets/css/flexstyles.scss'; +import '../styles/scrollstyles.scss'; +import '../styles/flexstyles.scss'; /* eslint-disable indent */ diff --git a/src/scripts/routes.js b/src/scripts/routes.js deleted file mode 100644 index f1574dd53e..0000000000 --- a/src/scripts/routes.js +++ /dev/null @@ -1,123 +0,0 @@ -import '../elements/emby-button/emby-button'; -import '../elements/emby-input/emby-input'; -import '../scripts/livetvcomponents'; -import '../elements/emby-button/paper-icon-button-light'; -import '../elements/emby-itemscontainer/emby-itemscontainer'; -import '../elements/emby-collapse/emby-collapse'; -import '../elements/emby-select/emby-select'; -import '../elements/emby-checkbox/emby-checkbox'; -import '../elements/emby-slider/emby-slider'; -import '../assets/css/livetv.scss'; -import '../components/listview/listview.scss'; -import '../assets/css/dashboard.scss'; -import '../assets/css/detailtable.scss'; -import { appRouter } from '../components/appRouter'; - -/* eslint-disable indent */ - - console.groupCollapsed('defining core routes'); - - function defineRoute(newRoute) { - const path = newRoute.alias ? newRoute.alias : newRoute.path; - console.debug('defining route: ' + path); - newRoute.dictionary = 'core'; - appRouter.addRoute(path, newRoute); - } - - defineRoute({ - alias: '/addserver.html', - path: 'session/addServer/index.html', - autoFocus: false, - anonymous: true, - startup: true, - controller: 'session/addServer/index' - }); - - defineRoute({ - alias: '/selectserver.html', - path: 'session/selectServer/index.html', - autoFocus: false, - anonymous: true, - startup: true, - controller: 'session/selectServer/index', - type: 'selectserver' - }); - - defineRoute({ - alias: '/login.html', - path: 'session/login/index.html', - autoFocus: false, - anonymous: true, - startup: true, - controller: 'session/login/index', - type: 'login' - }); - - defineRoute({ - alias: '/forgotpassword.html', - path: 'session/forgotPassword/index.html', - anonymous: true, - startup: true, - controller: 'session/forgotPassword/index' - }); - - defineRoute({ - alias: '/forgotpasswordpin.html', - path: 'session/resetPassword/index.html', - autoFocus: false, - anonymous: true, - startup: true, - controller: 'session/resetPassword/index' - }); - - defineRoute({ - alias: '/wizardremoteaccess.html', - path: 'wizard/remote/index.html', - autoFocus: false, - anonymous: true, - controller: 'wizard/remote/index' - }); - - defineRoute({ - alias: '/wizardfinish.html', - path: 'wizard/finish/index.html', - autoFocus: false, - anonymous: true, - controller: 'wizard/finish/index' - }); - - defineRoute({ - alias: '/wizardlibrary.html', - path: 'wizard/library.html', - autoFocus: false, - anonymous: true, - controller: 'dashboard/library' - }); - - defineRoute({ - alias: '/wizardsettings.html', - path: 'wizard/settings/index.html', - autoFocus: false, - anonymous: true, - controller: 'wizard/settings/index' - }); - - defineRoute({ - alias: '/wizardstart.html', - path: 'wizard/start/index.html', - autoFocus: false, - anonymous: true, - controller: 'wizard/start/index' - }); - - defineRoute({ - alias: '/wizarduser.html', - path: 'wizard/user/index.html', - controller: 'wizard/user/index', - autoFocus: false, - anonymous: true - }); - - console.groupEnd('defining core routes'); - -/* eslint-enable indent */ diff --git a/src/scripts/scrollHelper.js b/src/scripts/scrollHelper.js index 57c8f28fb7..725df86434 100644 --- a/src/scripts/scrollHelper.js +++ b/src/scripts/scrollHelper.js @@ -1,6 +1,6 @@ import focusManager from '../components/focusManager'; import dom from './dom'; -import '../assets/css/scrollstyles.scss'; +import '../styles/scrollstyles.scss'; function getBoundingClientRect(elem) { // Support: BlackBerry 5, iOS 3 (original iPhone) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 266b83683b..fab979dd48 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1689,5 +1689,16 @@ "LabelDummyChapterCountHelp": "Максімальная колькасць выяваў раздзелаў, якія будуць выняты для кожнага медыяфайла.", "LabelChapterImageResolution": "Дазвол:", "LabelChapterImageResolutionHelp": "Дазвол вынятых малюнкаў раздзелаў.", - "ResolutionMatchSource": "Супадзенне з крыніцай" + "ResolutionMatchSource": "Супадзенне з крыніцай", + "SecondarySubtitles": "Дадатковыя субтытры", + "SubtitleBlack": "Чорны", + "SubtitleBlue": "Сіні", + "SubtitleCyan": "Блакітны", + "SubtitleGray": "Шэры", + "SubtitleGreen": "Зялёны", + "SubtitleLightGray": "Светла-шэры", + "SubtitleMagenta": "Пурпурны", + "SubtitleRed": "Чырвоны", + "SubtitleWhite": "Белы", + "SubtitleYellow": "Жоўты" } diff --git a/src/strings/cs.json b/src/strings/cs.json index 839e85f4f7..369b0c17ca 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1703,5 +1703,16 @@ "LabelChapterImageResolutionHelp": "Rozližení extrahovaných obrázků kapitol.", "ResolutionMatchSource": "Stejné jako zdroj", "PreferEmbeddedExtrasTitlesOverFileNames": "Preferovat vložené názvy před názvy souborů pro doplňky", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit.", + "SecondarySubtitles": "Sekundární titulky", + "SubtitleBlack": "Černá", + "SubtitleBlue": "Modrá", + "SubtitleCyan": "Tyrkysová", + "SubtitleGray": "Šedá", + "SubtitleGreen": "Zelená", + "SubtitleLightGray": "Světle šedá", + "SubtitleMagenta": "Fialová", + "SubtitleRed": "Červená", + "SubtitleWhite": "Bílá", + "SubtitleYellow": "Žlutá" } diff --git a/src/strings/de.json b/src/strings/de.json index e874f5d420..89856057b3 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1688,5 +1688,21 @@ "DownloadAll": "Alle Herunterladen", "LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithmus", "StereoDownmixAlgorithmHelp": "Algorithmus um Mehrkanal-Audio zu Stereo-Audio umzuwandeln.", - "Experimental": "Experimentell" + "Experimental": "Experimentell", + "SaveRecordingNFO": "Speichern der EPG-Metadaten in NFO", + "SaveRecordingNFOHelp": "Speichern Sie Metadaten von EPG-Anbietern zusammen mit den Medien.", + "ResolutionMatchSource": "Quelle der Übereinstimmung", + "PreferEmbeddedExtrasTitlesOverFileNames": "Eingebettete Titel gegenüber Dateinamen für Extras bevorzugen", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras haben oft denselben eingebetteten Namen wie die übergeordnete Datei. Aktivieren Sie diese Option, um trotzdem eingebettete Titel für sie zu verwenden.", + "SaveRecordingImages": "Speichern der EPG-Bilder der Aufnahme", + "SaveRecordingImagesHelp": "Speichern Sie Bilder von EPG-Anbietern zusammen mit den Medien.", + "SecondarySubtitles": "Sekundäre Untertitel", + "HeaderDummyChapter": "Kapitel Bilder", + "HeaderRecordingMetadataSaving": "Aufzeichnung von Metadaten", + "LabelDummyChapterDuration": "Intervall:", + "LabelDummyChapterDurationHelp": "Das Intervall für die Extraktion des Kapitelbildes in Sekunden.", + "LabelDummyChapterCount": "Limit:", + "LabelDummyChapterCountHelp": "Die maximale Anzahl von Kapitelbildern, die für jede Mediendatei extrahiert werden.", + "LabelChapterImageResolution": "Auflösung:", + "LabelChapterImageResolutionHelp": "Die Auflösung der extrahierten Kapitelbilder." } diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index fd3cd5de27..a4e975a8a5 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1703,5 +1703,6 @@ "ResolutionMatchSource": "Match Source", "SaveRecordingNFO": "Save recording EPG metadata in NFO", "PreferEmbeddedExtrasTitlesOverFileNames": "Prefer embedded titles over filenames for extras", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway.", + "SecondarySubtitles": "Secondary Subtitles" } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 5ca842e8fa..61ed683ad1 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1462,10 +1462,20 @@ "Subtitle": "Subtitle", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Google Cast playback started by this device.", "SubtitleAppearanceSettingsDisclaimer": "Following settings do not apply to the graphical subtitles mentioned above or ASS/SSA subtitles that embed their own styles.", + "SubtitleBlack": "Black", + "SubtitleBlue": "Blue", + "SubtitleCyan": "Cyan", "SubtitleDownloadersHelp": "Enable and rank your preferred subtitle downloaders in order of priority.", + "SubtitleGray": "Gray", + "SubtitleGreen": "Green", + "SubtitleLightGray": "Light Gray", + "SubtitleMagenta": "Magenta", "SubtitleOffset": "Subtitle Offset", + "SubtitleRed": "Red", "Subtitles": "Subtitles", "SubtitleVerticalPositionHelp": "Line number where text appears. Positive numbers indicate top down. Negative numbers indicate bottom up.", + "SubtitleWhite": "White", + "SubtitleYellow": "Yellow", "Suggestions": "Suggestions", "Sunday": "Sunday", "Sync": "Sync", diff --git a/src/strings/eu.json b/src/strings/eu.json index e9fa50c682..bce8b4051f 100644 --- a/src/strings/eu.json +++ b/src/strings/eu.json @@ -129,7 +129,7 @@ "ValueCodec": "Kodeka: {0}", "ValueAudioCodec": "Audio-kodeka: {0}", "ValueAlbumCount": "{0} album", - "UserProfilesIntro": "Jellyfinek erabiltzaileen profilentzako euskarria barne hartzen du, eta erabiltzaile bakoitzak bere doikuntzak, ugaltze-egoera eta gurasoen kontrola izatea ahalbidetzen du.", + "UserProfilesIntro": "Jellyfinek erabiltzaileen profilentzako euskarria barne hartzen du, eta erabiltzaile bakoitzak bere ezarpenak, ugaltze-egoera eta gurasoen kontrola izatea ahalbidetzen du.", "UserAgentHelp": "Eman 'User-Agent' pertsonalizatutako http goiburu bat.", "UseEpisodeImagesInNextUpHelp": "\"Nobedadeak\" eta \"Ikusten jarraitu\" ataletan kapituluen irudiak agertuko dira miniatura gisa, seriearen miniatura nagusiaren ordez.", "UseEpisodeImagesInNextUp": "Erabili kapituluen irudiak \"Nobedadeak\" eta \"Ikusten jarraitu\" ataletan", @@ -188,7 +188,7 @@ "TabParentalControl": "Gurasoen kontrola", "TabOther": "Bestelakoak", "TabNotifications": "Jakinarazpenak", - "TabNfoSettings": "NFO doikuntzak", + "TabNfoSettings": "NFO ezarpenak", "TabNetworks": "Kate TB", "TabNetworking": "Sareak", "TabMyPlugins": "Nire osagarriak", @@ -212,7 +212,7 @@ "Subtitles": "Azpitituluak", "SubtitleOffset": "Azpitituluak lekualdatzea", "SubtitleDownloadersHelp": "Gaitu eta sailkatu hobetsitako azpitituluen deskargagailuak lehentasun-ordenaren arabera.", - "SubtitleAppearanceSettingsDisclaimer": "Ondorengo doikuntzak ez zaizkie aplikatuko aurretik aipatutako azpititulu grafikoei, ezta ASS/SSA azpitituluei ere, baldin eta beren estiloak badituzte.", + "SubtitleAppearanceSettingsDisclaimer": "Ondorengo ezarpenak ez zaizkie aplikatuko aurretik aipatutako azpititulu grafikoei, ezta ASS/SSA azpitituluei ere, baldin eta beren estiloak badituzte.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Doikuntza horiek gailu honek hasitako Chromecast edozein erreprodukziori ere aplikatzen zaizkio.", "Subtitle": "Azpititulua", "Studios": "Ikasketak", @@ -246,13 +246,13 @@ "SetUsingLastTracks": "Audioko/azpitituluetako pista aurreko itemarekin ezartzea", "SettingsWarning": "Balio horiek aldatzeak ezegonkortasuna edo konektagarritasun-akatsak eragin ditzake. Arazoren bat izanez gero, berriz ere bere balio lehenetsira aldatzea gomendatzen dizugu.", "SettingsSaved": "Konfigurazio gordea.", - "Settings": "Doikuntzak", + "Settings": "Ezarpenak", "ServerUpdateNeeded": "Zerbitzaria eguneratu egin behar da. Azken bertsioa deskargatzeko, bisitatu {0}", "ServerRestartNeededAfterPluginInstall": "Jellyfin berriz hasi beharko da osagarri bat instalatu ondoren.", "ServerNameIsShuttingDown": "{0}(e)ko zerbitzaria itzaltzen ari da.", "ServerNameIsRestarting": "{0}(e)ko zerbitzaria berrabiarazten ari da.", "SeriesYearToPresent": "{0} - Gaur egun", - "SeriesSettings": "Serie-doikuntzak", + "SeriesSettings": "Serie ezarpenak", "SeriesRecordingScheduled": "Programatutako serieak grabatzea.", "SeriesDisplayOrderHelp": "Ordenatu kapituluak jaulkipen-dataren, DVD-ordenaren edo zenbaki absolutuaren arabera.", "SeriesCancelled": "Serie ezeztatua.", @@ -911,7 +911,7 @@ "Hide": "Ezkutatu", "Help": "Laguntza", "HeaderYears": "Urteak", - "HeaderXmlSettings": "XML doikuntzak", + "HeaderXmlSettings": "XML ezarpenak", "HeaderXmlDocumentAttributes": "XML dokumentuaren atributuak", "HeaderXmlDocumentAttribute": "XML dokumentuaren atributua", "HeaderVideoTypes": "Bideo motak", @@ -953,7 +953,7 @@ "LibraryAccessHelp": "Aukeratu erabiltzaile honekin partekatu beharreko liburutegiak. Administratzaileek karpeta guztiak editatu ahal izango dituzte metadatuen kudeatzailea erabiliz.", "LeaveBlankToNotSetAPassword": "Hutsik utz dezakezu pasahitza ez konfiguratzeko.", "LearnHowYouCanContribute": "Ezagutu nola lagundu dezakezun.", - "LatestFromLibrary": "Duela gutxi {0} liburutegian", + "LatestFromLibrary": "Duela gutxi gehituta: {0}", "LastSeen": "Azkenekoz ikusita {0}", "Larger": "Handiagoa", "Large": "Handia", @@ -1113,7 +1113,7 @@ "HeaderSortOrder": "Agindua", "HeaderSortBy": "Ordenatu", "HeaderSetupLibrary": "Konfiguratu zure multimedia-liburutegiak", - "HeaderServerSettings": "Zerbitzariaren doikuntzak", + "HeaderServerSettings": "Zerbitzariaren ezarpenak", "HeaderServerAddressSettings": "Zerbitzariaren helbidea konfiguratzea", "HeaderSeriesStatus": "Serieen egoera", "HeaderSeriesOptions": "Serieen aukerak", @@ -1138,7 +1138,7 @@ "HeaderRemoteControl": "Urrutiko kontrola", "HeaderRemoteAccessSettings": "Urruneko sarbide-aukerak", "HeaderRecordingPostProcessing": "Prozesatu osteko grabazioa", - "HeaderRecordingOptions": "Grabazio-doikuntzak", + "HeaderRecordingOptions": "Grabazio ezarpenak", "HeaderRecentlyPlayed": "Duela gutxi erreproduzitua", "HeaderProfileServerSettingsHelp": "Balio horiek zerbitzaria bezeroei nola aurkeztuko zaien kontrolatzen dute.", "HeaderProfileInformation": "Profilari buruzko informazioa", @@ -1169,12 +1169,12 @@ "HeaderMyDevice": "Nire gailua", "HeaderMusicQuality": "Soinuaren kalitatea", "HeaderMoreLikeThis": "Hau bezalakoa", - "HeaderMetadataSettings": "Metadatuen doikuntzak", + "HeaderMetadataSettings": "Metadatuen ezarpenak", "HeaderMediaFolders": "Multimedia karpetak", "HeaderMedia": "Multimedia", "HeaderLoginFailure": "Saioaren hasierako akatsa", - "HeaderLiveTvTunerSetup": "Telebista-sintonizadorearen doikuntzak", - "HeaderLibrarySettings": "Liburutegiaren doikuntzak", + "HeaderLiveTvTunerSetup": "Telebista-sintonizadorearen ezarpenak", + "HeaderLibrarySettings": "Liburutegiaren ezarpenak", "HeaderLibraryOrder": "Liburutegiaren agindua", "HeaderLibraryFolders": "Liburutegiko karpetak", "HeaderLibraryAccess": "Liburutegirako sarbidea", @@ -1184,24 +1184,24 @@ "HeaderLatestMovies": "Azken filmak", "HeaderLatestMedia": "Berriki gehituak", "HeaderLatestEpisodes": "Azken kapituluak", - "HeaderKodiMetadataHelp": "NFO formatuko metadatuak aktibatu edo desaktibatu ditzakezu, liburutegi baten konfigurazioa irekiz eta metadatuen ataleko doikuntzak berrikusiz.", + "HeaderKodiMetadataHelp": "NFO formatuko metadatuak aktibatu edo desaktibatu ditzakezu, liburutegi baten konfigurazioa irekiz eta metadatuen ataleko ezarpenak berrikusiz.", "HeaderKeepSeries": "Serieak mantentzea", "HeaderKeepRecording": "Grabazioa mantendu", "HeaderInstantMix": "Bat-bateko nahasketa", "HeaderInstall": "Instalatu", - "HeaderImageSettings": "Irudi-doikuntzak", + "HeaderImageSettings": "Irudi ezarpenak", "HeaderImageOptions": "Irudi-aukerak", "HeaderIdentifyItemHelp": "Sartu bilaketa-parametro bat edo gehiago. Bilaketaren emaitzen kopurua handitzeko parametroak ezabatzen ditu.", "HeaderIdentificationHeader": "Identifikazio-goiburua", "HeaderIdentificationCriteriaHelp": "Gutxienez identifikazio-irizpide bat sartzen du.", "HeaderIdentification": "Identifikazioa", - "HeaderHttpsSettings": "https aukerak", - "HeaderHttpHeaders": "http buruak", + "HeaderHttpsSettings": "HTTPS aukerak", + "HeaderHttpHeaders": "HTTP buruak", "HeaderGuideProviders": "Gida-hornitzaileak", "HeaderFrequentlyPlayed": "Maiz erreproduzitua", "HeaderForKids": "Haurrentzat", "HeaderFetchImages": "Bilatu irudiak:", - "HeaderFetcherSettings": "Harrapatzailearen doikuntzak", + "HeaderFetcherSettings": "Harrapatzailearen ezarpenak", "HeaderFeatureAccess": "Sartzeko baimenak:", "HeaderExternalIds": "Kanpoko IDS:", "HeaderError": "Errorea", @@ -1421,8 +1421,8 @@ "DeleteAll": "Ezabatu dena", "Delete": "Ezabatu", "DeinterlaceMethodHelp": "Hautatu bihurketan zehar elkarri lotuta dagoen edukia askatzeko aplikatuko den iragazki mota. Lotura kentzeko hardware bidezko azelerazioa aktibatuta badago, iragazki horren ordez erabiliko da.", - "DefaultSubtitlesHelp": "Erabiliko diren azpitituluak fitxategien pistetan txertatutako metadatuen araberakoak izango dira (bai \"lehenetsita\" edo \"behartuta\"). Hizkuntza-doikuntzak kontuan hartzen dira hainbat aukera eskuragarri daudenean.", - "DefaultMetadataLangaugeDescription": "Hauek dira zure doikuntzak eta liburutegi bakoitzerako pertsonalizatu daitezke.", + "DefaultSubtitlesHelp": "Erabiliko diren azpitituluak fitxategien pistetan txertatutako metadatuen araberakoak izango dira (bai \"lehenetsita\" edo \"behartuta\"). Hizkuntza ezarpenak kontuan hartzen dira hainbat aukera eskuragarri daudenean.", + "DefaultMetadataLangaugeDescription": "Hauek dira zure ezarpenak eta liburutegi bakoitzerako pertsonalizatu daitezke.", "Default": "Lehenetsia", "DeathDateValue": "Hil egin zen: {0}", "DatePlayed": "Erreproduzitua", @@ -1455,7 +1455,7 @@ "ColorSpace": "Kolore-espazioa", "ColorPrimaries": "Kolore primarioak", "Collections": "Bildumak", - "ClientSettings": "Bezeroaren doikuntzak", + "ClientSettings": "Bezeroaren ezarpenak", "ClearQueue": "Ezabatu buztana", "CinemaModeConfigurationHelp": "Zinema moduak zinemaren esperientzia zuzenean ematen du bere aretoan, funtzio nagusiaren aurretik trailerrak eta sarrera pertsonalizatuak erreproduzitzeko gaitasunarekin.", "Channels": "Kanalak", @@ -1547,7 +1547,7 @@ "HeaderBranding": "Itxura pertsonalizatzea", "HeaderBlockItemsWithNoRating": "Baloraziorik gabeko edo ezezagunak diren artikuluak blokeatzea:", "HeaderAutoDiscovery": "Sarearen aurkikuntza", - "HeaderAudioSettings": "Audio-doikuntzak", + "HeaderAudioSettings": "Audio ezarpenak", "HeaderAudioBooks": "Audioliburuak", "HeaderAppearsOn": "Hemen agertzen da", "HeaderApp": "Aplikazioa", @@ -1626,5 +1626,9 @@ "ButtonSpace": "Hutsunea", "EnableRewatchingNextUp": "Gaitu berriz ikustea Nobedadeak atalekoentzat", "EnableRewatchingNextUpHelp": "Gaitu jada ikusitako kapituluak \"Nobedadeak\" atalean agertzea.", - "LabelMaxVideoResolution": "Onartutako bideo-transkodetzearen bereizmen maximoa:" + "LabelMaxVideoResolution": "Onartutako bideo-transkodetzearen bereizmen maximoa:", + "EnableCardLayout": "Erakutsi CardBox ikusgai", + "GoogleCastUnsupported": "Google Cast ez da bateragarria", + "Experimental": "Esperimentala", + "DownloadAll": "Deskargatu dena" } diff --git a/src/strings/fi.json b/src/strings/fi.json index 35b4abfc95..e35b229682 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -343,7 +343,7 @@ "LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)", "Identify": "Tunnista", "Horizontal": "Horisontaalinen", - "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Hiljattain lisätty media' -osiosta", + "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Viimeksi lisätty media' -osiosta", "HeaderUpcomingOnTV": "Tulossa televisiosta", "HeaderTypeImageFetchers": "Kuvien lataajat ({0}):", "HeaderTranscodingProfile": "Transkoodausprofiili", @@ -411,11 +411,11 @@ "HeaderMediaFolders": "Mediakansiot", "HeaderMedia": "Media", "HeaderLibraryFolders": "Kirjaston kansiot", - "HeaderLatestMedia": "Hiljattain lisätty media", - "HeaderLatestRecordings": "Hiljattain lisätyt tallenteet", - "HeaderLatestMusic": "Hiljattain lisätty musiikki", - "HeaderLatestMovies": "Hiljattain lisätyt elokuvat", - "HeaderLatestEpisodes": "Hiljattain lisätyt jaksot", + "HeaderLatestMedia": "Viimeksi lisätty media", + "HeaderLatestRecordings": "Viimeksi lisätyt tallenteet", + "HeaderLatestMusic": "Viimeksi lisätty musiikki", + "HeaderLatestMovies": "Viimeksi lisätyt elokuvat", + "HeaderLatestEpisodes": "Viimeksi lisätyt jaksot", "HeaderInstall": "Asenna", "HeaderFrequentlyPlayed": "Usein toistetut", "HeaderFetcherSettings": "Lataajan asetukset", @@ -562,7 +562,7 @@ "TabMyPlugins": "Omat lisäosat", "TabMusic": "Musiikki", "TabLogs": "Lokit", - "TabLatest": "Hiljattain lisätyt", + "TabLatest": "Viimeksi lisätyt", "TabDirectPlay": "Muuntamaton toisto", "TabDashboard": "Hallintapaneeli", "TabCatalog": "Luettelo", @@ -1264,7 +1264,7 @@ "LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.", "LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:", "MoreFromValue": "Lisää kohteesta {0}", - "LatestFromLibrary": "Hiljattain lisätty: '{0}'", + "LatestFromLibrary": "Viimeksi lisätty: {0}", "LabelVideoRange": "Videon alue:", "LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.", "LabelUserRemoteClientBitrateLimitHelp": "Korvaa globaali arvo asetusten kohdasta Ohjauspaneeli > Toisto > Suoratoisto.", @@ -1696,5 +1696,6 @@ "LabelChapterImageResolutionHelp": "Purettujen kappalekuvien resoluutio.", "ResolutionMatchSource": "Vastaa lähdettä", "PreferEmbeddedExtrasTitlesOverFileNames": "Suosi lisämateriaaleille upotettuja otsikoita tiedostonimien sijaan", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita.", + "SecondarySubtitles": "Toissijaiset tekstitykset" } diff --git a/src/strings/fr.json b/src/strings/fr.json index d742a3d561..e26cc1a0c0 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1703,5 +1703,16 @@ "LabelDummyChapterDuration": "Intervalle :", "LabelDummyChapterCountHelp": "Nombre maximal d’images de chapitre à extraire pour chaque fichier multimédia.", "PreferEmbeddedExtrasTitlesOverFileNames": "Préférer les titres intégrés aux médias pour les bonus", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit.", + "SecondarySubtitles": "Sous-titres secondaires", + "SubtitleBlack": "Noir", + "SubtitleBlue": "Bleu", + "SubtitleCyan": "Cyan", + "SubtitleGray": "Gris", + "SubtitleGreen": "Vert", + "SubtitleLightGray": "Gris clair", + "SubtitleMagenta": "Magenta", + "SubtitleRed": "Rouge", + "SubtitleWhite": "Blanc", + "SubtitleYellow": "Jaune" } diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 46c2072174..32dd0870a8 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -141,5 +141,11 @@ "ButtonSubmit": "प्रस्तुत करें", "ButtonTogglePlaylist": "प्लेलिस्ट", "ButtonUninstall": "ऐप हटाएं", - "ButtonTrailer": "ट्रेलर" + "ButtonTrailer": "ट्रेलर", + "Large": "बड़ा", + "Small": "छोटा", + "Normal": "सामान्य", + "Songs": "गाने", + "Larger": "और बड़ा", + "ListPaging": "{2} का {0}-{1}" } diff --git a/src/strings/hu.json b/src/strings/hu.json index e83e7516b2..117a166d8a 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -107,9 +107,9 @@ "HeaderIdentifyItemHelp": "Adj meg egy vagy több keresési kritériumot. Távolítsd el a kritériumokat a keresési eredmények növelése érdekében.", "HeaderImageSettings": "Kép beállítások", "HeaderInstall": "Telepítés", - "HeaderLatestEpisodes": "Legújabb epizódok", - "HeaderLatestMedia": "Legújabb média", - "HeaderLatestMovies": "Legújabb filmek", + "HeaderLatestEpisodes": "Nemrég hozzáadott epizódok", + "HeaderLatestMedia": "Nemrég hozzáadott tartalmak", + "HeaderLatestMovies": "Nemrég hozzáadott filmek", "HeaderLibraries": "Könyvtárak", "HeaderLibraryAccess": "Könyvtár hozzáférés", "HeaderLibraryFolders": "Médiatár mappák", @@ -156,7 +156,7 @@ "HeaderVideos": "Videók", "HeaderYears": "Év", "Help": "Súgó", - "HideWatchedContentFromLatestMedia": "A megtekintett tartalom elrejtése a \"Legújabb Média\"-ból", + "HideWatchedContentFromLatestMedia": "A megtekintett tartalom elrejtése a \"Nemrég hozzáadott felvételek\"-ből", "Home": "Kezdőlap", "Identify": "Azonosítás", "Images": "Képek", @@ -395,7 +395,7 @@ "TabCodecs": "Kódek", "TabContainers": "Tároló", "TabDashboard": "Vezérlőpult", - "TabLatest": "Legújabb", + "TabLatest": "Nemrég hozzáadott", "TabLogs": "Naplók", "TabMusic": "Zene", "TabMyPlugins": "Telepített bővítmények", @@ -519,7 +519,7 @@ "Disc": "Lemez", "Disconnect": "Bontás", "DisplayInMyMedia": "Megjelenítés a kezdőképernyőn", - "DisplayInOtherHomeScreenSections": "Megjelenítés a kezdőképernyőn, mint például a 'Legújabb Média', és a 'Folyamatban lévő filmek'", + "DisplayInOtherHomeScreenSections": "Megjelenítés a kezdőképernyőn, mint például a 'Nemrég hozzáadott', és a 'Korábban megtekintett'", "DisplayModeHelp": "Válaszd ki a használni kívánt elrendezést.", "DoNotRecord": "Ne rögzítsen", "DownloadsValue": "{0} letöltés", @@ -604,8 +604,8 @@ "HeaderInstantMix": "Azonnali keverés", "HeaderKeepRecording": "Felvétel készítése", "HeaderKodiMetadataHelp": "Az NFO-metaadatok engedélyezéséhez vagy letiltásához szerkesszen egy könyvtárat, és keresse meg a „Metaadat-mentők” részt.", - "HeaderLatestMusic": "Legújabb zenék", - "HeaderLatestRecordings": "Legújabb felvételek", + "HeaderLatestMusic": "Nemrég hozzáadott zenék", + "HeaderLatestRecordings": "Nemrég hozzáadott felvételek", "HeaderLoginFailure": "Bejelentkezési hiba", "HeaderMusicQuality": "Zene minősége", "HeaderNewApiKey": "Új API kulcs", @@ -1510,7 +1510,7 @@ "Framerate": "Képkockasebesség", "DirectPlayHelp": "A forrásfájl teljes mértékben kompatibilis ezzel az klienssel, és a munkamenet módosítások nélkül fogadja a fájlt.", "HeaderContinueReading": "Olvasás folytatása", - "EnableGamepadHelp": "Figyeljen bármilyen csatlakoztatott kontroller bemenetére.", + "EnableGamepadHelp": "Figyeljen bármilyen csatlakoztatott bemenetre. (Szükséges: TV megjelenítési mód)", "LabelEnableGamepad": "Engedélyezze a Gamepad-ot", "Controls": "Vezérlők", "TextSent": "Szöveg elküldve.", @@ -1685,5 +1685,30 @@ "MessageNoItemsAvailable": "Jelenleg nincs elérhető elem.", "MessageNoFavoritesAvailable": "Jelenleg nincs elérhető kedvenc.", "Unreleased": "Még nem jelent meg", - "DownloadAll": "Összes letöltése" + "DownloadAll": "Összes letöltése", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Beágyazott címek használata.", + "SaveRecordingNFO": "A rögzített EPG metaadatok mentése NFO-ba", + "SubtitleBlack": "Fekete", + "SubtitleBlue": "Kék", + "SubtitleCyan": "Cián", + "SubtitleGray": "Szürke", + "SubtitleGreen": "Zöld", + "SubtitleLightGray": "Világos szürke", + "SubtitleMagenta": "Bíborvörös", + "SubtitleRed": "Piros", + "SubtitleWhite": "Fehér", + "SubtitleYellow": "Sárga", + "SecondarySubtitles": "Másodlagos feliratok", + "StereoDownmixAlgorithmHelp": "Többcsatornás hangot sztereóvá keverő algoritmus használata.", + "LabelDummyChapterCountHelp": "Az egyes médiafájlokból kibontható fejezetképek maximális száma.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Részesítse előnyben a beágyazott címeket a fájlnevekkel szemben", + "SaveRecordingImages": "Rögzített EPG-képek mentése", + "Experimental": "Tapasztalati", + "LabelStereoDownmixAlgorithm": "Térhatású csatornák egyesítése", + "HeaderDummyChapter": "Fejezetképek", + "HeaderRecordingMetadataSaving": "Metaadatok rögzítése", + "LabelDummyChapterDuration": "Intervallum:", + "LabelDummyChapterCount": "Határvonal:", + "LabelChapterImageResolution": "Felbontás:", + "LabelChapterImageResolutionHelp": "A kinyert fejezetképek felbontása." } diff --git a/src/strings/it.json b/src/strings/it.json index 1a325f784e..3ccb4247ad 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -137,7 +137,7 @@ "Disconnect": "Disconnetti", "Display": "Schermo", "DisplayInMyMedia": "Visualizza nella schermata di home", - "DisplayInOtherHomeScreenSections": "Mostra le sezioni della schermata home come 'Ultimi media' e 'Continua a guardare'", + "DisplayInOtherHomeScreenSections": "Visualizza nelle sezioni della schermata iniziale come \"Media aggiunti di recente\" e \"Continua a guardare\"", "DisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni", "DisplayMissingEpisodesWithinSeasonsHelp": "Questo deve anche essere abilitato per le librerie TV nella configurazione del server.", "DisplayModeHelp": "Seleziona lo stile del layout che vuoi per l'interfaccia.", diff --git a/src/strings/mg.json b/src/strings/mg.json new file mode 100644 index 0000000000..54e2956c06 --- /dev/null +++ b/src/strings/mg.json @@ -0,0 +1,42 @@ +{ + "Add": "Manampy", + "AddToPlaylist": "Ampiana ao amin'ny playlist", + "AddToPlayQueue": "Ampiana ao amin'ny filaharana", + "AirDate": "Daty fandefasana", + "Aired": "Nalefa", + "AlbumArtist": "Artista tompon'ny Album", + "Alerts": "Lakolosy", + "AllChannels": "Fahitalavitra rehetra", + "AllowMediaConversion": "Avela hiasa hanao famadiahana format", + "AllowEmbeddedSubtitlesAllowNoneOption": "Tsy asiana mihitsy", + "AllowEmbeddedSubtitlesAllowTextOption": "Asiana soratra", + "Absolute": "Feno", + "AccessRestrictedTryAgainLater": "Voafetra ny fidirana amin'izao fotoana izao. Andramo indray afaka fotoana fohy.", + "Actor": "Mpilalao", + "AddedOnValue": "Nampiana", + "AdditionalNotificationServices": "Tsidiho ny katalaogin'ny plugin raha hanampy serivisy fampahafantarana fanampiny.", + "AddToCollection": "Ampiana ao amin'ny fitahirizana", + "AddToFavorites": "Ampiana ao amin'ireo ankafihizina", + "AgeValue": "({0} taona)", + "Album": "Album", + "Albums": "Albums", + "All": "Rehetra", + "AllComplexFormats": "Ireo endrika sarotra rehetra (ASS, SSA, VobSub, PGS, SUB, IDX, …)", + "AllEpisodes": "Fizaràna rehetra", + "AllLanguages": "Tenim-pirenena rehetra", + "AllLibraries": "Tahiry rehetra", + "AllowedRemoteAddressesHelp": "Lisitry ny adiresy IP na IP/netmask nosarahan'ny faingo ho an'ny tambajotra izay avela hifandray lavitra. Raha avela ho banga dia afaka miditra avokoa ny IP rehetra.", + "AllowEmbeddedSubtitles": "Atsahatra ny karazana dikanteny ao anatiny", + "AllowEmbeddedSubtitlesAllowAllOption": "Avela malalaka", + "AllowEmbeddedSubtitlesAllowImageOption": "Asiana sary", + "AllowEmbeddedSubtitlesHelp": "Atsahatra ny dikanteny raikitra ao anaty media. Mila fanavaozana ny tahiry rehetra.", + "AllowFfmpegThrottling": "Ahena ny asa famadihana format", + "AllowFfmpegThrottlingHelp": "Rehefa lasa lavitra mihoatra ny playback ny asa famadihana format dia atsahatra kely ny fampiasana CPU. Tena ilaina izany rehefa mijery fotsiny fa tsy mandingana na mamerina matetika. Aza alefa raha mahita olana amin'ny playback.", + "AllowHevcEncoding": "Avela hamadika format HEVC", + "AllowHWTranscodingHelp": "Avela ny tuner hiasa sady mamadika format. Mety hanampy amin'ny fampihenana ny asa takian'ny serveur izany.", + "AllowMediaConversionHelp": "Avela na lavina ny fidirana amin'ny asa famadihana format.", + "AllowOnTheFlySubtitleExtraction": "Avela hamaky dikanteny eny ampandehanana.", + "AllowOnTheFlySubtitleExtractionHelp": "Azo alaina avy amin'ilay video ny dikanteny ao anatiny ary aseho amin'ny soratra tsotra, mba hisorohana ny famadihana video. Mety haharitra ela izany ka hampiato ny famakiana horonan-tsary mandritra ny dingan'ny fitrandrahana. Atsaharo raha avela ho dikanteny miaraka amin'ny famadihana horonan-tsary.", + "AllowRemoteAccess": "Avela hifandray amin'ny hafa ity serveur ity", + "AllowRemoteAccessHelp": "Raha tsy marihina dia ho voasakana ny fifandraisana lavitra rehetra." +} diff --git a/src/strings/nl.json b/src/strings/nl.json index 543962164b..1d40cce4f7 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -366,7 +366,7 @@ "HeaderTranscodingProfile": "Direct Afspelen Profiel", "HeaderTranscodingProfileHelp": "Transcoding profielen toevoegen om aan te geven welke indelingen moeten worden gebruikt wanneer transcoding vereist is.", "HeaderTunerDevices": "Tuner apparaten", - "HeaderTypeImageFetchers": "Afbeelding downloaders ({0}):", + "HeaderTypeImageFetchers": "Ophalers afbeeldingen ({0}):", "HeaderTypeText": "Voer tekst in", "HeaderUpcomingOnTV": "Binnenkort op tv", "HeaderUploadImage": "Afbeelding Uploaden", @@ -504,7 +504,7 @@ "LabelHardwareAccelerationType": "Hardware acceleratie:", "LabelHardwareAccelerationTypeHelp": "Hardwarematige versnelling vereist extra configuratie.", "LabelHomeNetworkQuality": "Thuisnetwerk kwaliteit:", - "LabelHomeScreenSectionValue": "Beginscherm sectie {0}:", + "LabelHomeScreenSectionValue": "Beginschermsectie {0}:", "LabelHttpsPort": "Lokale HTTPS poort nummer:", "LabelHttpsPortHelp": "Het TCP poort nummer voor de HTTPS server.", "LabelIconMaxHeight": "Pictogram maximum hoogte:", @@ -735,7 +735,7 @@ "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze API-sleutel in wilt trekken? De verbinding van de applicatie met deze server zal plotseling verbroken worden.", "MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?", "MessageContactAdminToResetPassword": "Neem contact op met de serverbeheerder om uw wachtwoord te resetten.", - "MessageCreateAccountAt": "Maak een account bij {0}", + "MessageCreateAccountAt": "Account aanmaken bij {0}", "MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?", "MessageDirectoryPickerBSDInstruction": "Voor BSD moet u mogelijk de opslag in uw FreeNAS Jail opzetten, zodat Jellyfin toegang heeft tot uw media.", "MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.", @@ -928,8 +928,8 @@ "Raised": "Verhoogd", "Rate": "Waardeer", "RecentlyWatched": "Onlangs bekeken", - "RecommendationBecauseYouLike": "Omdat u {0} leuk vond", - "RecommendationBecauseYouWatched": "Omdat u keek naar {0}", + "RecommendationBecauseYouLike": "Omdat je {0} leuk vindt", + "RecommendationBecauseYouWatched": "Omdat je keek naar {0}", "RecommendationDirectedBy": "Geregisseerd door {0}", "RecommendationStarring": "In de hoofdrollen {0}", "Record": "Opnemen", @@ -991,7 +991,7 @@ "Shuffle": "Willekeurig", "SimultaneousConnectionLimitHelp": "Het maximum aantal toegestane gelijktijdige streams. Geef 0 in voor geen limiet.", "SkipEpisodesAlreadyInMyLibrary": "Neem geen afleveringen op die al in mijn bibliotheek aanwezig zijn", - "SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoen en aflevering nummers, indien beschikbaar.", + "SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoens- en afleveringsnummers, indien beschikbaar.", "Small": "Klein", "SmallCaps": "Kleine letters", "Smaller": "Kleiner", @@ -1059,7 +1059,7 @@ "ValueConditions": "Voorwaarden: {0}", "ValueEpisodeCount": "{0} afleveringen", "ValueMovieCount": "{0} films", - "ValueMusicVideoCount": "{0} muziek video's", + "ValueMusicVideoCount": "{0} muziekvideo's", "ValueOneEpisode": "1 aflevering", "ValueOneMovie": "1 film", "ValueOneMusicVideo": "1 muziekvideo", @@ -1265,7 +1265,7 @@ "EveryXMinutes": "Elke {0} minuten", "OnWakeFromSleep": "Op het wakker worden vanuit slaapstand", "WeeklyAt": "{0}s op {1}", - "DailyAt": "Dagelijks op {0}", + "DailyAt": "Dagelijks om {0}", "LastSeen": "Laatst gezien {0}", "PersonRole": "als {0}", "ListPaging": "{0}-{1} van de {2}", @@ -1292,7 +1292,7 @@ "MessageSyncPlayGroupDoesNotExist": "Kan niet deelnemen aan de groep omdat deze niet bestaat.", "MessageSyncPlayPlaybackPermissionRequired": "Afspeelrechten vereist.", "MessageSyncPlayGroupWait": "{0} is aan het bufferen…", - "MessageSyncPlayUserLeft": "{0} i heeft de groep verlaten.", + "MessageSyncPlayUserLeft": "{0} heeft de groep verlaten.", "MessageSyncPlayUserJoined": "{0} is lid geworden van de groep.", "MessageSyncPlayDisabled": "SyncPlay uitgeschakeld.", "MessageSyncPlayEnabled": "SyncPlay ingeschakeld.", @@ -1702,5 +1702,16 @@ "HeaderDummyChapter": "Hoofdstukafbeeldingen", "LabelDummyChapterDurationHelp": "De extractieinterval voor hoofdstukafbeeldingen in seconden.", "ResolutionMatchSource": "Gelijk aan bron", - "HeaderRecordingMetadataSaving": "Metadata opname" + "HeaderRecordingMetadataSaving": "Metadata opname", + "SecondarySubtitles": "Secundaire ondertiteling", + "SubtitleBlack": "Zwart", + "SubtitleBlue": "Blauw", + "SubtitleCyan": "Cyaan", + "SubtitleGray": "Grijs", + "SubtitleGreen": "Groen", + "SubtitleLightGray": "Lichtgrijs", + "SubtitleMagenta": "Magenta", + "SubtitleRed": "Rood", + "SubtitleWhite": "Wit", + "SubtitleYellow": "Geel" } diff --git a/src/strings/sk.json b/src/strings/sk.json index 282b1f0f8b..64bac51b24 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -173,11 +173,11 @@ "HeaderImageSettings": "Nastavenia obrázkov", "HeaderInstall": "Inštalovať", "HeaderInstantMix": "Okamžitý mix", - "HeaderLatestEpisodes": "Najnovšie epizódy", - "HeaderLatestMedia": "Najnovšie médiá", - "HeaderLatestMovies": "Najnovšie filmy", - "HeaderLatestMusic": "Najnovšia hudba", - "HeaderLatestRecordings": "Najnovšie nahrávky", + "HeaderLatestEpisodes": "Najnovšie pridané epizódy", + "HeaderLatestMedia": "Najnovšie pridané médiá", + "HeaderLatestMovies": "Najnovšie pridané filmy", + "HeaderLatestMusic": "Najnovšia pridaná hudba", + "HeaderLatestRecordings": "Najnovšie pridané nahrávky", "HeaderLibraries": "Knižnice", "HeaderLibraryAccess": "Prístup ku knižnici", "HeaderLibraryFolders": "Priečinky knižnice", @@ -659,7 +659,7 @@ "TabCodecs": "Kodeky", "TabContainers": "Kontajnery", "TabDashboard": "Dashboard", - "TabLatest": "Najnovšie", + "TabLatest": "Najnovšie pridané", "TabMusic": "Hudba", "TabMyPlugins": "Moje zásuvné moduly", "TabNetworks": "TV Siete", @@ -723,7 +723,7 @@ "ButtonRevoke": "Odvolať", "ButtonSelectView": "Výber zobrazenia", "CancelRecording": "Zrušiť nahrávanie", - "AirDate": "Dátum vysielania", + "AirDate": "Dátum prvého vysielania", "Aired": "Odvysielané", "Alerts": "Upozornenia", "AllowOnTheFlySubtitleExtraction": "Povoliť extrahovanie titulkov za behu", @@ -968,7 +968,7 @@ "EnableStreamLooping": "Autom. slučka živého vysielania", "EnableExternalVideoPlayersHelp": "Ponuka externého prehrávača sa zobrazí pri spustení prehrávania videa.", "EnableBackdropsHelp": "Zobraziť pozadia pre niektoré stránky pri prechádzaní knižnice.", - "DisplayInOtherHomeScreenSections": "Zobraziť v sekciách domovskej obrazovky, ako sú najnovšie médiá a pokračovať v pozeraní", + "DisplayInOtherHomeScreenSections": "Zobraziť 'Najnovšie pridané médiá' a 'Pokračovať v pozeraní' v sekciách domovskej obrazovky", "DirectStreamHelp1": "Video je kompatibilné zo zariadením, ale zvuková stopa je v nekompatibilnom formáte (DTS, Dolby TrueHD, atď.) alebo má nekompatibilný počet kanálov. Video bude pred odoslaním do zariadenia za behu bezstrátovo prebalené. Iba zvuk bude prekódovaný.", "Depressed": "Stlačený", "DefaultSubtitlesHelp": "Titulky sú načítané v závislosti od predvolených a vynútených nastavení vo vložených metadátach. Jazykové predvoľby sú zobrané do úvahy až vtedy, keď je k dispozícií viacero možností.", @@ -1701,5 +1701,6 @@ "LabelDummyChapterDurationHelp": "Interval extrakcie obrázkov kapitol v sekundách.", "SaveRecordingNFO": "Uložiť metadáta nahrávky zo sprievodcu EPG do NFO", "SaveRecordingImagesHelp": "Uloží obrázky z EPG položiek sprievodcu spolu s médiami.", - "HeaderRecordingMetadataSaving": "Metadáta nahrávok" + "HeaderRecordingMetadataSaving": "Metadáta nahrávok", + "SecondarySubtitles": "Sekundárne titulky" } diff --git a/src/strings/vi.json b/src/strings/vi.json index ad55122705..c52f73cf88 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -14,20 +14,20 @@ "FileNotFound": "Không tìm thấy tệp tin.", "FileReadCancelled": "Tệp đọc đã bị hủy.", "FileReadError": "Có một lỗi xảy ra khi đọc tệp tin này.", - "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", + "HeaderCustomDlnaProfiles": "Cấu Hình Tùy Chỉnh", "HeaderFeatureAccess": "Truy cập tính năng:", "HeaderFrequentlyPlayed": "Phát thường xuyên", "HeaderLatestEpisodes": "Tập Phim Thêm Gần Đây", "HeaderLatestMovies": "Phim Thêm Gần Đây", "HeaderRecentlyPlayed": "Phát gần đây", "HeaderStatus": "Trạng thái", - "HeaderSystemDlnaProfiles": "Hồ sơ hệ thống", + "HeaderSystemDlnaProfiles": "Cấu Hình Hệ Thống", "HeaderUsers": "Người dùng", "LabelAudioLanguagePreference": "Ngôn ngữ thoại ưa thích:", "LabelCountry": "Quốc gia:", "LabelCurrentPassword": "Mật khẩu hiện tại:", "LabelDay": "Ngày trong tuần:", - "LabelEnableDlnaPlayTo": "Bật tính năng 'Phát tới' DLNA", + "LabelEnableDlnaPlayTo": "Bật tính năng 'Phát Với' DLNA", "LabelEvent": "Sự kiện:", "LabelFinish": "Xong", "LabelLanguage": "Ngôn ngữ:", @@ -175,7 +175,7 @@ "DeathDateValue": "Đã chết: {0}", "DatePlayed": "Ngày phát", "DateAdded": "Ngày thêm", - "CustomDlnaProfilesHelp": "Tạo một bộ thiết lập tuỳ chọn dành cho một thiết bị mới hoặc thay thế một thiết lập hệ thống.", + "CustomDlnaProfilesHelp": "Tạo cấu hình tùy chỉnh nhắm đến thiết bị mới hoặc ghi đè cấu hình hệ thống.", "CriticRating": "Đánh giá của nhà phê bình", "CopyStreamURLSuccess": "Đã sao chép URL thành công.", "CopyStreamURL": "Sao chép URL luồng phát", @@ -254,7 +254,7 @@ "HeaderDateIssued": "Ngày Phát Hành", "HeaderContinueWatching": "Xem Tiếp", "HeaderContinueListening": "Tiếp Tục Nghe", - "HeaderCodecProfileHelp": "Hồ sơ mã hóa chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được cấu hình để phát lại trực tiếp.", + "HeaderCodecProfileHelp": "Cấu hình mã hóa cho biết các giới hạn của thiết bị khi phát các bộ mã hóa. Nếu giới hạn được áp dụng thì phương tiện sẽ được chuyển mã, ngay cả khi bộ mã hóa được cấu hình để phát lại trực tiếp.", "HeaderContainerProfileHelp": "Cấu hình vùng chứa cho biết các giới hạn của thiết bị khi phát các định dạng cụ thể. Nếu giới hạn được áp dụng thì phương tiện sẽ được chuyển mã, ngay cả khi định dạng được định cấu hình để phát lại trực tiếp.", "HeaderContainerProfile": "Hồ Sơ Định Dạng", "HeaderConnectionFailure": "Kế Nối Thất Bại", @@ -452,9 +452,9 @@ "HeaderTracks": "Bản ghi", "HeaderThisUserIsCurrentlyDisabled": "Người dùng này hiện tại đang bị khoá", "HeaderTaskTriggers": "Kích Hoạt Tác Vụ", - "HeaderSubtitleProfilesHelp": "Hồ sơ phụ đề chỉ ra những định dạng phụ đề được hỗ trợ bởi thiết bị phát.", - "HeaderSubtitleProfiles": "Hồ Sơ Phụ Đề", - "HeaderSubtitleProfile": "Hồ Sơ Phụ Đề", + "HeaderSubtitleProfilesHelp": "Cấu hình phụ đề chỉ ra những định dạng phụ đề được hỗ trợ bởi thiết bị phát.", + "HeaderSubtitleProfiles": "Cấu Hình Phụ Đề", + "HeaderSubtitleProfile": "Cấu Hình Phụ Đề", "HeaderSubtitleDownloads": "Tải Phụ Đề", "HeaderSubtitleAppearance": "Giao Diện Phụ Đề", "HeaderStopRecording": "Ngừng Ghi Hình/Ghi Âm", @@ -503,7 +503,7 @@ "LabelAlbumArtPN": "Bìa Tuyển Tập PN:", "LabelAlbumArtMaxWidth": "Chiều rộng tối đa bìa tuyển tập:", "LabelAlbumArtMaxHeight": "Chiều cao tối đa bìa tuyển tập:", - "LabelAlbumArtHelp": "PN được sử dụng cho bìa tuyển tập, trong 'dlna:profileID' thuộc tính upnp:albumArtURI. Một vài thiết bị phát cần một giá trị đặc biệt, không ảnh hưởng đến kích thước của hình ảnh.", + "LabelAlbumArtHelp": "PN được dùng cho ảnh bìa album, trong thuộc tính 'dlna:profileID' trên 'upnp:albumArtURI'. Một số thiết bị yêu cầu một giá trị cụ thể, bất kể kích thước của hình ảnh.", "LabelAlbum": "Tuyển Tập:", "LabelAirsBeforeSeason": "Phát sóng trước phần:", "LabelAirsBeforeEpisode": "Phát sóng trước tập:", @@ -544,8 +544,8 @@ "HeaderTypeImageFetchers": "Trình tìm nạp hình ảnh ({0}):", "HeaderTuners": "Bộ Điều Khiển Thu Phát Sóng", "HeaderTunerDevices": "Thiết Bị Dò", - "HeaderTranscodingProfileHelp": "Thêm hồ sơ chuyển mã để chỉ ra những định dạng nên dùng khi cần chuyển mã.", - "HeaderTranscodingProfile": "Hồ Sơ Chuyển Mã", + "HeaderTranscodingProfileHelp": "Thêm cấu hình chuyển mã để cho biết định dạng nào sẽ được sử dụng khi cần chuyển mã.", + "HeaderTranscodingProfile": "Cấu Hình Chuyển Mã", "LabelEnableAutomaticPortMap": "Kích hoạt tính năng tự động kết nối các port", "LabelEmbedAlbumArtDidlHelp": "Một số thiết bị thích cách này hơn để tải ảnh bìa album. Số khác có thể bị lỗi nếu tuỳ chọn này được bật.", "LabelEmbedAlbumArtDidl": "Bìa tuyển tập trong DIDL", @@ -567,7 +567,7 @@ "LabelDidlMode": "Chế độ DIDL:", "LabelDeviceDescription": "Mô tả thiết bị:", "LabelDeinterlaceMethod": "Phương pháp khử xen kẽ:", - "LabelDefaultUserHelp": "Xác định thư viện người dùng sẽ hiển thị trên các thiết bị được kết nối. Tuỳ chọn này có thể được ghi đè trên hồ sơ của từng thiết bị.", + "LabelDefaultUserHelp": "Xác định thư viện người dùng sẽ hiển thị trên các thiết bị được kết nối. Điều này có thể được ghi đè trên cấu hình từng thiết bị.", "LabelDefaultUser": "Người dùng mặc định:", "LabelDefaultScreen": "Màn hình mặc định:", "LabelDeathDate": "Ngày mất:", @@ -590,10 +590,10 @@ "LabelEnableHttps": "Bật HTTPS", "LabelEnableHardwareDecodingFor": "Bật giải mã phần cứng cho:", "LabelEnableDlnaServerHelp": "Cho phép các thiết bị UPnP trong mạng của bạn duyệt và phát nội dung.", - "LabelEnableDlnaServer": "Bật tính năng máy chủ DLNA", + "LabelEnableDlnaServer": "Bật máy chủ DLNA", "LabelEnableDlnaPlayToHelp": "Phát hiện các thiết bị trong mạng của bạn và cung cấp khả năng điều khiển chúng từ xa.", "LabelEnableDlnaDebugLoggingHelp": "Tạo tệp nhật ký lớn và chỉ nên dùng khi cần thiết để xử lý sự cố.", - "LabelEnableDlnaDebugLogging": "Bật tính năng gỡ lỗi DLNA", + "LabelEnableDlnaDebugLogging": "Bật ghi nhật ký gỡ lỗi DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Xác định thời gian tính bằng giây giữa hai lần tìm kiếm SSDP.", "LabelEnableDlnaClientDiscoveryInterval": "Thời gian dò tìm máy khách:", "LabelEnableBlastAliveMessagesHelp": "Bật cái này nếu máy chủ không được các thiết bị UPnP khác trên mạng của bạn tìm ra một cách đáng tin cậy.", @@ -837,7 +837,7 @@ "LabelProfileVideoCodecs": "Mã hóa video:", "LabelProfileContainersHelp": "Phân cách bằng dấu phẩy. Để trống để áp dụng cho tất cả các định dạng.", "LabelProfileContainer": "Định dạng:", - "LabelProfileCodecsHelp": "Phân cách bằng dấu phẩy. Điều này có thể được để trống để áp dụng cho tất cả các mã hóa.", + "LabelProfileCodecsHelp": "Phân cách bằng dấu phẩy. Có thể để trống để dùng tất cả các mã hóa.", "LabelProfileCodecs": "Mã hóa:", "LabelProfileAudioCodecs": "Mã hóa âm thanh:", "LabelPreferredSubtitleLanguage": "Ngôn ngữ phụ đề ưu tiên:", @@ -1271,7 +1271,7 @@ "Transcoding": "Chuyển mã", "Trailers": "Đoạn giới thiệu", "TabAccess": "Truy cập", - "SystemDlnaProfilesHelp": "Cấu hình hệ thống ở chế độ chỉ đọc. Các thay đổi đối với cấu hình hệ thống sẽ được lưu vào cấu hình tùy chỉnh mới.", + "SystemDlnaProfilesHelp": "Cấu hình hệ thống ở chế độ chỉ đọc. Thay đổi cấu hình hệ thống sẽ được lưu vào cấu hình tùy chỉnh mới.", "Sports": "Thể thao", "SpecialFeatures": "Các tính năng đặc biệt", "SortName": "Sắp xếp tên", @@ -1532,7 +1532,7 @@ "InterlacedVideoNotSupported": "Video xen kẽ không được hỗ trợ", "AnamorphicVideoNotSupported": "Video Anamorphic không được hỗ trợ", "AudioSampleRateNotSupported": "Tốc độ mẫu của âm thanh không được hỗ trợ", - "AudioProfileNotSupported": "Cấu hình của mã hóa âm thanh không được hỗ trợ", + "AudioProfileNotSupported": "Cấu hình mã hóa âm thanh không được hỗ trợ", "VideoResolutionNotSupported": "Độ phân giải của video không được hỗ trợ", "AudioChannelsNotSupported": "Số kênh âm thanh không được hỗ trợ", "AudioBitrateNotSupported": "Tốc độ bit của âm thanh không được hỗ trợ", @@ -1695,5 +1695,15 @@ "PreferEmbeddedExtrasTitlesOverFileNames": "Ưu tiên tiêu đề được nhúng hơn tên tệp cho các tính năng bổ sung", "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Phần bổ sung thường có cùng tên được nhúng với phần gốc, hãy kiểm tra điều này để sử dụng các tiêu đề được nhúng cho chúng.", "HeaderDummyChapter": "Hình Ảnh Phân Đoạn", - "HeaderRecordingMetadataSaving": "Dữ Liệu Mô Tả Bản Ghi" + "HeaderRecordingMetadataSaving": "Dữ Liệu Mô Tả Bản Ghi", + "SubtitleYellow": "Vàng", + "SubtitleBlack": "Đen", + "SubtitleBlue": "Xanh lam", + "SubtitleCyan": "Lục lam", + "SubtitleGray": "Xám", + "SubtitleGreen": "Xanh lá", + "SubtitleLightGray": "Xám Nhạt", + "SubtitleMagenta": "Đỏ Sậm", + "SubtitleRed": "Đỏ", + "SubtitleWhite": "Trắng" } diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 818bf42ffd..cee2f4d006 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1703,5 +1703,6 @@ "LabelDummyChapterCount": "限制:", "LabelDummyChapterCountHelp": "每个媒体文件的最大章节图像提取数。", "LabelChapterImageResolution": "分辨率:", - "LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。" + "LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。", + "SecondarySubtitles": "次字幕" } diff --git a/src/assets/css/clearbutton.scss b/src/styles/clearbutton.scss similarity index 100% rename from src/assets/css/clearbutton.scss rename to src/styles/clearbutton.scss diff --git a/src/assets/css/dashboard.scss b/src/styles/dashboard.scss similarity index 100% rename from src/assets/css/dashboard.scss rename to src/styles/dashboard.scss diff --git a/src/assets/css/detailtable.scss b/src/styles/detailtable.scss similarity index 100% rename from src/assets/css/detailtable.scss rename to src/styles/detailtable.scss diff --git a/src/assets/css/flexstyles.scss b/src/styles/flexstyles.scss similarity index 100% rename from src/assets/css/flexstyles.scss rename to src/styles/flexstyles.scss diff --git a/src/assets/css/fonts.scss b/src/styles/fonts.scss similarity index 96% rename from src/assets/css/fonts.scss rename to src/styles/fonts.scss index 16142a3aab..681f1abd2c 100644 --- a/src/assets/css/fonts.scss +++ b/src/styles/fonts.scss @@ -1,4 +1,4 @@ -@import "../../styles/noto-sans/index.scss"; +@import "../styles/noto-sans/index.scss"; @mixin font($weight: null, $size: null) { font-weight: $weight; diff --git a/src/assets/css/fonts.sized.scss b/src/styles/fonts.sized.scss similarity index 100% rename from src/assets/css/fonts.sized.scss rename to src/styles/fonts.sized.scss diff --git a/src/assets/css/ios.scss b/src/styles/ios.scss similarity index 100% rename from src/assets/css/ios.scss rename to src/styles/ios.scss diff --git a/src/assets/css/librarybrowser.scss b/src/styles/librarybrowser.scss similarity index 100% rename from src/assets/css/librarybrowser.scss rename to src/styles/librarybrowser.scss diff --git a/src/assets/css/livetv.scss b/src/styles/livetv.scss similarity index 100% rename from src/assets/css/livetv.scss rename to src/styles/livetv.scss diff --git a/src/assets/css/metadataeditor.scss b/src/styles/metadataeditor.scss similarity index 100% rename from src/assets/css/metadataeditor.scss rename to src/styles/metadataeditor.scss diff --git a/src/assets/css/scrollstyles.scss b/src/styles/scrollstyles.scss similarity index 100% rename from src/assets/css/scrollstyles.scss rename to src/styles/scrollstyles.scss diff --git a/src/assets/css/site.scss b/src/styles/site.scss similarity index 100% rename from src/assets/css/site.scss rename to src/styles/site.scss diff --git a/src/assets/css/videoosd.scss b/src/styles/videoosd.scss similarity index 100% rename from src/assets/css/videoosd.scss rename to src/styles/videoosd.scss