From 5c52d2fbb4634026f054def45817498182cf4716 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 03:53:01 +0000 Subject: [PATCH 01/10] Bump webpack from 5.73.0 to 5.76.0 Bumps [webpack](https://github.com/webpack/webpack) from 5.73.0 to 5.76.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.73.0...v5.76.0) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 56 ++++++++----- package.json | 2 +- yarn.lock | 207 ++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 219 insertions(+), 46 deletions(-) diff --git a/package-lock.json b/package-lock.json index a974475b2..44abe921f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mopidy-iris", - "version": "3.65.0", + "version": "3.66.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4855,9 +4855,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -11010,9 +11010,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -11441,18 +11441,24 @@ } }, "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11489,6 +11495,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } } } }, @@ -11871,9 +11889,9 @@ "dev": true }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -11881,11 +11899,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -11898,7 +11916,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { diff --git a/package.json b/package.json index 19cecac92..094998702 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "sortablejs": "1.15.0", "style-loader": "3.3.1", "url-loader": "4.1.1", - "webpack": "5.73.0", + "webpack": "5.76.0", "webpack-cli": "4.10.0", "webpack-dev-server": "4.11.1", "webpack-strip": "0.1.0", diff --git a/yarn.lock b/yarn.lock index 27634840d..1af9533b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1644,6 +1644,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + "@types/http-proxy@^1.17.8": version "1.17.9" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" @@ -1983,7 +1988,7 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -2480,6 +2485,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2569,6 +2582,13 @@ classnames@2.3.1: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2648,6 +2668,11 @@ commander@^7.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2777,6 +2802,17 @@ css-loader@6.7.1: postcss-value-parser "^4.2.0" semver "^7.3.5" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + css-select@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" @@ -2788,7 +2824,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-what@^6.1.0: +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -2977,6 +3013,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" @@ -3014,7 +3057,7 @@ domexception@^4.0.0: dependencies: webidl-conversions "^7.0.0" -domhandler@^4.0.0, domhandler@^4.2.0: +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== @@ -3028,7 +3071,7 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -domutils@^2.5.2: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -3046,6 +3089,14 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.1" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3094,10 +3145,10 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.9.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3903,6 +3954,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + history@5.3.0, history@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" @@ -3949,7 +4005,31 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -htmlparser2@^6.0.0: +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.0.0, htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== @@ -5078,7 +5158,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5095,6 +5175,13 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -5256,6 +5343,14 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -5465,6 +5560,14 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5507,6 +5610,14 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5641,6 +5752,14 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + pretty-format@^29.1.0: version "29.1.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.0.tgz#ea3de2feed5b8d19c537a12fe478ddc8b45da6b8" @@ -5990,6 +6109,22 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -6188,7 +6323,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.0.1: +selfsigned@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== @@ -6354,7 +6489,7 @@ source-map-support@^0.5.16, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6553,7 +6688,7 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^2.1.1, tapable@^2.2.0: +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -6577,6 +6712,16 @@ terser-webpack-plugin@^5.1.3: serialize-javascript "^6.0.0" terser "^5.14.1" +terser@^5.10.0: + version "5.16.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" + integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + terser@^5.14.1: version "5.15.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" @@ -6680,6 +6825,11 @@ tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -6828,6 +6978,11 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -6892,7 +7047,7 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack@^2.3.1: +watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -6951,10 +7106,10 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@4.9.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz#2360a5d6d532acb5410a668417ad549ee3b8a3c9" - integrity sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw== +webpack-dev-server@4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5" + integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -6979,7 +7134,7 @@ webpack-dev-server@4.9.3: p-retry "^4.5.0" rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.1" + selfsigned "^2.1.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" @@ -7006,21 +7161,21 @@ webpack-strip@0.1.0: dependencies: loader-utils "^0.2.6" -webpack@5.73.0: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== +webpack@5.76.0: + version "5.76.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" + integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" + acorn "^8.7.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" + enhanced-resolve "^5.10.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -7033,7 +7188,7 @@ webpack@5.73.0: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + watchpack "^2.4.0" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: From 140bcd8c12e4293eaad99a9312c6729ef7c4dfd2 Mon Sep 17 00:00:00 2001 From: YS Lee Date: Mon, 29 May 2023 20:03:36 +0900 Subject: [PATCH 02/10] Korean Translation --- src/js/locale/ko.yaml | 656 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 656 insertions(+) create mode 100755 src/js/locale/ko.yaml diff --git a/src/js/locale/ko.yaml b/src/js/locale/ko.yaml new file mode 100755 index 000000000..f2d781816 --- /dev/null +++ b/src/js/locale/ko.yaml @@ -0,0 +1,656 @@ +name: Korean + + +## +# Common and reusable phrases +## +errors: + uri_not_found: 'URI %{uri}에 대한 정보를 찾을 수 없습니다' + could_not_load: '%{name}을(를) 로드할 수 없습니다' + could_not_load_library: '%{provider}에서 %{name}을(를) 로드할 수 없습니다' + no_results: 결과를 찾을 수 없습니다 + authorization_required: '먼저 %{provider}을(를) 인증해야 합니다' + enable_first: '먼저 %{provider}을(를) 활성화해야 합니다' + no_service_worker: 서비스 워커를 지원하지 않습니다 + required: 필수 + unknown_error: 알 수 없는 오류 + need_to_be_online: 이 리소스를 로드하려면 온라인 상태여야 합니다 + nothing_selected: 선택된 것이 없습니다 + cannot_reorder: + title: 항목을 재정렬할 수 없습니다 + description: 정렬/필터를 제거하고 다시 시도하십시오 +actions: + play: 재생 + play_all: 전체 재생 + play_next: 다음곡 재생 + shuffle_play: 랜덤 재생 + pause: 일시정지 + stop: 정지 + add_to_playlist: 플레이리스트에 추가 + add_to_library: 라이브러리에 추가 + added_tracks_to: '%{count} 곡을 추가하였습니다 ' + remove_from_library: 라이브러리에서 제거 + add_to_queue: 대기열에 추가 + reset: 리셋 + back: 뒤로 + refresh: 새로고침 + enable: 활성화 + disable: 비활성화 + send: 전송 + save: 저장 + start: 시작 + edit: 편집 + add: 추가 + confirm: 확실합니까? + delete: 삭제 + remove: 제거 + cancel: 취소 + created: %{name}을(를) 생성하였습니다 + saved: %{name}을(를) 저장하였습니다 + deleted: %{name}을(를) 삭제하였습니다 +common: + popularity: 인기도 + name: 이름 + artist: 아티스트 + duration: 재생시간 + source: 소스 + sources: 소스들 + sort: 정렬 + filter: 필터 + by: '에 의해 ' + loading_library: '%{provider} %{type} 로딩 중' + play_state: + playing: 재생 중 + paused: 일시정지 + stopped: 정지 + idle: 유휴 상태 +fields: + start_typing: '입력 시작...' + search: '검색...' + sort: 정렬 + view: 보기 + source: 소스 + uri: URI(s) + items_to_add: + label: 추가할 항목 + placeholder: 항목 없음 + filter: 필터 + filters: + all: 전체 + thumbnails: 썸네일 + list: 목록 + as_loaded: 로드 순서 + name: 이름 + artist: 아티스트 + album: 앨범 + updated: 업데이트 + tracks: 트랙 + source: 소스 + editable: 편집 가능 + owner: 소유자 + followers: 팔로워 + popularity: 인기도 +time: + seconds: + short: 초 + singular: 초 + plural: 초 + minutes: + short: 분 + singular: 분 + plural: 분 + hours: + short: 시 + singular: 시간 + plural: 시간 + days: + short: 일 + singular: 일 + plural: 일 + weeks: + short: 주 + singular: 주 + plural: 주 + years: + short: 년 + singular: 년 + plural: 년 +specs: + tracks: '%{count} 트랙' + albums: '%{count} 앨범' + followers: '%{count} 팔로워' + listeners: '%{count} 청취자' + playlists: '%{count} 재생목록' + plays: '%{count} 재생' + popularity: '%{percent}% 인기도' + added_from: '다음에서 추가: ' + added_by: '%{by}에 의해 추가됨' + added_ago: '%{time} 전에 추가됨' + edited: '편집됨 ' + edited_ago: '%{time} 전에 편집됨' + played_ago: '%{time} 전에 재생됨' +services: + restore_defaults: 기본값 복원 + mopidy: + title: Mopidy + local: 로컬 + adding_uris: '%{count} URI(s) 추가 중' + adding_uris_broadcast: '%{username}이(가) %{count} URI(s)를 추가 중' + searching: '%{provider} %{type} 검색 중' + searching_providers: '%{count}개의 Mopidy 제공자 검색 중' + loading_albums: '%{count}개의 로컬 앨범 로드 중' + loading_artwork: '아트워크 로드 중' + spotify: + title: Spotify + pusher: + title: Pusher + snapcast: + title: Snapcast + genius: + title: Genius + switch_lyrics_result: 다른 가사 검색 결과로 전환 + want_lyrics: '가사를 보고 싶으신가요? Genius를 인증하십시오 ' + google: + title: Google + lastfm: + title: LastFM + love: 좋아요 + unlove: 좋아요 취소 + youtube: + title: YouTube + tidal: + title: Tidal + jellyfin: + title: Jellyfin + +## +# Components +## +sidebar: + now_playing: 현재 재생 중 + search: 검색 + discover: 발견 + moods: 장르 / 분위기 + featured_playlists: 추천 재생목록 + new_releases: 새로운 발매작 + my_music: 나의 음악 + playlists: 재생목록 + artists: 아티스트 + albums: 앨범 + tracks: 트랙 + browse: 탐색 + settings: 설정 + servers: 서버 + not_connected: '%{name} 연결되지 않음' + browser_offline: 브라우저가 오프라인 상태입니다 + update_available: 업데이트 가능 +context_menu: + add_to_playlist: + title: 재생목록에 추가 + new_playlist: 재생목록 생성 + no_playlists: 쓰기 가능한 재생목록이 없습니다 + play_next: 다음곡 재생 + play_top_tracks: 상위 트랙 재생 + play_all_tracks: 모든 트랙 재생 + love_track: 트랙 좋아요 + unlove_track: 트랙 좋아요 취소 + pin: 고정 + unpin: 고정 해제 + go_to_artist: 아티스트로 이동 + go_to_user: 사용자로 이동 + go_to_track: 트랙으로 이동 + track_info: 트랙 정보 + discover_similar: 비슷한 항목 찾기 + start_radio: 라디오 시작 + copy_uri: URI(s) 복사 + refresh: 새로고침 +playback_controls: + consume: 소비 + shuffle: 랜덤 + repeat: 반복 + snapcast_not_enabled: 스트림 없음 (Snapcast 비활성화) + mute: 음소거 + unmute: 음소거 해제 +snapcast: + enabled: 활성화됨 + streaming_enabled: 스트리밍 활성화 + show_disconnected_clients: 연결 해제된 클라이언트 표시 + no_connected_clients: 연결된 클라이언트 없음 + host: 호스트 + port: 포트 + name: 이름 + name_disconnected: 이름 (연결 해제) + group: 그룹 + new_group: '+ 새 그룹' + latency: 지연시간 + stream: 스트림 + volume: 볼륨 + not_controllable: 제어 불가능 + encryption: + label: 암호화 + sublabel: SSL 사용 + description: SSL 프록시가 필요합니다 + incompatible: ' (HTTPS 브라우저 세션에서 연결할 때 필요합니다)' +authentication: + popup_blocked: 팝업이 차단되었습니다. 팝업을 허용하고 다시 시도해주세요. + failed: 인증에 실패했습니다. %{origin}은(는) 설정된 authorization_url이 아닙니다. + log_out: 로그아웃 + log_in: 로그인 + + + +## +# Views +## +now_playing: + title: 지금 재생 중 + context_actions: + radio: 라디오 + history: 히스토리 + add_uri: URI 추가 + current_track: + playing_from: 다음에서 재생 중 + shuffle: 셔플 + clear: 지우기 + radio: 라디오 +album: + title: 앨범 + title_window: '%{artist}의 %{name} (앨범)' + wiki: + title: 정보 + published: '발표일: %{date}' + tracks: + title: 트랙 + sort: + disc_track: 트랙 번호 + name: 이름 +artist: + title: 아티스트 + title_window: '%{name} (아티스트)' + overview: + title: 개요 + top_tracks: 인기 트랙 + albums: '앨범 (%{count})' + related_artists: + title: 관련 아티스트 + more: 모든 관련 아티스트 + tracks: + title: 트랙 + sort: + disc_track: 트랙 번호 + name: 이름 + album: 앨범 + related_artists: + title: 관련 아티스트 + about: + title: 정보 + source: '%{source} 아티스트' + wiki: + published: '발표일: %{date}' + origin: '출신지: ' + albums: + sort: + default: 기본 + name: 이름 + release_date: 날짜 + track_count: 트랙 수 + filter: + all: 전체 + albums: 앨범 + singles: 싱글 + compilations: 컴필레이션 +debug: + title: 디버그 + ui: + title: 사용자 인터페이스 + debug: + title: 디버그 + overlay: 디버그 오버레이 표시 + logging: + title: 로깅 + mopidy: 로그 Mopidy + pusher: 로그 Pusher + actions: 로그 액션 + snapcast: 로그 Snapcast + create_notification: 알림 생성 + create_process: 프로세스 알림 생성 + run_test: 테스트 프로세스 실행 + call: 콜 + data: 데이터 + examples: 예시 +playlist: + title: 플레이리스트 + title_window: '%{name} (플레이리스트)' + title_plural: 플레이리스트 + tracks: + title: 트랙 + sort: + default: 기본 + sort_id: 로드 순서대로 + added_at: 추가된 날짜 + name: 이름 + artist: 아티스트 + album: 앨범 +queue_history: + title: 재생 기록 +search: + title: 검색 + title_window: '검색: %{term}' + context_actions: + sort: 정렬 + source: '출처 (%{count})' + placeholder: 검색 + all: + title: 전체 + artists: + title: 아티스트 + more: '모든 아티스트 (%{count})' + albums: + title: 앨범 + more: '모든 앨범 (%{count})' + playlists: + title: 재생목록 + more: '모든 재생목록 (%{count})' + tracks: + title: 트랙 +track: + title: 트랙 + title_window: '%{artists}의 %{name} (트랙)' + lyrics_origin: '출처: ' + explicit: 청소년 이용불가 + unplayable: 재생 불가능 + disc_number: '디스크 %{number}' + track_number: '트랙 %{number}' + unknown_album: 알 수 없는 앨범 + want_lyrics: '트랙 가사가 필요하세요? Genius를 인증하십시오 ' + lyrics: 가사 +settings: + title: 설정 + help: 도움말 + server: + title: 서버 + username: + label: 사용자 이름 + description: 이 클라이언트를 식별하는 비유일 문자열 (특수 문자 없음) + interface: + title: 인터페이스 + language: + label: 언어 + theme: + label: 테마 + auto: 자동 + auto_tooltip: 브라우저 또는 OS 선호도를 감지합니다 + dark: 어두운 + light: 밝은 + behavior: + label: 동작 + clear_tracklist: URI(s) 재생시 트랙리스트 클리어 + clear_tracklist_tooltip: 하나 이상의 URI를 재생하면 먼저 현재 재생 큐가 지워집니다 + hotkeys: 핫키 활성화 + touch_events: 재생 컨트롤에서 터치 이벤트 활성화 + touch_events_tooltip: 좌-우 스와이프를 사용하여 트랙 변경을 허용합니다 + grid_glow: 섬네일 반짝이는 효과 + grid_glow_tooltip: 낮은 전력 장치 또는 오래된 브라우저에서 효과를 비활성화합니다 + scrolling: + label: 스크롤 + wide: 넓은 스크롤바 + hidden: 숨겨진 스크롤바 + smooth_scrolling: 부드러운 스크롤 + reporting: + label: 보고 + sublabel: 익명 사용 통계의 보고를 허용합니다 + description: '이 익명 사용 데이터는 오류를 식별하고 Iris를 모두에게 더 나은 기능을 만들 수 있는 중요한 정보입니다. 더 알고 싶으신가요? ' + privacy_policy: 개인정보 보호정책 + are_you_sure: 이를 지원하지 않으시겠습니까? + commands: + label: 명령어 + advanced: + title: 고급 + start_local_scan: 로컬 스캔 시작 + artist_uri: + label: 아티스트 라이브러리 URI + description: 라이브러리 아티스트를 수집하는 데 사용되는 URI + album_uri: + label: 앨범 라이브러리 URI + description: 라이브러리 앨범을 수집하는 데 사용되는 URI + track_uri: + label: 트랙 라이브러리 URI + description: 라이브러리 트랙을 수집하는 데 사용되는 URI + connections: + label: 연결 + version: + label: 버전 + upgrade_available: '업그레이드 가능 (%{version})' + upgrade: '%{version}로 업그레이드' + up_to_date: 최신 + shared_configuration: + label: 설정 공유 + share: 내보내기/공유 + import: 서버에서 가져오기 + restart: 서버 재시작 + reset: 설정 초기화 + about: + title: 정보 + blurb_1: '은/는 ' + blurb_2: '에 의해 제공되는 오픈 소스 프로젝트입니다. 이 소프트웨어는 무료로 제공되며 전혀 보증하지 않습니다. 이 소프트웨어에 대해 누군가에게 돈을 지불했다면 알려주십시오.' + donate: 기부 + github: GitHub + pusher_connection_list: + not_connected: 연결되지 않음 + no_connections: 연결 없음 + you: ' (당신)' + servers: + current_track: 현재 트랙 + inactive: 비활성 + connecting: 연결 중 + disconnected: 연결 해제 + connected: 연결됨 + new_server: 새 서버 + name: 이름 + host: 호스트 + port: 포트 + encryption: + label: 암호화 + sublabel: SSL 사용 + description: SSL 프록시가 필요합니다 + incompatible: ' (HTTPS 브라우저 세션에서 연결하는 경우 필요함)' + switch: 이 서버로 전환 + reconnect: 재연결 + services: + title: 서비스 + limited_access: 접근 제한 + unknown: 알 수 없음 + current_user: 현재 사용자 + authorization: 권한 부여 + refresh_token: 토큰 새로 고침 + authorized: 인증됨 + read_only: 읽기 전용 + unauthorized: 인증되지 않음 + enabled: 활성화됨 + disabled: 비활성화됨 + connected: 연결됨 + disconnected: 연결 해제 + spotify: + mopidy_spotify_not_running: Mopidy-Spotify 확장이 실행되지 않고 있습니다 - Spotify 트랙을 재생할 수 없습니다 + country: + label: 국가 + description: ISO 3166-1 알파-2 국가 코드 (예 'NZ') + locale: + title: 로케일 + description: 소문자 ISO 639 언어 코드와 대문자 ISO 3166-1 알파-2 국가 코드가 언더스코어로 연결됩니다 (예 'en_NZ') +user: + title: 사용자 + title_window: '%{name} (사용자)' + you: 당신 +discover: + title: 발견 + moods: + title: '장르 / 분위기' + featured_playlists: + title: 추천 플레이리스트 + new_releases: + title: 신규 릴리스 + recommendations: + title: 발견 + tracks: 트랙 + artists: 아티스트 + albums: 앨범 + body_title: 새로운 음악 탐색 + body_subtitle: 아래의 씨앗과 음악적 특성을 추가하여 당신의 사운드 구축 + too_many_seeds: 씨앗이 너무 많습니다! 씨앗 트랙, 아티스트 및 장르를 최대 5개까지 사용할 수 있습니다. + find_recommendations: 추천 찾기 +library: + albums: + title: 나의 앨범 + artists: + title: 나의 아티스트 + browse: + title: 브라우즈 + browse_directory: + title: 디렉토리 + playlists: + title: 나의 플레이리스트 + tracks: + title: 나의 트랙 +modal: + add_to_playlist: + title: 플레이리스트에 추가 + subtitle: '%{count} 항목%{plural}을 추가할 플레이리스트 선택' + no_playlists: 사용 가능한 플레이리스트 없음 + no_editable_playlists: 편집 가능한 플레이리스트 없음 + add_to_queue: + title: 대기열에 추가 + subtitle: 쉼표로 구분된 URI 목록을 재생 대기열에 추가 + uris: URI(s) + add_random: 랜덤 트랙 찾기 + position: + label: 위치 + end: 끝 + next: 현재 트랙 이후 + edit_playlist: + title: 플레이리스트 수정 + title_create: 플레이리스트 생성 + subtitle: '그리고 %{count} 항목%{plural} 추가' + name_required: 이름 필요 + name: 이름 + description: 설명 + provider: 제공자 + image: + label: 커버 이미지 + description: JPEG만 가능, 256kB 제한. 커버 이미지를 변경하지 않으려면 비워 두세요. + options: + label: 옵션 + public: 공개 + collaborative: 공동 작업 + create_playlist: 플레이리스트 생성 + edit_command: + title: 명령 수정 + title_create: 명령 생성 + name: 이름 + colour: 색상 + icon: 아이콘 + url: URL + method: + label: 방법 + get: GET + post: POST + data: 데이터 + headers: 추가 헤더 + edit_radio: + title: 라디오 + subtitle: 라디오의 사운드를 형성하기 위해 씨앗을 추가하거나 제거하세요. 라디오는 당신의 씨앗과 유사한 트랙을 제안하는 Spotify의 추천 엔진을 사용합니다. + invalid_seed_uri: 유효하지 않은 씨앗 URI(s) + too_many_seeds: 5개 이상의 씨앗이 제공되었습니다, 나머지는 무시 + only_spotify_uris: Spotify URI만 지원됩니다 + already_added: URI 이미 추가됨 + no_seeds: 씨앗 없음 + initial_setup: + title: Iris에 오신 것을 환영합니다 + username: 사용자 + kiosk: + title: 현재 재생 중 + title_window: '%{name} by %{artist} (현재 재생 중)' + lyrics: 가사 + import_configuration: + title: 설정 가져오기 + configurations: 가져올 설정 + import_now: 지금 가져오기 + shared_config: + no_peers: 피어 연결 없음 + recipients: 수신자 + configurations: 설정 + import_now: 지금 가져오기 + imported: 가져오기 성공 + share: 지금 공유하기 + shared: 공유 성공 + push: + title: 설정 공유하기 + subtitle: 인증과 인터페이스 설정을 연결된 다른 사용자에게 푸시 + pushed: + title: 설정 수신 + subtitle: 다른 사용자가 당신과 그들의 설정을 공유했습니다. + server: + title: 설정 가져오기 + subtitle: 제3자 인증 및 기타 설정 가져오기 + label: 서버 + description: 모든 사용자가 가져올 수 있도록 서버에 저장 + config: + label: 설정 + ui: + label: 사용자 인터페이스 + description: 테마, 정렬, 필터 등 + spotify: + label: Spotify 인증 + description: '%{name}으로 로그인' + lastfm: + label: LastFM 인증 + description: '%{name}으로 로그인' + genius: + label: Genius 인증 + description: '%{name}으로 로그인' + snapcast: + label: Snapcast + description: 서버 연결 세부 정보 + reset: + title: Iris 재설정 + subtitle: 로컬 설정, 저장 정보 또는 캐시 지우기 + items: 기본값으로 재설정 + preferences: + label: 선호도 + description: 인터페이스 맞춤 설정 + database: + label: 데이터베이스 + description: 라이브러리 및 자산의 로컬 브라우저 기반 데이터베이스 + service_worker: + label: 서비스 워커 + description: 서비스 워커 다시 설치 + cache: + label: Fetch 캐시 + description: 외부 API 요청 캐시 (서비스 워커 필요) + test_mode: + label: 테스트 모드 + description: 문제 진단을 위한 자세한 로깅 + hotkeys_info: + title: 단축키 + keys: + info: 단축키 정보 (이 대화 상자) + now_playing: 현재 재생 중 + search: 검색 + kiosk_mode: 키오스크 모드 + exit: 현재 상호작용 취소 + play_pause: 재생/일시정지 + stop: 정지 + next: 다음 트랙 + previous: 이전 트랙 + rewind: 30초 되감기 + fastforward: 30초 빨리감기 + volume_up: 볼륨 5% 올리기 + volume_down: 볼륨 5% 내리기 + mute: 음소거 전환 + snapcast_volume_up: Snapcast 클라이언트의 볼륨을 높이기 (n은 1-9) + snapcast_volume_down: Snapcast 클라이언트의 볼륨을 낮추기 (n은 1-9) + snapcast_mute: Snapcast 클라이언트에 대해 음소거 전환 (n은 1-9) + servers: + title: 서버 선택기 + current: 현재 서버 + nothing_playing: 재생 중인 것 없음 From 6aaf19c99083cb78a6542e113e002b686dd7e471 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sun, 4 Jun 2023 13:51:44 +1200 Subject: [PATCH 03/10] Merging Korean translation - Thanks @saya6k --- src/js/locale/dictionaries.js | 6 ++++++ src/js/locale/ko.yaml | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/js/locale/dictionaries.js b/src/js/locale/dictionaries.js index 7f3849227..9b1d54db6 100755 --- a/src/js/locale/dictionaries.js +++ b/src/js/locale/dictionaries.js @@ -10,6 +10,7 @@ import _it from './it.yaml'; import _es from './es.yaml'; import _ru from './ru.yaml'; import _br from './br.yaml'; +import _ko from './ko.yaml'; // Merge languages with English. This provides English fallbacks to untranslated // fields without breaking the UI (with blanks) @@ -33,6 +34,8 @@ const ru = {}; merge(ru, en, _ru); const br = {}; merge(br, en, _br); +const ko = {}; +merge(ko, en, _ko); const available = [ { key: 'en', name: en.name }, @@ -41,6 +44,7 @@ const available = [ { key: 'fr', name: fr.name }, { key: 'it', name: it.name }, { key: 'ja', name: ja.name }, + { key: 'ko', name: ko.name }, { key: 'nl', name: nl.name }, { key: 'br', name: br.name }, { key: 'pl', name: pl.name }, @@ -60,6 +64,7 @@ export default { pl, it, ru, + ko, available, }; @@ -74,5 +79,6 @@ export { pl, it, ru, + ko, available, }; diff --git a/src/js/locale/ko.yaml b/src/js/locale/ko.yaml index f2d781816..bfe333ffe 100755 --- a/src/js/locale/ko.yaml +++ b/src/js/locale/ko.yaml @@ -1,6 +1,5 @@ name: Korean - ## # Common and reusable phrases ## From 76d6e929b50a2cfc7ddd017da754f1c898951e9c Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sat, 24 Jun 2023 16:32:43 +1200 Subject: [PATCH 04/10] Removing extra wrapping double-quote marks - Fixes 904 --- docker/entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 6c3b475e0..5c1cfd0bb 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,13 +2,13 @@ if [ -z "$PULSE_COOKIE_DATA" ] then - printf '%s' "$(echo "$PULSE_COOKIE_DATA" | sed -e 's/../\\x&/g')" >"$HOME"/pulse.cookie - export PULSE_COOKIE="$HOME"/pulse.cookie + printf '%s' "$(echo $PULSE_COOKIE_DATA | sed -e 's/../\\x&/g')" >$HOME/pulse.cookie + export PULSE_COOKIE=$HOME/pulse.cookie fi if [ ${PIP_PACKAGES:+x} ]; then echo "-- INSTALLING PIP PACKAGES $PIP_PACKAGES --" - python3 -m pip install --no-cache --upgrade "$PIP_PACKAGES" + python3 -m pip install --no-cache --upgrade $PIP_PACKAGES fi exec "$@" From 40987be3d28ec492a1abee0672f4a03c8f6b508d Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sat, 24 Jun 2023 16:32:43 +1200 Subject: [PATCH 05/10] Removing extra wrapping double-quote marks - Fixes #904 --- docker/entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 6c3b475e0..5c1cfd0bb 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,13 +2,13 @@ if [ -z "$PULSE_COOKIE_DATA" ] then - printf '%s' "$(echo "$PULSE_COOKIE_DATA" | sed -e 's/../\\x&/g')" >"$HOME"/pulse.cookie - export PULSE_COOKIE="$HOME"/pulse.cookie + printf '%s' "$(echo $PULSE_COOKIE_DATA | sed -e 's/../\\x&/g')" >$HOME/pulse.cookie + export PULSE_COOKIE=$HOME/pulse.cookie fi if [ ${PIP_PACKAGES:+x} ]; then echo "-- INSTALLING PIP PACKAGES $PIP_PACKAGES --" - python3 -m pip install --no-cache --upgrade "$PIP_PACKAGES" + python3 -m pip install --no-cache --upgrade $PIP_PACKAGES fi exec "$@" From 39accaf362d61a2064d3a371d478f0663ba71648 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sun, 25 Jun 2023 18:12:39 +1200 Subject: [PATCH 06/10] Play/Enqueue partially-loaded albums - When in index, but tracks are not, our callbackAction is not triggered - Send and consume our `callbackAction` as per Playlists - Added support to our `ensureLoaded` handler; This will need some observation and testing to ensure there is no knock-on issues (possibly double-ups?) --- src/js/services/mopidy/middleware.js | 8 +++-- src/js/services/spotify/actions.js | 25 +++++++++++++- src/js/util/library.js | 49 +++++++++++++++++++++++----- 3 files changed, 69 insertions(+), 13 deletions(-) diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index 54339d3e6..310019dfe 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -957,10 +957,11 @@ const MopidyMiddleware = (function () { store.dispatch( coreActions.loadAlbum( action.uri, - false, { - name: 'enqueue', - ...action, + callbackAction: { + name: 'enqueue', + ...action, + }, }, ), ); @@ -968,6 +969,7 @@ const MopidyMiddleware = (function () { } case 'MOPIDY_ENQUEUE_URIS': { + console.debug(action) if (!action.uris || action.uris.length <= 0) { this.props.uiActions.createNotification({ content: 'No URIs to enqueue', diff --git a/src/js/services/spotify/actions.js b/src/js/services/spotify/actions.js index 66a73519d..e34a8c711 100755 --- a/src/js/services/spotify/actions.js +++ b/src/js/services/spotify/actions.js @@ -1130,7 +1130,9 @@ export function getUser(uri, { full, forceRefetch } = {}) { * * @oaram uri string * */ -export function getAlbum(uri, { full, forceRefetch } = {}) { +export function getAlbum(uri, options = {}) { + const { full, forceRefetch, callbackAction } = options; + return (dispatch, getState) => { let endpoint = `albums/${getFromUri('albumid', uri)}`; if (forceRefetch) endpoint += `?refetch=${Date.now()}`; @@ -1146,6 +1148,27 @@ export function getAlbum(uri, { full, forceRefetch } = {}) { ...formatAlbum(response), })); + if (callbackAction) { + switch (callbackAction.name) { + case 'enqueue': + dispatch(mopidyActions.enqueueURIs({ + uris: [uri], + from: formatContext(response), + ...callbackAction, + })); + break; + case 'play': + dispatch(mopidyActions.playURIs({ + uris: [uri], + from: formatContext(response), + ...callbackAction, + })); + break; + default: + break; + } + } + if (full) { let tracks = formatTracks(response.tracks.items); const fetchTracks = (endpoint) => request({ diff --git a/src/js/util/library.js b/src/js/util/library.js index b80c92b1d..4b45c578b 100644 --- a/src/js/util/library.js +++ b/src/js/util/library.js @@ -1,8 +1,13 @@ import { compact } from 'lodash'; +import { formatContext } from './format'; import localForage from 'localforage'; - -const coreActions = require('../services/core/actions.js'); -const uiActions = require('../services/ui/actions.js'); +import { stopLoading } from '../services/ui/actions'; +import { enqueueURIs, playURIs } from '../services/mopidy/actions'; +import { + setLoading, + loadItems, + restoreItemsFromColdStore, +} from '../services/core/actions'; /** * Inspect object to check for missing dependent properties @@ -77,6 +82,7 @@ const ensureLoaded = ({ options: { forceRefetch, full, + callbackAction, }, } = action; const { @@ -86,11 +92,12 @@ const ensureLoaded = ({ } = {}, } = {}, } = store.getState(); + const dispatch = store.dispatch; // Forced refetch bypasses everything if (forceRefetch) { console.info(`Force-refetching "${uri}"`); - store.dispatch(coreActions.setLoading(uri, true)); + store.dispatch(setLoading(uri, true)); fetch(); return; } @@ -108,17 +115,40 @@ const ensureLoaded = ({ fullDependents, }); + const runCallback = (item) => { + switch (callbackAction.name) { + case 'enqueue': + dispatch(enqueueURIs({ + uris: [item.uri], + from: formatContext(item), + ...callbackAction, + })); + break; + case 'play': + dispatch(playURIs({ + uris: [item.uri], + from: formatContext(item), + ...callbackAction, + })); + break; + default: + break; + } + } + // Item already in our index? if (item) { if (missingDependents(item).length === 0) { - store.dispatch(uiActions.stopLoading(uri)); + store.dispatch(stopLoading(uri)); console.info(`"${uri}" already in index`); const uris = dependentUris(item); if (uris.length) { console.info(`Loading ${uris.length} dependents`, { uris }); - store.dispatch(coreActions.loadItems(type, uris)); + store.dispatch(loadItems(type, uris)); } + + if (callbackAction) runCallback(item); return; } } @@ -126,13 +156,14 @@ const ensureLoaded = ({ // What about in the coldstore? localForage.getItem(uri).then((restoredItem) => { if (!restoredItem || missingDependents(restoredItem).length > 0) { - store.dispatch(coreActions.setLoading(uri, true)); + store.dispatch(setLoading(uri, true)); fetch(); return; } console.info(`Restoring "${uri}" from database`); - store.dispatch(coreActions.restoreItemsFromColdStore([restoredItem])); + store.dispatch(restoreItemsFromColdStore([restoredItem])); + if (callbackAction) runCallback(restoredItem); // We already have the dependents of our restored item, so restore them. // We assume that because THIS item is in the coldstore, its dependents @@ -147,7 +178,7 @@ const ensureLoaded = ({ Promise.all(restoreAllDependents).then( (dependentItems) => { store.dispatch( - coreActions.restoreItemsFromColdStore( + restoreItemsFromColdStore( compact(dependentItems), // Squash nulls (ie items not found in coldstore) ), ); From 45cd06b2e1457ff39f68f6eccb4a1b9ce051fb86 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 7 Aug 2023 20:53:16 +1200 Subject: [PATCH 07/10] Removing PayPal donation - Replacing with GitHub Sponsors - Fixes #911 --- src/js/locale/en.yaml | 2 +- src/js/views/Settings.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/js/locale/en.yaml b/src/js/locale/en.yaml index aeac3de62..36ede334e 100755 --- a/src/js/locale/en.yaml +++ b/src/js/locale/en.yaml @@ -431,7 +431,7 @@ settings: title: About blurb_1: ' is an open-source project by ' blurb_2: '. It is provided free and with absolutely no warranty. If you paid someone for this software, please let me know.' - donate: Donate + sponsor: Become a sponsor github: GitHub pusher_connection_list: not_connected: Not connected diff --git a/src/js/views/Settings.js b/src/js/views/Settings.js index f61a7fde5..796ded932 100755 --- a/src/js/views/Settings.js +++ b/src/js/views/Settings.js @@ -542,22 +542,22 @@ class Settings extends React.Component {
From 41fcfa9556d3a2f369a9260819c8b8d749111b08 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sat, 12 Aug 2023 10:06:07 +1200 Subject: [PATCH 08/10] Relocating stream checkbox to Outputs panel - Making it easier to switch current device streaming on/off - Refactor `Stream` to functional component --- src/js/components/Fields/OutputControl.js | 47 ++++++++-- src/js/components/Snapcast.js | 12 --- src/js/components/Stream.js | 104 +++++++--------------- src/js/locale/en.yaml | 1 + src/js/views/Settings.js | 4 +- src/scss/global/_core.scss | 4 + 6 files changed, 76 insertions(+), 96 deletions(-) diff --git a/src/js/components/Fields/OutputControl.js b/src/js/components/Fields/OutputControl.js index 1bee0bb26..0c4d334d9 100755 --- a/src/js/components/Fields/OutputControl.js +++ b/src/js/components/Fields/OutputControl.js @@ -8,7 +8,13 @@ import Thumbnail from '../Thumbnail'; import LinksSentence from '../LinksSentence'; import DropdownField from './DropdownField'; import * as pusherActions from '../../services/pusher/actions'; -import * as snapcastActions from '../../services/snapcast/actions'; +import { + setGroupStream, + setClientMute, + setClientVolume, + setStreamingEnabled, + controlStream, +} from '../../services/snapcast/actions'; import { sortItems, indexToArray } from '../../util/arrays'; import { titleCase } from '../../util/helpers'; import { I18n, i18n } from '../../locale'; @@ -38,10 +44,10 @@ const Header = ({ let onClick = null; switch (playbackStatus) { case 'playing': - if (canPause) onClick = () => dispatch(snapcastActions.controlStream(id, 'pause')); + if (canPause) onClick = () => dispatch(controlStream(id, 'pause')); break; default: - if (canPlay) onClick = () => dispatch(snapcastActions.controlStream(id, 'play')); + if (canPlay) onClick = () => dispatch(controlStream(id, 'play')); break; } @@ -88,6 +94,7 @@ const Header = ({ }; const Group = ({ + setExpanded, group: { id: groupId, name: groupName, @@ -111,6 +118,7 @@ const Group = ({ className="text" to={`/settings/services/snapcast/${groupId}`} scrollTo="#services-snapcast-groups" + onClick={() => setExpanded(false)} > {titleCase(groupName)} @@ -121,7 +129,7 @@ const Group = ({ options={allStreams.map((s) => ({ value: s.id, label: titleCase(s.id) }))} noLabel handleChange={ - (value) => dispatch(snapcastActions.setGroupStream(groupId, value)) + (value) => dispatch(setGroupStream(groupId, value)) } /> @@ -143,14 +151,14 @@ const Group = ({ noTooltip mute={mute} onMuteChange={ - (value) => dispatch(snapcastActions.setClientMute(clientId, value)) + (value) => dispatch(setClientMute(clientId, value)) } /> dispatch(snapcastActions.setClientVolume(clientId, value)) + (value) => dispatch(setClientVolume(clientId, value)) } />
@@ -162,11 +170,13 @@ const Group = ({ ); }; -const Outputs = () => { +const Outputs = ({ setExpanded }) => { + const dispatch = useDispatch(); const allGroups = indexToArray(useSelector((state) => state.snapcast.groups || {})); const allStreams = useSelector((state) => state.snapcast.streams || {}); const allServers = indexToArray(useSelector((state) => state.mopidy.servers || {})); const groupsByStream = groupBy(allGroups, 'stream_id'); + const { streaming_enabled } = useSelector((state) => state?.snapcast || {}); return ( @@ -180,10 +190,29 @@ const Outputs = () => { return (
- {groups.map((group) => )} + { + groups.map( + (group) => ( + + ) + ) + }
); })} +
+ +
); } @@ -241,7 +270,7 @@ const OutputControl = ({ force_expanded }) => {
{!isEmpty(commands) && } - {snapcastEnabled && } + {snapcastEnabled && }
); diff --git a/src/js/components/Snapcast.js b/src/js/components/Snapcast.js index ff74ee504..4f342e894 100755 --- a/src/js/components/Snapcast.js +++ b/src/js/components/Snapcast.js @@ -41,18 +41,6 @@ const Snapcast = (props) => { -