From d989d7b0075ad98ddf657316b006dfea53cfe9f7 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 29 Jan 2020 18:59:18 +0100 Subject: [PATCH 001/449] Add placeholder image to detail pages --- src/assets/css/librarybrowser.css | 10 + src/components/cardbuilder/cardBuilder.js | 25 +- src/controllers/itemdetailpage.js | 12 +- yarn.lock | 312 +++++++++++++++++++--- 4 files changed, 318 insertions(+), 41 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 26b65115b6..3767cc104f 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -542,6 +542,16 @@ -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } +.itemDetailGalleryLink.defaultCardBackground { + height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ +} + +.itemDetailGalleryLink.defaultCardBackground > i { + font-size: 15vw; + margin-top: 50%; + transform: translateY(-50%); +} + @media all and (max-width: 62.5em) { .detailPageContent { position: relative; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index ac61575b14..23ac93676e 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1397,7 +1397,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana //} if (!imgUrl) { - cardImageContainerOpen += getCardDefaultText(item, options); + cardImageContainerOpen += getDefaultText(item, options); } var tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; @@ -1485,17 +1485,24 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return html; } - function getCardDefaultText(item, options) { + function getDefaultText(item, options) { if (item.CollectionType) { return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } - if (item.Type === 'MusicAlbum') { - return 'album'; + + switch (item.Type) { + case 'MusicAlbum': + return 'album'; + case 'MusicArtist': + case 'Person': + return 'person'; + case 'Movie': + return 'movie' + case 'Series': + return 'tv' } - if (item.Type === 'MusicArtist' || item.Type === 'Person') { - return 'person'; - } - if (options.defaultCardImageIcon) { + + if (options && options.defaultCardImageIcon) { return '' + options.defaultCardImageIcon + ''; } @@ -1702,6 +1709,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return { getCardsHtml: getCardsHtml, + getDefaultBackgroundClass: getDefaultBackgroundClass, + getDefaultText: getDefaultText, buildCards: buildCards, onUserDataChanged: onUserDataChanged, onTimerCreated: onTimerCreated, diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index a62441e615..a1ce8197ea 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -795,7 +795,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild }); } - if (editable) { + if (editable && url === undefined) { + html += ""; + } else if (editable) { html += ""; } @@ -807,7 +809,13 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild } } - html += ""; + if (url) { + html += ""; + } + + if (url === undefined) { + html += cardBuilder.getDefaultText(item); + } if (editable) { html += ""; diff --git a/yarn.lock b/yarn.lock index cc0fe93261..eac40d60cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -675,6 +675,24 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^9.0.0, autoprefixer@^9.7.3: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -856,6 +874,23 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +browserslist@^1.1.3: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^4.8.3: + version "4.8.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.5.tgz#691af4e327ac877b25e7a3f7ee869c4ef36cdea3" + integrity sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg== + dependencies: + caniuse-lite "^1.0.30001022" + electron-to-chromium "^1.3.338" + node-releases "^1.1.46" + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -895,27 +930,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^12.0.3: +cacache@^12.0.2, cacache@^12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -956,6 +971,25 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -997,7 +1031,22 @@ camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +caniuse-db@^1.0.30000639: + version "1.0.30001023" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001023.tgz#f856f71af16a5a44e81f1fcefc1673912a43da72" + integrity sha512-EnlshvE6oAum+wWwKmJNVaoqJMjIc0bLUy4Dj77VVnz1o6bzSPr1Ze9iPy6g5ycg1xD6jGU6vBmo7pLEz2MbCQ== + +caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001022: + version "1.0.30001023" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" + integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== + +ccount@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1383,6 +1432,27 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1783,6 +1853,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.338: + version "1.3.341" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.341.tgz#ad4c039bf621715a12dd814a95a7d89ec80b092c" + integrity sha512-iezlV55/tan1rvdvt7yg7VHRSkt+sKfzQ16wTDqTbQqtl4+pSUkKPXpQHDvEt0c7gKcUHHwUbffOgXz6bn096g== + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -1849,6 +1924,13 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es-abstract@^1.5.1: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" @@ -2944,6 +3026,19 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.4, ignore@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" @@ -2952,6 +3047,24 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -3117,6 +3230,11 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -3181,6 +3299,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3681,11 +3804,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -material-design-icons-iconfont@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" - integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== - markdown-escapes@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5" @@ -3696,6 +3814,11 @@ markdown-table@^1.1.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +material-design-icons-iconfont@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" + integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== + mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" @@ -4115,6 +4238,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.46: + version "1.1.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4" + integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA== + dependencies: + semver "^6.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4145,6 +4275,16 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -4182,6 +4322,11 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -4342,6 +4487,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" @@ -4349,6 +4501,20 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -4425,6 +4591,36 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^1.0.2, parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -4568,6 +4764,40 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-html@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" + integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== + dependencies: + htmlparser2 "^3.10.0" + +postcss-jsx@^0.36.0, postcss-jsx@^0.36.3: + version "0.36.4" + resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" + integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== + dependencies: + "@babel/core" ">=7.2.2" + +postcss-less@^3.1.0, postcss-less@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" + integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== + dependencies: + postcss "^7.0.14" + +postcss-markdown@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" + integrity sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== + dependencies: + remark "^10.0.1" + unist-util-find-all-after "^1.0.2" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -4708,10 +4938,25 @@ postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== +postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + +postcss@^5.0.0, postcss@^5.0.18: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.7: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -5326,6 +5571,11 @@ serialize-javascript@^1.7.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" From c1b9a094af6776e1a78c22c4707456251d07c4a7 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 29 Jan 2020 19:05:23 +0100 Subject: [PATCH 002/449] Add placeholder image if non-editable --- src/assets/css/librarybrowser.css | 4 ++++ src/controllers/itemdetailpage.js | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 3767cc104f..f39fc02e36 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -542,6 +542,10 @@ -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } +div.itemDetailGalleryLink.defaultCardBackground { + text-align: center; +} + .itemDetailGalleryLink.defaultCardBackground { height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index a1ce8197ea..e76b506e34 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -797,18 +797,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild if (editable && url === undefined) { html += ""; + } else if (!editable && url === undefined) { + html += "" } var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item); @@ -831,6 +827,14 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild html += ""; elem.innerHTML = html; + if (detectRatio && item.PrimaryImageAspectRatio) { + if (item.PrimaryImageAspectRatio >= 1.48) { + shape = "thumb"; + } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) { + shape = "square"; + } + } + if ("thumb" == shape) { elem.classList.add("thumbDetailImageContainer"); elem.classList.remove("portraitDetailImageContainer"); From c60dbbb3aeca9f38e96c31ab51b4c9d8ec0b4ed0 Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 29 Jan 2020 15:08:17 +0100 Subject: [PATCH 003/449] Load gamepadtokey.js only when is necessary --- .../serverNotifications/gamepadtokey.js | 6 +--- .../serverNotifications.js | 28 +++++++++---------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/components/serverNotifications/gamepadtokey.js b/src/components/serverNotifications/gamepadtokey.js index abf3ddb38b..9f2c5942fb 100644 --- a/src/components/serverNotifications/gamepadtokey.js +++ b/src/components/serverNotifications/gamepadtokey.js @@ -254,11 +254,7 @@ require(['apphost'], function (appHost) { function runInputLoop() { // Get the latest gamepad state. var gamepads; - if (navigator.getGamepads) { - gamepads = navigator.getGamepads(); - } else if (navigator.webkitGetGamepads) { - gamepads = navigator.webkitGetGamepads(); - } + gamepads = navigator.getGamepads(); gamepads = gamepads || []; var i; var j; diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications/serverNotifications.js index 1941881b7a..1dfa72ce3a 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications/serverNotifications.js @@ -197,30 +197,30 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus events.on(apiClient, "message", onMessageReceived); } - function enableNativeGamepadKeyMapping() { - if (window.navigator && "string" == typeof window.navigator.gamepadInputEmulation) { - window.navigator.gamepadInputEmulation = "keyboard"; - return true; + function attachgamepad(e) { + if (navigator.getGamepads.length > 0) { + require(["components/serverNotifications/gamepadtokey"]); + console.log("Gamepad connected! Attaching gamepadtokey.js script"); } - - return false; } - function isGamepadSupported() { - return "ongamepadconnected" in window || navigator.getGamepads || navigator.webkitGetGamepads; + function dettachgamepad(e) { + delete require.cache[require(["components/serverNotifications/gamepadtokey"])]; + console.log("Gamepad disconnected! Dettaching gamepadtokey.js"); } connectionManager.getApiClients().forEach(bindEvents); - events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { bindEvents(newApiClient); }); - - if (!enableNativeGamepadKeyMapping() && isGamepadSupported()) { + if (navigator.getGamepads()[0] != null) { require(["components/serverNotifications/gamepadtokey"]); + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + window.addEventListener("gamepaddisconnected", dettachgamepad); + } else { + window.addEventListener("gamepadconnected", attachgamepad); + console.log("No gamepad connected to this device"); } - - require(["components/serverNotifications/mouseManager"]); - + // require(["components/serverNotifications/mouseManager"]); return serverNotifications; }); From 6d6cce02afba784ee778e56b3a0a07761dea02e0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 1 Feb 2020 23:55:07 +0300 Subject: [PATCH 004/449] Add server select support for NativeShell --- src/controllers/auth/login.js | 3 +++ src/controllers/user/menu.js | 4 ++++ src/login.html | 4 ++-- src/mypreferencesmenu.html | 2 +- src/scripts/site.js | 7 +++++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index ceecb2aba3..4296b8bfb3 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -187,6 +187,9 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector("#txtManualName").value = ""; showManualForm(view, true); }); + view.querySelector(".btnSelectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); view.addEventListener("viewshow", function (e) { loading.show(); diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index 4e0a7824b7..6087beadfe 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -6,6 +6,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio Dashboard.logout(); }); + view.querySelector(".selectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); + view.addEventListener("viewshow", function() { // this page can also be used by admins to change user preferences from the user edit page var userId = params.userId || Dashboard.getCurrentUserId(); diff --git a/src/login.html b/src/login.html index 21c9d8a347..955ce3879e 100644 --- a/src/login.html +++ b/src/login.html @@ -47,9 +47,9 @@ ${ButtonForgotPassword} - +

diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 96e9626899..cb63322f31 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -69,7 +69,7 @@

${HeaderUser}

- +
wifi
diff --git a/src/scripts/site.js b/src/scripts/site.js index 3a10dc85a1..c34b3e475d 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -221,6 +221,13 @@ var Dashboard = { }; appHost.getPushTokenInfo(); return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); + }, + selectServer: function () { + if (window.NativeShell && typeof window.NativeShell.selectServer === "function") { + window.NativeShell.selectServer(); + } else { + Dashboard.navigate("selectserver.html"); + } } }; From ab0a9ef065bb1dbb5231788ad9e067f6cfc42e2e Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 5 Feb 2020 14:13:28 +0100 Subject: [PATCH 005/449] Moved gamepad to input and serverNotofications cleanup --- .../gamepadtokey.js | 166 +++++++++--------- .../mouseManager.js | 0 src/components/keyboardnavigation.js | 39 ++++ .../serverNotifications.js | 22 --- 4 files changed, 120 insertions(+), 107 deletions(-) rename src/components/{serverNotifications => input}/gamepadtokey.js (70%) rename src/components/{serverNotifications => input}/mouseManager.js (100%) diff --git a/src/components/serverNotifications/gamepadtokey.js b/src/components/input/gamepadtokey.js similarity index 70% rename from src/components/serverNotifications/gamepadtokey.js rename to src/components/input/gamepadtokey.js index 9f2c5942fb..865a37f101 100644 --- a/src/components/serverNotifications/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -255,96 +255,92 @@ require(['apphost'], function (appHost) { // Get the latest gamepad state. var gamepads; gamepads = navigator.getGamepads(); - gamepads = gamepads || []; var i; var j; var len; for (i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; - if (gamepad) { - // Iterate through the axes - var axes = gamepad.axes; - var leftStickX = axes[0]; - var leftStickY = axes[1]; - if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right - _ButtonPressedState.setleftThumbstickRight(true); - } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left - _ButtonPressedState.setleftThumbstickLeft(true); - } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up - _ButtonPressedState.setleftThumbstickUp(true); - } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down - _ButtonPressedState.setleftThumbstickDown(true); - } else { - _ButtonPressedState.setleftThumbstickLeft(false); - _ButtonPressedState.setleftThumbstickRight(false); - _ButtonPressedState.setleftThumbstickUp(false); - _ButtonPressedState.setleftThumbstickDown(false); - } - // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. - var buttons = gamepad.buttons; - for (j = 0, len = buttons.length; j < len; j++) { - if (ProcessedButtons.indexOf(j) !== -1) { - - if (buttons[j].pressed) { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - _ButtonPressedState.setdPadUp(true); - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - _ButtonPressedState.setdPadDown(true); - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - _ButtonPressedState.setdPadLeft(true); - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - _ButtonPressedState.setdPadRight(true); - break; - case _GAMEPAD_A_BUTTON_INDEX: - _ButtonPressedState.setgamepadA(true); - break; - case _GAMEPAD_B_BUTTON_INDEX: - _ButtonPressedState.setgamepadB(true); - break; - default: - // No-op - break; - } - } else { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - if (_ButtonPressedState.getdPadUp()) { - _ButtonPressedState.setdPadUp(false); - } - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - if (_ButtonPressedState.getdPadDown()) { - _ButtonPressedState.setdPadDown(false); - } - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadLeft()) { - _ButtonPressedState.setdPadLeft(false); - } - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadRight()) { - _ButtonPressedState.setdPadRight(false); - } - break; - case _GAMEPAD_A_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadA()) { - _ButtonPressedState.setgamepadA(false); - } - break; - case _GAMEPAD_B_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadB()) { - _ButtonPressedState.setgamepadB(false); - } - break; - default: - // No-op - break; - } + // Iterate through the axes + var axes = gamepad.axes; + var leftStickX = axes[0]; + var leftStickY = axes[1]; + if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right + _ButtonPressedState.setleftThumbstickRight(true); + } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left + _ButtonPressedState.setleftThumbstickLeft(true); + } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up + _ButtonPressedState.setleftThumbstickUp(true); + } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down + _ButtonPressedState.setleftThumbstickDown(true); + } else { + _ButtonPressedState.setleftThumbstickLeft(false); + _ButtonPressedState.setleftThumbstickRight(false); + _ButtonPressedState.setleftThumbstickUp(false); + _ButtonPressedState.setleftThumbstickDown(false); + } + // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. + var buttons = gamepad.buttons; + for (j = 0, len = buttons.length; j < len; j++) { + if (ProcessedButtons.indexOf(j) !== -1) { + if (buttons[j].pressed) { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + _ButtonPressedState.setdPadUp(true); + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + _ButtonPressedState.setdPadDown(true); + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + _ButtonPressedState.setdPadLeft(true); + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + _ButtonPressedState.setdPadRight(true); + break; + case _GAMEPAD_A_BUTTON_INDEX: + _ButtonPressedState.setgamepadA(true); + break; + case _GAMEPAD_B_BUTTON_INDEX: + _ButtonPressedState.setgamepadB(true); + break; + default: + // No-op + break; + } + } else { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + if (_ButtonPressedState.getdPadUp()) { + _ButtonPressedState.setdPadUp(false); + } + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + if (_ButtonPressedState.getdPadDown()) { + _ButtonPressedState.setdPadDown(false); + } + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadLeft()) { + _ButtonPressedState.setdPadLeft(false); + } + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadRight()) { + _ButtonPressedState.setdPadRight(false); + } + break; + case _GAMEPAD_A_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadA()) { + _ButtonPressedState.setgamepadA(false); + } + break; + case _GAMEPAD_B_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadB()) { + _ButtonPressedState.setgamepadB(false); + } + break; + default: + // No-op + break; } } } diff --git a/src/components/serverNotifications/mouseManager.js b/src/components/input/mouseManager.js similarity index 100% rename from src/components/serverNotifications/mouseManager.js rename to src/components/input/mouseManager.js diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index d1ed03138c..2490a72974 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -126,6 +126,45 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) }); } + function isGamepadConnected() { + var gamepads = navigator.getGamepads(); + var i, len; + for (i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (gamepad) { + console.log(gamepad); + return true; + } + } + return false; + } + + function attachGamepad(e) { + if (isGamepadConnected()) { + require(["components/input/gamepadtokey"]); + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + } + } + + function dettachGamepad(e) { + if (!isGamepadConnected()) { + delete require.cache[require(["components/input/gamepadtokey"])]; + console.log("Gamepad disconnected! No other gamepads are connected, dettaching gamepadtokey.js"); + } else { + console.log("Gamepad disconnected! There are gamepads still connected."); + } + } + + if (isGamepadConnected()) { + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + } else { + console.log("No gamepad connected to this device"); + } + // No need to check for gamepads manually at load time, the eventhandler will be fired at load time as well + window.addEventListener("gamepaddisconnected", dettachGamepad); + window.addEventListener("gamepadconnected", attachGamepad); + require(["components/input/mouseManager"]); + return { enable: enable, getKeyName: getKeyName diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications/serverNotifications.js index 1dfa72ce3a..9945941d28 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications/serverNotifications.js @@ -191,36 +191,14 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); } } - function bindEvents(apiClient) { events.off(apiClient, "message", onMessageReceived); events.on(apiClient, "message", onMessageReceived); } - function attachgamepad(e) { - if (navigator.getGamepads.length > 0) { - require(["components/serverNotifications/gamepadtokey"]); - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - } - } - - function dettachgamepad(e) { - delete require.cache[require(["components/serverNotifications/gamepadtokey"])]; - console.log("Gamepad disconnected! Dettaching gamepadtokey.js"); - } - connectionManager.getApiClients().forEach(bindEvents); events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { bindEvents(newApiClient); }); - if (navigator.getGamepads()[0] != null) { - require(["components/serverNotifications/gamepadtokey"]); - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - window.addEventListener("gamepaddisconnected", dettachgamepad); - } else { - window.addEventListener("gamepadconnected", attachgamepad); - console.log("No gamepad connected to this device"); - } - // require(["components/serverNotifications/mouseManager"]); return serverNotifications; }); From 2b4cf6f5b732d2088f46588e9e3d6aadb227d23e Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 5 Feb 2020 14:17:03 +0100 Subject: [PATCH 006/449] Fix lint --- src/components/keyboardnavigation.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 2490a72974..fb66335514 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -128,7 +128,8 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) function isGamepadConnected() { var gamepads = navigator.getGamepads(); - var i, len; + var i; + var len; for (i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; if (gamepad) { @@ -154,7 +155,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) console.log("Gamepad disconnected! There are gamepads still connected."); } } - + if (isGamepadConnected()) { console.log("Gamepad connected! Attaching gamepadtokey.js script"); } else { From 417e7dae8876fdfb80ed3d247ba0cd1e4fc349b2 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 6 Feb 2020 20:06:57 +0100 Subject: [PATCH 007/449] Removed unnecessary check --- src/components/keyboardnavigation.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index fb66335514..8e0bc2f9d4 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -156,12 +156,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } } - if (isGamepadConnected()) { - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - } else { - console.log("No gamepad connected to this device"); - } - // No need to check for gamepads manually at load time, the eventhandler will be fired at load time as well + // No need to check for gamepads manually at load time, the eventhandler will be fired for that window.addEventListener("gamepaddisconnected", dettachGamepad); window.addEventListener("gamepadconnected", attachGamepad); require(["components/input/mouseManager"]); From 3a9de3f7094df7b032025cd900225f888710edc4 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Fri, 7 Feb 2020 00:26:46 -0500 Subject: [PATCH 008/449] Alter hardware acceleration message Don't say this is "experimental" since it's not. Mention the documentation on configuring hardware acceleration and that it requires additional configuration. --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index c9c00f0da4..755f890737 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -652,7 +652,7 @@ "LabelH264Crf": "H264 encoding CRF:", "LabelH264EncodingPreset": "H264 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", - "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.", + "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration - please see the documentation at https://docs.jellyfin.org/general/administration/hardware-acceleration.html", "LabelHomeNetworkQuality": "Home network quality:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", From 145324a2097490af1349d3ba0996536436565c77 Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 7 Feb 2020 14:32:45 +0100 Subject: [PATCH 009/449] Removed logs for testing and changed attempt --- src/components/input/gamepadtokey.js | 13 +++++++------ src/components/{ => input}/keyboardnavigation.js | 6 +----- .../serverNotifications.js | 0 src/scripts/site.js | 4 ++-- 4 files changed, 10 insertions(+), 13 deletions(-) rename src/components/{ => input}/keyboardnavigation.js (95%) rename src/components/{serverNotifications => }/serverNotifications.js (100%) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index 865a37f101..0b17981f55 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -253,13 +253,13 @@ require(['apphost'], function (appHost) { function runInputLoop() { // Get the latest gamepad state. - var gamepads; - gamepads = navigator.getGamepads(); - var i; - var j; - var len; - for (i = 0, len = gamepads.length; i < len; i++) { + var gamepads = navigator.getGamepads(); + for (var i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; + if (!gamepad) + { + return; + } // Iterate through the axes var axes = gamepad.axes; var leftStickX = axes[0]; @@ -280,6 +280,7 @@ require(['apphost'], function (appHost) { } // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. var buttons = gamepad.buttons; + var j; for (j = 0, len = buttons.length; j < len; j++) { if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) { diff --git a/src/components/keyboardnavigation.js b/src/components/input/keyboardnavigation.js similarity index 95% rename from src/components/keyboardnavigation.js rename to src/components/input/keyboardnavigation.js index 8e0bc2f9d4..3840c08e8a 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/input/keyboardnavigation.js @@ -128,12 +128,9 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) function isGamepadConnected() { var gamepads = navigator.getGamepads(); - var i; - var len; - for (i = 0, len = gamepads.length; i < len; i++) { + for (var i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; if (gamepad) { - console.log(gamepad); return true; } } @@ -149,7 +146,6 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) function dettachGamepad(e) { if (!isGamepadConnected()) { - delete require.cache[require(["components/input/gamepadtokey"])]; console.log("Gamepad disconnected! No other gamepads are connected, dettaching gamepadtokey.js"); } else { console.log("Gamepad disconnected! There are gamepads still connected."); diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications.js similarity index 100% rename from src/components/serverNotifications/serverNotifications.js rename to src/components/serverNotifications.js diff --git a/src/scripts/site.js b/src/scripts/site.js index 3a10dc85a1..4ad1d10352 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -882,9 +882,9 @@ var AppInfo = {}; define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency); define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency); define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency); - define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency); + define("serverNotifications", [componentsPath + "/serverNotifications"], returnFirstDependency); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); - define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency); + define("keyboardnavigation", [componentsPath + "/input/keyboardnavigation"], returnFirstDependency); define("scrollManager", [componentsPath + "/scrollManager"], returnFirstDependency); define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency); define("connectionManager", [], function () { From f8c544c1cff732981a19dbd229414bd7ed9e3daf Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 7 Feb 2020 14:35:31 +0100 Subject: [PATCH 010/449] Fix lint --- src/components/input/gamepadtokey.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index 0b17981f55..2bd5f94f7a 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -256,8 +256,7 @@ require(['apphost'], function (appHost) { var gamepads = navigator.getGamepads(); for (var i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; - if (!gamepad) - { + if (!gamepad) { return; } // Iterate through the axes From 4965e317370033afb94f9837935bf527b9a6c4a4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 8 Feb 2020 23:54:20 +0100 Subject: [PATCH 011/449] Fix action icons in lists wrapping to multiple lines --- src/assets/css/librarybrowser.css | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 276af71f86..8aaa8323ef 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -875,12 +875,9 @@ } } -@media all and (max-width: 75em) { - .listViewUserDataButtons { - display: flex; - align-items: center; - font-size: 65%; - } +.listViewUserDataButtons { + display: flex; + align-items: center; } .bulletSeparator { From 68ddf19605846c3de771f0d89444e84c9c2cc353 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Feb 2020 01:59:52 +0100 Subject: [PATCH 012/449] Tweak poster size on home screen --- src/components/cardbuilder/card.css | 2 +- src/themes/blueradiance/theme.css | 4 ++++ src/themes/dark/theme.css | 8 ++++++-- src/themes/wmc/theme.css | 4 ++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 96bd28e8d1..8759fd519a 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -725,7 +725,7 @@ button::-moz-focus-inner { @media (min-width: 120em) { .overflowSquareCard, .overflowPortraitCard { - width: 10.3vw; + width: 10.41vw; } } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 63c765e4e6..4eaec3f73b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -1,3 +1,7 @@ +* { + scrollbar-color: #3b3b3b #202020; +} + .skinHeader, html { color: #ddd; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 58e9ab1856..6196275e32 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -1,3 +1,8 @@ +* { + scrollbar-width: thin; + scrollbar-color: #3b3b3b #202020; +} + .skinHeader, html { color: #ddd; @@ -425,8 +430,7 @@ html { } .layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em; + width: 0.4em; } ::-webkit-scrollbar-thumb:horizontal, diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 41e1767565..d453889a49 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -1,3 +1,7 @@ +* { + scrollbar-color: #3b3b3b #202020; +} + html { color: #eee; color: rgba(255, 255, 255, 0.9); From a9833ba3981425515a426d0692ae41d1c57bbf00 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Feb 2020 15:17:30 +0100 Subject: [PATCH 013/449] Update Rotten Tomatoes icons --- src/assets/img/fresh.svg | 20 ++++++++++++++++++++ src/assets/img/rotten.svg | 1 + src/components/mediainfo/fresh.png | Bin 13458 -> 0 bytes src/components/mediainfo/mediainfo.css | 4 ++-- src/components/mediainfo/rotten.png | Bin 9991 -> 0 bytes 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/assets/img/fresh.svg create mode 100644 src/assets/img/rotten.svg delete mode 100644 src/components/mediainfo/fresh.png delete mode 100644 src/components/mediainfo/rotten.png diff --git a/src/assets/img/fresh.svg b/src/assets/img/fresh.svg new file mode 100644 index 0000000000..0602ab2481 --- /dev/null +++ b/src/assets/img/fresh.svg @@ -0,0 +1,20 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/rotten.svg b/src/assets/img/rotten.svg new file mode 100644 index 0000000000..04bef05bc1 --- /dev/null +++ b/src/assets/img/rotten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/mediainfo/fresh.png b/src/components/mediainfo/fresh.png deleted file mode 100644 index 701ef6a8c05e025f55cc600c1f36c81e90f09022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13458 zcmXY21yodTu-~Pdr5l!Rq;r8KB&53$1SzGv7nBxQKu~%mq`MnLTIp`2ySpC$_ue_T z&Ue2%^P8F9%opd}C{1-mTr5f~004litR%1favys+7ckIXuIE2Iq5uFvBV~CRU7z`b zOjI{UG2-wx-A3L&AQmgpa6AD4Rx0w|_u=L?HWvhLD0E$lCjmiL zJXhR>n|xYP^7GsC0inp?nQ|Osa^hz-* ztctOVS|=U`hVO`l^Wy|h$l@MTrD*oiDbz<38~oSKHVltmZ3*YnGL}RNh30(LX5bST zs3A!4z{p8q+my|jK4b)AFfmBHqZ5*2K$(+4AhAY8zm2gJYtR9GZJ=SA=Kwj<0cF5r zg_%&fYzhyDx)AkJq0y>31;0IGE4OZvz z3e2N-ugZusFpN=HK5f{x>ii)2Ye|4&D=+s-NOK7;qIg&t@1XFAx}XRJDSg#dw*KN< zRMo=7LsYM;^=Qo^4eX%qux@ z8O>$$$7zINo}I+lyMqXiP(-U_D=orME+mXz%67D^j0z>W>8k!6zeB~x_i{CXc41LN z>%&2mbE_lxjwK+ZsPSrO$;$8k!gf`K9qkm0EB7t2^zC>)&SI>Ue=~fP0d=JJg}Efe zBsS)y%#1DxP0(;@#jSn%O>NCYO`Ek6!}$e++K%Qnf{oJW#j2%7LLPzY4d!ldsTdJO z-41&z4$GyoY*p?iwoieEzh_wgEjnA_1v=2%%+wX z)w^>QGQ31;!PM#+L8BLcooK4-Ma-*zN9koG@bxUScEO3(@{1prreNS$caq!^X`v)T z^}4P5yHCt&Vme;piniy;T1_siC^7BN-&`>W1E)D(brb%1leK)rIKapz`MMb?Ha(W< z$`Pab_?stctH``DiAt1g7vD_2BPP9iN}|r>KZ$*=c$5*ieL+53G;V(o(XLo|Xweg2 zK@S&^8_2Fl;d2IrANyF)F6Q@aJ(}xS*Tz4k&^fw8IgDT1yqHze)rbUEeZXTtzHSl0<529uRMgYrbg@@ku~_zN$QcpGnfW3nRX&g-59mf*j?s? zvOof?p$Ab)HpkdPPER4MnN08Ozm^7(crt2_uY-6d`W&p=aOC~ZQDV7Uo3o(0%cgzF1dBUMCBo{|@NLfO?Kg{?qtd$n1ifTE zgQlLfW0#K4r5o_*8&lxHzIjG=F2kJd{Sb`LrK4EhXda6i=;g$$N0i}z8e!)+8K zwbMvBh>pI!Bx>+Ys)3)vp#7OlY>K=vgVD+|MVmEEzcCVK6dJ2pCL{Cj;|9;YZkB>) zK?TYF9}aiKG=P@dIOOX;&x^&E>uBE|r~L_2q+^bl5_Sw-5W3*MvZlJTxTk9PZjI$& zd4pEvsxj#lR^PZH3G@q!r=LA{n((%_^@Z4|bc%&mwTbV>7@~zp?YM5!@|VR>Woebc zC5XyW6Y~gp5WA>$+8;rqJrO@~o|SQ&-Sr2VM)l>73@c@5SS!W3DVLO3@jgXGB^eBk z`NTreMYgTl&Rq0SMAguMkddVdGD4ZW!K`0jl$e-q!r4b5>%MVODrXzXVcEv)E*%Mj zHYMzWw1{RI=dG!Z>2#G`Zstjm;|a=$p{W$6FKrMKTX&@QBQVO;Jm7vh_)Jl6X)Ex z%NYN;)4M)56dRNJ_Y|zITg_ zbrsBS2deXn?&$i@47o48pPw_1+Q<8dv&!E~LA%;^(bB9x78(g3IeyE%j{o{_H)FP< z!^mpA4}MSOHdIhTl1Fn)x%EMlsbi{XtXJQtrh)OyTOA^bL=7e6!Pcl>Q-hrWp^Hx6 z@4eQ8s9622&)8S0ay5Ewyz`kipN8FIm3_ZpLpES@*zVYE2VqRcb*jiIU5j(cz{ADzI|Vd1Y(Bgw^9|5+a&@$8DiliT;t z-45nX6Z_7l`*@OAkI0dD=t}JiuEo^Exv%^sCOtle|PiYMdB2l|%{0oMzM>tFNyz4jMT)KM3cA02P5ai>OMVPBy`=by(7? z&fHT+u3d2$;43>|k_CBTK7Xc1IgL7CWj|XTuiyEt1lI?;`qOfcw(EAj+fEWOx?&CP zAjBRxa8TKW8S&kU(?CJJHYO$vwjP70H$cR7KCN||tK-{VI*ZO8=|%O)2D!Xz!oNPqK0w#yn8IwHV?A(YCHnp=@SbiYH+vpH} zx^6G{n5ioj;m4PmnloYGUC@J0GFd?&*Z6u376<{zQBMRqiZQDa0r^^@~ zie48}raSWF;~Wwv#I6Rank&-Vffe_TSt_}hIlvWd`LGZR^bpv)`6KfzV#l?+RR z=~+hH!GUt-PwXq@N4nBZRkKgN{Bs^dW|>j;vAzVc;W_EV9~JamN`r3qEN>5o(2F!& znC-<-R3)*JE;Kwehd`Hw>9E1*zFRRha);Q3RvFl7&o?2jx02I&pWlI{NV4r z(7<0QPzEiUVeLGi^oQdRY=HlCPa1Wvwljw%1zQg~EH>grl6mj9MeLmM8f^|l2mT4d=2)pLi53@p`$=0wwzjkwBy-`i^i zR75I*bOzj}C12U_2ajAOy$Nbm^;+$U8q|dANc_bha55kQrK0`5p7wkUe7Mw>Y?gd_ z)g-Ln$9WfmgzKbv6!vD38;9YsrH*ZHv4hSbxRv(woeNz7dwnw3Z*=?2f<*9IP#qS$ z=-bb|azXrSU$JC@!`7)#7s)WT+xi=`Z?E5zX3tf1*_e8L1h=ryL~r{@NX=djx65C# z>VNE-=C&kWd*cbKZp1%TOGg)C$cP_)TY3qS;Q#(mBQrizrOGm&GJ-GyB0~YlJOFM^ zLprJC`};fkE-{bgj9He@qI)MmYy-Ja+5Z(E4VV zN-^>VR0{u`#W#+RepP!>-{Tr18P+qjWXyE_JK&yk`N&K_D>A}N zeIf(Sl^ao>m@g2R`W{^^ZqUFS!fjGiZ%3S4F90W8%zA zM9u#){%ue7gRHh$aBoBj-GO#8twv$vWPW52V3QS?D9=vD%hQ>?klvO*4e)zgg^R)> z#0OodA|8UBZ(0kCl3U0^2Sn>Wvop45eNY>c-*$V#Q#U{_Lc)99-5nDUFg#iNTH*kI z+N-U?h7tn{^eH~kGc)RH(~Ttw!<7>GOUTCMbm;t-`LfWyirtSJ$7hs#U_B*|$GBSI zS#i(dBNQcR^Q9(hDm*Mu7#P*b+B&ypt7SN|EcQ%ez?xVTjT~7qqF~rg%|qx!d{8(f z6|ASpNKjOQ$`tEAsj;X22U#kj&>FEm*5=(|k_0$qvD|d_m|RTvVR1BN4dW6er9@US zkXb5xKkU~oAs4HgVyFnIyKXfBYw76X%PV-?Jg9S=e;Q%L%Bx|dQ9)-yBb@rh@_bja zr#Mf!F;rxOJ+j!jiv#@Gr&EtuwmWSVko@a$F!)c_6kN;L*m+6jKUqx5WER1&XY@Tq zSP2ch@M}71qhjAw&DtdO%V$<1E)D0mHh8xT4Xp;+-ZTXjx9k8g$X2y`QXV5mnHM zZ-2Q0lEutL1#JlpFb~pGjJ-e5~si4m< z)jQxr(cqfD`Y4w4#$~K(uH(R|mYklSch2shBC4%o9@rf7>Wl2heG4!ShR@;%4%8kQ z9_u7rPvJwHL604W9*aMe7CKE@J8ah$_{aY!4eBlFXT;SqG~yv7AZ0fDevuw5#vFRR zf9j#boQ^L(M=GIe+W7d|Bv|dB+yT{2dn5yZ_YUlg^DzwAKP@#K*sLW8SzGn#WCPpD z`6FVpgpE?OoiQ#3r{fG+*!b3Ovn&F>5Pc6Ys6JJf@hfK^xFT=+l_K!Z9=D3=H>&CN z&f(JcX~PJXl2g&{+IBnWxC}Y$R~owcAra*g4y1iw9#+!@t8PMYyMKEco~byBU*A94 zOv@tq5_8I@-dj>mj7fOBj!(#Wi8VBD++?cU;cqt(`PyVLqwMu^!}I%+A|erzyMI*O zfa=TmvcNC*I5)#qYf*qc^j@)n3*p>Dfg!2uGL5q6p0M`CY@FVnn`&C6Otic|f54~h zQdw9GwB^Ltl%)T*cvUbN)RezcEL-XPS#f~v=rAK$ubVX9h#|)ZyFN}cuP^S-G&#ue*C}ycV*lu~J)e!P zXj8)i?r8^`GJ<}Xke1?cV1f@jJ^xUye7V;=_o;IHRy+m$2rJ@A|FhL1$VSEK~JLq zOSe;8kEQjA$A{*gkbj$Vgw91YZ!QLDpz}N)U|KV;cxU+wZ^6+N^24gm4Vx4efzRVA+1Mf^;QE@^n) z^d{(Y>KR7pd+})f@y_$EIxq23%-n8LM*mypdz%O&Y!9xX=Z32 zjivVo*uFI#m1*H=IuqA2HvDT@ye=2daLJfvE{Jc0=>1%#nd+CCSdi{5c3606r{sSg>PC?G2RF1mD zCbJk%%hm7g>om+YzTrt3bJpQfZ+lsxU8iVU0@5Nwgw^AM9Bc+MJf2|lj0!gX;+Euf?pC=iQ z0*6DSs!G&`vv-ouhnYv{{&FZy+Qah7trRj6Ac7nB+WN+zq zxg$R4t`x(tNhsFOo@9&btJH|Pkd^l7_G0d*ncfE=LX@eBDqrQjJNtu9`RK;wNfWmH z#BJ|u&(BGwemxMTgO`(}&Ppxcml5X!reQx8`3m9!*J~b|09)Vl?Mw z_N4HSGfrjbiPMS#ed7BHUWfhDieCi0BKMq#JFx9VhJTArC>b6TW5JW^E9}ka&HxNN znFpK2BcE|uj*`_?w?1T)dlKC@XS5zXJ;d-I6e^ zSW36{$1`%P{B*DdE=*(-=lU}NTFMSYaAvrKl&rua253~z(ig2ed^LHN|9O;5INB-k zEFXD9I2iIQi*Y@VEQy!iT>y?2OTg1V&OeP@d@p=APT37iX6My^)C((9)k48e;8b%qGBt9#yvJbaQVV-o_ zR+v@akq-m0hzhHRqSUyeX*#ZN$pb_0D$mG8o5-o5?y}`XW%?Smb9*2hr_v3fT5fEqm7DSbi7^BlBnT+zuBO`4`*zk7e+|DrBbUmHah zVuu&wcO$z1{unh4n>Q4@Q(|RjzP8BJ;w0|=U7QE*n*X6F>(D3j=|8Uyh-=2cfDRi> zo=93n($-Q8w*C3ANOoh=SRPNUlER88pN?}B!)>0@3()&WKUgBV6pB8D6_7i{IFMqP6$It zZBsy+0QiU|kKBvl_f+}buNFkx{BH{emm5ZaBwe~DZSK=GD;40>WcgXmk;GBDqB874 zf{|EZdZF>Pk`KH80tp;ONPgadNPHU2aZ7LI@99~Su?@xkgqcSq?-#+D-Ew3TdlO=7 z*4TlyXh8YtL!^+tPCmo(%6XRBJNr zhpjLf8wIB~WJfWA7O;G)NGynUM~Oq(jgecBG_m^T??HM^coUq-Z6{1OY_^xax1Obg z4&iCB0?;gjzzV{*icJl+n{5Qj_8vmKyM)^L=fFgxmS#oSS(ngxaXrSvSP!QS z!)DDltoR3N&Q`ksEg;4TA}HPWH2#;v6uxCAWvv?}+d;AZupT{=>lB!no!Sqq57wvC zp@6v`+U&ON3u_#kIoF|nYs;2K*VJT1D$-`Uf0l`tFEZ;WbD!*2-ZNDZfxe08;soC{ zD81d72`bUhz!@tu=|^%1DKO|r<$WA7uRWB@dmP0%jL3LDap|iuY;>9cl_3<{4MWH} ztOG{U3!BPR?;{Cfmxi(a8n5vo6+&s7l)+8`vwoq_=ybRQ9YoB!8L}d^2QFX63LnwtP=BCS;dPPm;l8!7)jUqT26As1y6mBgm+U zWMEK;*$smTA#1%}iXIwf1;a`4=NG&_`YzR2(Q#1M=A12{ROxkfe{juUSNSac8OL)& zO?gTA-7arHUHcB8;Z@=xYATslBiLkVcvKG@efb(s{&irG5%R@(anK)7eoxY$+aJI7 zrR3-F>65!%NI+G|a<7;;!|?KdN+w4o8eH_}6!5m;K0 zPipkzeVvc=oce)+x=?BP4^ryVwVIp}ydk=F>E<2CsCTPRnH(;(X-QH(K2CS52~Af8 zZS~iO?re#V8IP@n1b#0Zse92l`wrgTk4Xj~2*Y-gRRsOLusWIpMn3#=k%E<~iRPH+xV<*wxE!^e!MJB>kb+)r`b5F_e~Hz>KWx8T>(3jX-GspyAlRf})N_ z#Q#yDlM@6F+x4dJ#AG?=VPR2XwDpF5Ayp!*Nt0nRa zbwB18W+t8c{+&hyh^G3y;~)9jyCuUwfQFg$QF=RPVpBb6;0qhI^Zfv|ENa-x$d6G& zA6MruH#I+KL}_p>>z(*Q-cQ>DX5$eWo7K{EZ!L}&wlx{=#p*m@{l_s(rr=06(@5y# zJN?h+&1AqF_n9oqlyXCn5LU8PW$EHQ-H%Rv^mp56ktv7dIgfH65+DglsNi%obDM6d8M6qpubv?TwCVVpd~4H z<23(+v!3SLlRUaBH5KWdbT4c?yN98Oo$uuG$IT$eK2Yj=0Yi?+tO1Z@L(3y(WT~_R z%r5=^W}zmE2_^4Yr!TB$VvX!%QAe=C(2sUbYnWOmccVI}>ZEI?8% zeOTA_mNOyW1B0wyj~Q!T3_3YH+*bejkeYUqb6RZ@{bb|Ly!?3jg{8z?wZ~DVz<6}* z=~Z`)&-9#^@(Zr~whlTGSlIj!A*d$3`p!|__l2PB1tR;()l2ypX+t|;!rPu^cId7| zQ*&6M*>Bv)he#@r>+jf1G4*YpZ5hr2_m8_6d5T-9ceB}mLj4~!e4N$UeOsaOixfFA zqL~ws>EK^`@eR@q2p~gL<5I+Vb8KUbCw8aRW!Wig=heH};-Lbh1UwTBGh}xL=UL;C zsKQsFluKsL94Dn1sHn|kr}a+U{dk$BPonqkU6!2SXgm{JuY1wYFR(BnE5j!N0y83L zxMLS!`Q|I+$bTQC>q&E|7N6$hd9sC##0$p`k;VfhziVEl0jkY0IOGKw>fFfw&E@RO z)oMfVA9VSx? zm2F3t6)v#l?FH>ut{=;Bjz?wIn|(EI#2gu+iaqS9=h^JPkcw+0wjtkV#*iFZqdh;} zkwe}NUFwAuo^v}vuzrAcb3x5LhpZm+WJUQpLgUPnen}>@pLly@PS-&V0I-=<7}oA` z#tgpLz+(HIM~M{H+DF%Y#(!on4+d3E`Y0m?Zh>MrV;iIqUjaF4xH&$u+n2AMY4;7q zwHPlHlFN{ltPgiWAjoLU_*-+=z?VAf_cE#N8>DGr!`}olq!J9A%RgB%hsaSs_m)yQ zR2hqeY^yZ2V?;g}|7JBYh|RqC^w|m4-e2VrM|pXz@NplI2+8<{4gImf=L%tnt06_g z-@rZLN_Zwmks%I%1k}aF|2-=)6an_H-pZDbAm-36_kK`AxoasAYvMxRMK&ablB_6O*2-0qfOpdvb!ysvfpbDAyG!sB6 zvPKMnIXvB{&l#vorWi)e-zj%<|827=iQXz&{5#*)yrMkWNp-*S2Y}RX6V|Kc!!n@s z7MrbdZ>D3j`<4Rv4N9pd`&MtCO`p*tjXz^|wf9pr-=z#2Fg^nm(V4D^bvdD7zxq2`eEk{WhWHfxqaxIP}V-@aF+&RFC610A)DX#^q3^Z0IkyW z&hr&3)`DkBiCaC}7>P-;u~DISyRBc<>&XIy&W>5c+cB9gl=9w4en(*=hRFakurK^b zwzG1G>?$cCf6S3kpGSLd2!6#>&~Z%T0)SZ;*-cMY2iDJ8kzLu++a}^4J*-fb8pw2G z|IL&b23yxKqBCvBF_<2qmax7*o(aV7?lveE1<-H;gv?8F+TexoV8+i@jV8Y@C#Tjbe)}I25yRi>3?Pw@bM;s2#+!`=9tkv1;-4sa7 zM3reYtr8$ns=s4($bcRqjlxOR@zD4fP-rLu$UA|)lzl(;nHVb;GX`6(+W8$Xu1qps zrNzS)Y94QrTkt?#lAH4f)TG5FtU^r`+)hiMn|A%(5Cn8q6-sCQN$~Xa|D^(KP? ziEEEoEpVfe)h$hD*YGP3WtB9W(tg4$bmW0BH`>*BvJ)7L@(l1*;#KINXwKI3me0T_~Sq`W}* zyy(Xd=k9VruTV(bkiyie~ts*wmAf z%s4IPsmQf*1g5GYpQg<<21l9Ier;@**qb%`O6Pk<`4ix{l+s7)`Z}Qm>_Rvhn_*pe zfuTre($w}T&S-8EEya>Iww#9@bxw*yZLjLwI}kii8VmOMhANOSyc#Qs1POzGlmkvTt(&u{qiB^YM7=XXml<17}S8 zQ#f0(!ti3`N1Ex7j3+w)d~%sx6`fNPiKJ8Z^!}zi)E(Z*c*PBXU&v(icJ+$6)2nR+ zkc1}hqh-BYQvHvT7P@bngC}qDF9rt;$OguXDDAZyYMuBZ%jAq%9~1Bi^SxSrXfWux zSu!91BzwGHTQydFPAcy@+h3MGpe}T!d+`pqO5qi?A zWNg^1(_~cN^NF!!pPAM&X02+#CM@tO=fG4&B1Rw?n$yUS@`{#1?tS*;_^yVvV1ltk zR1t@tkM!68npIAk+4ua=>o1hwj%bCB2xOG*a!4IEKJtwMgl9OE_DAVlM^|CiHD75^ zm}VvP^Cjg|M+FXTnKhg8M=ST(AURT%&hA2C?tp)yCimbvR}3N#i7ta5S0}{#Xg;ce zI9VPu{jR&i30C-yp>{!68OqO}1-N zBca#Ft`c0*-?Ol10PWrsqomvy@nIN9#{g$B^S`^k=lNm#v} z$eL#|_U;AfWfNn!`$A;Z?lgf_km@Xk{Or!r^viBk(o;XOvOiN?$JDY+vc)O!&t}{C zztMnMIR}lGAdSNJFd*~yg@H+8AU`l2IJTw^Uz@6cW0D)v(=79!=_=*v3SXM!M^CxU z?%^_bjInKU;7ta2|1!M?=)1)^3R@VKMN^%iT<&UTJprW23wBo+Xa%#Omv;e-gJtf( zGrcll&Gk+_&8aU_0g>%y*P9)W?vt^1o1rN@Qm~!_rF%wP${g?jH06Ni`VB5`*B+29 z6w3lvR|QB3Lmpxo%sq(=T$gbm26y1+2s#0%X3PVlJsEw1fopl z6F#AKi|2cA$(7R&ULczm8#F9!n^-ElI~v)g^yzPe;*_lpMP7Lfu~Q`gmnU`~@WMfk zO+KITx^9L1l89Js&Y9)$Tl-9ypxmeM*8t2brwO3Nyguw**!aAWN=LVsTIZZF0RLcN z75K}o=t{7UUZR;D|t?Eo-QrJHRq)T~&e$_YoK zIba9lqhkbkUJtk{Y^MoldNRiZ|CeUQ&ZK_KolJupK-5A&3Nd(Xo^;e_6|rr(xwfo0 ziT;R>uPxSl1&l_;TrzHWx8&ecPA<-1ma;$ogVBoyM_#T;Ec53 zXcQcqd)~c$>*;4E9_8KzmG6e~Z)avC6Hj2)WPa48XBCR>k+*6Xj)I|2#M;vNx1Un_ z@4>2nr#jg;-HGyPPn}k&qu?|;>ec6z{QEe zXjkh>JVMY_6AWXm)%fo0_e77-(?KDASyk_n&f8MQ`%mxL+;;HNh6qw(CYlGYr{Y3b ztCC^%@fPA3nu>Gk(O8uMF`s+KKd)e05XaWzjX;EH9qINTa%W~y0X_eZ#9l{ETBlr#0a7xLuOsJeX599cCbCX^f|_6|{HZ0k)+ z+XSf`k=|N|V(sW$?56xQ3Ey@NFBo&fr{u03Rjp5uy&L(QcOF+}Z8e@+fVcuCcXE)2 zV%m+0!g6c4>Eb00c>Ntp9_)jr_ELqn-K|f@lqka zTfoE>L=#G4aoCMg+byjqcJj$!|SL&fVXPEL2}}v<=rAWl=C|kStKtq^Ntkcemsq)3>&byH{%k|3UYL zAQtMvTZ~FtsHW~R*QSX5Qsp1?|Gj)nXEBIM@}k*gQ?U}9&Mitmz!%2{#_+E;QQS$?dqZ6wUeo1-zScifv zsK3sZ#Vkx)JN!qZL2zj?8543O+jKUC{teTWKK8fbZ$u`S>MbH*Ru?B>PKjLj#Vte{ zc9}*u{9%GiJpK@}z~OI$N2Wy(!jK`C8lE6I0%9r-1QORO60ZP^uo8eXYPZgo5qyKx zWF-6&0PMr0HCNkbjyVCIt5T}7dY)hTzpDq*qm9hLL*$N>?ISYbHb#wRNq^d3NJe$? z_07@6+kC$48v&jtN3+il*rxO`1mL94`dz*@aOcAePM67#=4ft26lTnEB07L*fli_s;j$KP%fh?0AT@ESY8rocnlgNv8iadYsU8 z+|+8WQY$cFjDN0fFmSeM*|>_Yv|2K=|LXLp)IjXp&M@-V`k%B0OR6W#IL{R6l40qq z)89)O+GqBRjcJm!6~+9GUB71bB_{{p*$7@PBkNJ-gm+tCooLiW^3$Km!=D1loA-IY zIHF!4WOk>UJnl~$cf%pU74gAjC{K={Kc(G*E2T*g)!pe#kMkKE-v>Pq(=@U}!nl(X z!b7K7=&VwuX7cX$VQ}}6+Z&Pm1(Fut^QgITN~XkdN62pPeBMGnY8~V$z%%5fMQzth zYpC12f(I_I{ep?o_hC*SHBsq}i12R@|L);gduLRK(}agBotKyJh|KTYrIL3NFM>>W zy$0hbR7x#z7{u}ycE)4(Yi>OxEER2z^sZ6%o?5*A)66GF>upE6&}jF3)$pID-|zzK zgxFN$ys4~3_7|`8cblhi;~Qh-tth9fh~!i4Yc)@uHGT?ydP-0_mGmumvBr0U{VinY zI{wV5>#Nh7hL$s*4I_v_d)Y&XQh^6m;7fnejns6*dydUF4P!sk6|+odYz6rL!t;&Q zX!93Ff(lH+AOZ{2NcIdV>`Q3bPPD$&whJv%NR~fKHJfqym#~C|PVM;rf(rh#US0*n zYMDG<_H9>xDCzsGWIs_Aj%&tv8QJa@h;4sWM|FfqVtoi3snSf1^R^-IPeMSb(s2L5d!mPp#lJuoy)Rb-J z1{Lo3Hj`k~LJ=q-OtG^x{Y378gyY=ncN_gWN06o2Ob^Z`DKVt?E6)oWAf;ay$X%CF zAiHp=`#858;>&&#qh{A7JG{Ul)rn+RAMVuC@O(>&eI`il6 zMcKLT{)=hKsq?!7j6_!FC~xCB74lM3CJp+&oPI2i4L6>ANADkvJ^50fsC-UgbcvLn zmmrU(ws2j#*CG1T1EbRgp(fed1s-vLQ$5ks&`?YhXkP^J{=sJQ$T3`~DR{5&-g7W{ z`$Wp!X{MPPjO%2C8bfpZGvig)tY+m^NG-^rV8J(izqu0I%@yR-T0(&GjF z_Ft8mDddZEXEI{8a-Av@T?V;!Z4P`T&FSV@sOiuxk_309rD198%>5%BmBzhW>0d3# z2d`Y$N7a_c$=WL@BUWbYfd?_U>mnt%u0o;2Eu5|YWa#!pK>XpO)uq$Qwa*I1815?v^IBxb-1E;wx5cH2Zxre;*`H4c@!;T$Pn6nt zE2Fq2?LtXP&Jcf`HwSq;dx)D${G*`I#Orv2EUQJF>y@;}02p&`w*{i*6!53yD-7S$ zA)~o8Vt>0*|Mzo&@K&eZubJX=l5PzPw{j!0ArDNB#v<)CqK2&M(axzPeRwgZ!uK-dJGTU(6qJ2_o(<<^h`$H z_M9bWtkjy#mRQ)OO}3j@!wPMlH(D6VL3-iZse{Ve_qW&V@(_t^VrCss{ufSc??*am zR$|@$F5{pSuwIeZC7_=6rh#~}Bz%Kk!YiBiz4E6(&v=t|(dJ#3q8Vxa5ZG>ES7&#b zLQCeKckMyFlidX1oPst@hVWNJ#sn+}bx9hO_xoiQ_U4@g&-RvS6!CkllQ_c#f|%nT zrHBB})DYYylB?PfanX!U;=~#kW)93uscrndAlwUFL?&$%IvdGW5xXn+DA&C$v)%t2 zWnZffwEb(|O=$#Wj|i-tSRu0nAN|PCegAVDvmPNoE+WxZX?mtl#US&2HE|M{1RT18 zS1uT>+J}1j;;To&o-@?$uM+G_ULT!Hm+ux4(#qo_b*&&`M0 zE+oiTTemd^hKG}wNWZk`&h}|@<8H`v{EXPh6M(f%1C1thldUwZX*t)Ai)&eMremrt zmu_`vhl*~JuRQN0?jG!t%Z*H@FG_GQGw4{gO>kXy%b=oD5%EJ;6w$2a#S`lWDmeFy zOW98DsNBakdXvS1T3YIVv%?2FTs<{teC=%+w!c{RWgxWUG{435sek% z9=B2Z=Xb|#QYH@zb*SHux>BZ(iPz^ZqD^UKOBJ@X57>W2_C0P3Koo0u7g=P13o_Zw zV4+%n?&#NBsSAR%?1<31a5si1NH+SGk*N=w8W7E+nzXat}s9ql79@8@ea;Yx(u?o6H7RH4Ul%$MZn`cKbF{@8iBvV=OY z!33tqKg6v0LT%rFk_ERCjN)y^^<_~&FV?2GJb=9yv(|Gr0idtqbn1Gh@#XLHk^bA8 z&v<;Dczx-Uhy%04=+~Ya1U`y0-Eb?~>X+Jn{E*0yuIS_;#jVbuVdGpY!v==87&i7y zvOTQaAF}>U5EyUPDxEv`ArKI!l=&W?QEplJZ%LndN*F?R9=5md};^QF=i{ud5J?~4YK$8vB`|%XqyYKCZw22`_~o|+yCm%kuUSa8|!dk z8+m2A=a-8GaLNwzcWSMb5524oJ|jMu@{J4uO;VqDl303Cd;-m=Gh3hYCHJ6;bbjbk zsvn-?==3;FQcH8zvPk~iNm!hSNn6FeKg;UXyxc;M>-5h$M%obAB z^}Cp}Jl1}9xARKyYj|Ejeakm#TwmS+2FwZ)`ym%IufVwF5 zOBk;&P=yxlW9X?^q!_|6QG!p1A}i>l&1#t5bZuWF&GExl@h`~^){xm#f9tkun$!q9 z_k_`ziw4+BGy|%F_KJs?+`B|$k85xTeI3+ZzEyZlU#s!OaO^AuQ`kZJh2iJn{ofwn<*bkchw zk#FcBM2QkfQO~WCSf0jUC|e*ni_&s>8HnjyM(=6a6P%)xHahy&;4k|2Y(E4benm5t zau^3`p;vkP65JkL2@Ln$vS?`CSE}R4Bxo>dMV2+T7<*h~#O;0<2goZ}{ObDD!dO5! zFWMh2oWlVAwkiKHQbIR!65iE(c2;$f*kU`p*Mtjp^gS?c7=1fGqAk=Z>(3JiOL@kEqj=ior|ZK zE-v9O$cCW5&pyYCI=YQ^2l(CLJb~)0P%ne&dEjppsSB1h^yg6-V=cH*Z_UT6v9~Hr zjt$V4c0+q%?6#a~f_vP1AT#*X2_v1^mW!`icQTG_q6EMZF5%w%GE(tu67X1YbkwtG zeeD3F6~CU1L4|6o_!UiAlOV#zJWbI(+pS%1(Ncz0a$dP`$ z%YSR2_HS&<64YU6v(jG??acsC(dQ!;{o@v~aaEh$J-U{9b3K)iu!&H0%18;-WQNld zy#?Qh;U!A!iONSl=es5=7;EqWVoo-TCdDr4q6+rYcbEXX*krpoxi61ilL$6$ts4!3 z0ESbi;n9;>J5UQ`-zRcEXY(n545RXUFkzHpKb9u+Cf+cIah@mNK{6_$+#(q22sv-# zh&M5C0ItP_ZFNUsVtrwKaZprS4hkh^W89W$X_RXG(}WN*YzGr&;=IY5lP`d8Bc^IN zi$ovclm*GB5kbG*VTSmDxJZ98VguLvQ9RuLTyfVZ{BcQHJU(5G%4oA+ zYu*aS0Zf}W8c>nnd9|eC6*}Pui-(HE!V2y-OIA7Uwo+p|{aS+I63SOA= znhWN;u%xdQnwypLQ;5pU#Nv1Gh6zN))tY9qs^=i4eB)4!mlju9Dr<{GU1Mv{YNVes zFXaK9+p=L~20L4{9n9cTXV7*qr(XUPu?)`VMX0lf2#>-F!~se_dtf$)u^)E=bX6jx z>H0uY9(efuc3ucLi6+RiH2aHRVSb+nFTMR~-KxmV8>V-~Q!&lG=6&QD!JxNFz~+UI z&TN7LhFK5NrqPhXoIv4Op}pr?H5UqqZtlCaLg}`xa-N&$zU{=@3a!zzxXT3!b}iHy z$}K4nP3I89poyy_>4@cQjrK76uZKML*53-6f6C_zbwTGJ#r)r|Qi9_Xdre$o7$PJR zAxROv67inhr1eP|f=UeRrJIFU%?K3CR;%y5-s_tWl7F;KfuC>+!ntF~Z-!8AAzjzE z)GJ#F`ZHzzgOF6r_%OtSwi?TL&}y?h9ldNpZ8@)E*85juDp`I)2}jgI z`x)Y!<64d6O&J}O_nK+)XWx|so+LKo4;MZev-ez-1AdtQc{wms#TFmKUq?xSmxlvL`r=)} zvGwD1xmn*Z@lf@4Ah&zV9-AI2PMg*{+E(CF&lni;9K@DJ56|3;p;vsR-qT?G()BU+ z%y+4SxJ-J~paJ~6NBi>+ALd8WDedlPpVvEX&j<|6zhc(Nf{!k- zANayG+zi{|q->Y}o2|_Ukv}C;&%4u3uY_ogcL4Vq9d=1Lq0;oSbd12C!*yWQQ5(ep z>=@xv0t1D8%XGm44$c2MlJiuYA*;3Vwplh+ct3D0Iynq~4B<9bT6cvyT!%dIW#qQ> zdi+5oFZnEj2JOo!s^8&?1f zSHK4B38#)I{W!|hIrxFKJR%;mRk{Zoqva2ho$&dPJf=Y z^KD*pVFvtP@)&;pv$l!gpW*jNvv`SBY^|(8v#-2|cKgrat4W=(#DLK2X-X{#8nV4H z7kZ=92#F+pl>6UXq8q6JB8)bkaJ0_bfk*0|3>|w_otjFHx55;+bN>i42iImTteOli z=Q3DzP`NOGs%O{pW91c75uM)4nTG}TPXuF>+=qb(j{LE4hBYGrpG|9~bj zXM;YBcEq-W!(!DUxSq>BAmHu*bc*m&v@M#N{c@wp8SQD6%mV-3K(2mI?it50E!X#5 z=ge!jyyM4011`vH;_pT$PP>%<2~==r;w= z%ZaL;L`5s9m;abkQz>b(JH*#7q&^=jZH$oR$+iF}Y*XAGsLd zy;j})NZp+;p=;Lfih{p%bFdHM%Hz|IBwMtG@W%N!q0limIRms5uSUjUa*sC5%0lXc z4RSeXVQ92O-PhVNoDmP;Ck{a?1EES^e`1|ZG9=`lIQq$B^7kd#TnH?_RSFQF*x@pF z96M@{>A{D)(Odg7L2W;xoBN>{q%+jS7Pb)~zWwdHp#@VCp4XuUVgsAIUX3I1bd8{~RT5w5d6fO8CmGCJBE<>4-a~;Q)Y{(Mg zM3)9)Lzl#!EnNV(RVuOUWT%j~-2MCWb6+@)mhW$XG<~gf{lnnKWs-?259y8oBTF1b z%zZa$fH0rn-t@e?8n|5{i=t7Bd~l#5HkH#hPxy{|mmFX74X!L6Zm$;GsK>h|_*Y@G zyPS_rHSNNdUgy=+MnwPCsU7HI>yj6BmJ?I(otj9F^nHnjy(t7oN^lkW<{`kx03ZgB1r2yXkJ3h9T(i&E=}) z)TMi|sR~uIdFQE1y(=G24u^?xyzOVrkX5Q|OBNfRnMh0U)s0f}=#h))%CH%W6f+{G>_5rfH=pj7h7fQ!r?IcY ztL2rE*2Ka;P$j7}t=w~i3v2x`P4rFa*JakzJv~8j5X!DAqve$Q2#=fQT(woDt>Oa( z8W!ZMA2>nGll#A>H+ulVx+R^whh<-!hJH0rRssrOxy@{errfRE#YXY3`yv!L*VqXm zvC)}DaSttKiDkJ`Wb8Qj0N5d*l0a>J5~K@)kXn<_DOBqT!T^>^Hrw$#a)@kB2{QpP z)ia)RY#YH()FJb3o{h8TeZq*r`VtHEkEQ(5b0>VSo8DxzDMbjI>iTvro)!!DPoHLW zbLFaM{)jGhr3;uI#O3bnDu{xOr`<(-r~A0~XK)xr{`c8t0-(~$N7YHNA1C1?YY_r( z(f`D!yRwgADq@t!v~S}<75;jGH+y|tv-j_rpz~`fm`eQXQ3WzJn^-Sqd8q6p)uQjT zRAbB8jl77lh2N!M8O)e~l(K`DWwFh$vxm5lFU$_jrT*+OaUDaYXZ7#n-}l6rJ>F!> zbPk_8woTtok4iv~a@;=yOgrM{Z)3rUKS@*?iZu!^MGhVXSIa}=sO3srG^%0DN*0`v zn9y%sE|bp>on2;Tsx|;dudxoss*a4D#itz))r!RTyS66s@*W&BkS63%*`p};O(`Ov z+_FnUR)!8=%>2#_@il3ejSuBLUxPf!k(^ZQ0HdNHVu#olRTk&W`a<(|ipi!Mues;KDSu52U54CXk*u()&QP?w7`Ty#36w)tEq1x)V_wX3zVH$ zme;)uIW5&8L$#BN%m>=6T+b6<^LUi;E0QB;c3Pc#Kzi|F?5}!0vQI5ZhNWSd4tM*p z)Cz0MrY`I;GpMzVHLz-y+d(JUxo`$>)B7Kbqiz7DV1ADbEc*b1$OYog`$7wEbY*0B zyiT5)e6Ws)dEHlzi?6PYdW6v=uW{`B_RR^3ck9IGPG8*a358Ye{OX;%`9th*>&5CQ zd0bpceQH55oaM6uJ{Nr zj12nA*cY|1&S!W$dgS}6pyejSny$2KQFMSpfdo?VS39hHsbMkbp&E>YPeRgujRBPV zBN;k9cQR{-f5#trKpStiMLyg>V(8Sujoz(QxAWGJPywt;c$W5>5=xI90_;bLgpIrA z$B-xzy8Pa&mvX|Pgn0*1s<#AZzu9w6EZom6h97A!8*~tF$RwOjyDgeHkEHbLJ9E>^ zlS6^UAmV=3Vf`==GK*Z?&E@DpYuV_wlw_9YumvUP z3n@Zk2o71lA^ex?IQkR*=(P4-lkBBF-Hl$or@{)#QsEPl>m-@XR5Je|uWPZrqY}IQ z!*ONA%_xp_xB|EXq?3ay5{j1hTjRbD56^uL}NwXYzsmzgyY?~*=n}4K0u;8yTAr;U$9%i{dx~R@`0<7;cMRQ zIB6L*RKPn6d^?giY) zoBbY@(w*_K!bkjSCA|>NX$7S$w+_FiR0a z3c2PQ()bl_t)MrOl>izE1Cx)5+BC7ZKF6)S*ZL?Z>l8$7dDgA=Gc!i2&23Fj_46pNuW8Q)@tLW)+ov zOu(>8P8-QNSO)&4UdWqT!b%G>cHJLredhM1 zf-<}`C$L7`h{{X3G0p!vaoxjuuHxpC2#aJ63s}DXdHMCA0vqChC^f0SM$5C)zJ!(F zAR(N^*`FHg&X(v%OYF+it9cZC@fN4McrW}qxE zYs-Pdc=ckc@FYh(<>_n^^R(R2U_=5tKJq>7A4Tb`APo7g_W@hamOoQ+;Q+$U4(oi+ z)6Q(^w)Q?r9wA~&STcq`k4Y)na1Lt;$p7@t^OhqkWmuka7-6hb&hU2CR9T=O`FdH{g*$0TpRRQ-ikkiNU>$^Yt*LN>? zqijBK5J&8%@$4pU(b;FGAPzbp8O(vARac8{A;~Tj<*wE58NJ3*R+WekvfJ3wFf#+)TXezx8rZf)8WXazj95@6 z6{ON4l6Z!9Bhw>Dkg`%t^JOZCOY7Be!4oSpfT6%f6y(bF40OYPEQ6&*3 z_7-mn77gQ}IkQ3|(Qe@GD*~Dw!2@K8@DK+v`ND3$X_>#?$^ZHRRl>2Tl{SO)84z^3y(H7(h->4n=-5uE;z}BeUMk2{ z)Pn3c9=+7$GiuV!e|_!NsiY0B#C{T9Lx`XzwJ0K_r2;nH+a}>_q#dtJKBk z741N439ozhuG};Abl${Yyl%Tgt>M2~H*`DQxOpa?$QsQeWHiIgs2hh_b9FVwV_yww z+-?j%qPxhM2tO&=)&Oqh#_W0IbxKGd#4vVD5)ENL8DjNua>w<}V5KSTuM+t;@)<XVKFC3zLRB_6gJI1j71Ejs~Md9 znrIvUyyJ5>@a|K9dGWtLwjW+Una(m5$e$(Q>LBO>4|e&N@*Q+&pIj)a@=oQa9yR`c zSYL2&l;c1_)f7;4I}}v!S%nGxET4i@EOt}jPRB?l$!nL$P&1)c{-sVt*wHNEbq8~Z z*kq$h6l7>c30;q&KHS<17L4_o{V>QY;<9AgKfuW7`kF2tiD7--b{DB@OU zg<#eL6*mc)85(5;hk?SAO)s!QL7fTgBPXn0PzTFo3=3{G{SjB~B#dcdZBt4qolMvd zKXWGRfCE3AV;$1ebvG?RqJC=hkioi`*%G+gMFV;W8eBl{Ko;lvbKHtmr+;Y8gv$tnogrVdwSP z$;vo|WLQv!udc`x3=0t67!R*DVYJ2q%W!wxyjvkz^Pf4hWj{A=M<`FU;9R(*h0M~f`A@Pi0U`bD)n3sEsXeB?C zJJk$3ho$0xmb!oWCz=v!5OIeriWmWQRf$z+f=B1pWwkqMq6|E?Kkm4aXk*;M0myhx z7VKG@A!g<%a4GKyI*&z?WlPwT$xwt9e=Vx~Rx2hq)nc`eZ9%VNTa0E;uTr9F@>lCC zM#=hjSwSynHW*$WB=km8JyrKS89Af90~L!Jq#*a~Va)7~uhBNnYy?3j))Zy74rerh zuB6gjOP4K3>2#5*2cx43k#*#i`mpG{KaZetzq8o8hJ_^-95TeI3nkYO82e2Zi3a@o zrQ5`^5irjnZ}K4RRG`h`*W!nOg4y&wZIuNc_No<)oz~d1dXpChnafa~Y%U zCoOtfpLhzn(}-l&7r-_vG>Df13G=X#6r3^_-+x@%c@*ew)T&ALLEG;=0fGo3y?XgX#X;N;u~Wxf-NRUw2o~N*oo_;Aani^ zS1XG=$ud?7j#up#X1`id3T532`>L_8SO4Oa5Oj_1b>c~7)5tA>#EE~t_F2R8?4!(? zIJ{E%d94-t{fuCut>j|Twon-5$$Nvt+-7D%H>Vzb8ZDm0 zR~=_^S4lX^p$8_h2Q}s#A60j{xL%rU2gw7%whB`>Ez{T`F|?T^Q7`m#+Z-u%Oq=?p zBKjp8x}zJ+ED8OY2-LZDx}<%D4dE(X)LLeDRYr$KOPVYg1h&|u8a@VqlPj6@Rl-f7UCd~eZ5&8>g)V`EpXp(!Bw0J55B04apz zA8rtke}fB#m@#JV7T($%K08T<>!T*qatqIA{_Ltz3$Alab82_-3M_Z3X_Kx%;%@o3 z;#s>t5X*6`%AHZ91>aF6Go;X8d9D Date: Sun, 9 Feb 2020 16:26:55 +0100 Subject: [PATCH 014/449] Add delay on play/pause to prevent hiccup when entering fullscreen Resolves: #589 --- src/controllers/playback/videoosd.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..d07cc1da8c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,6 +1230,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); + if(playerPauseClickTimeout) { + clearTimeout(playerPauseClickTimeout); + } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); @@ -1369,6 +1372,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; + let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1388,8 +1392,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - playbackManager.playPause(currentPlayer); - showOsd(); + if(playerPauseClickTimeout){ + clearTimeout(playerPauseClickTimeout); + playerPauseClickTimeout = 0; + } else { + playerPauseClickTimeout = setTimeout(() => { + playbackManager.playPause(currentPlayer); + showOsd(); + playerPauseClickTimeout = 0; + }, 300); + } } break; From 220bbb50a8f70179d905931c98be4abe759f6dc6 Mon Sep 17 00:00:00 2001 From: ido1990 Date: Tue, 11 Feb 2020 19:35:51 +0000 Subject: [PATCH 015/449] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index 7a8aa6d9f3..e94a916b02 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -546,5 +546,9 @@ "HeaderFavoriteSongs": "שירים שאהבתי", "Collections": "קולקציות", "Channels": "ערוצים", - "HeaderContinueWatching": "המשך לצפות" + "HeaderContinueWatching": "המשך לצפות", + "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", + "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", + "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB\\IDX וכדומה)", + "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף." } From 0b779d2fb50be8fe2d0742b5c1d39e133d19811b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 12 Feb 2020 09:37:39 +0100 Subject: [PATCH 016/449] Fix linting --- src/assets/css/librarybrowser.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index af5b865a10..cbbd2f198e 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -617,6 +617,11 @@ div.itemDetailGalleryLink.defaultCardBackground { height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ } +.btnSyncComplete i { + -webkit-border-radius: 100em; + border-radius: 100em; +} + .itemDetailGalleryLink.defaultCardBackground > i { font-size: 15vw; margin-top: 50%; @@ -643,11 +648,6 @@ div.itemDetailGalleryLink.defaultCardBackground { background: #673ab7 !important; } -.btnSyncComplete i { - -webkit-border-radius: 100em; - border-radius: 100em; -} - .emby-button.detailFloatingButton { position: absolute; background-color: rgba(0, 0, 0, 0.5) !important; From fe23ede57b39a574140ab4cd668697e8b9003155 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 19:51:14 +0300 Subject: [PATCH 017/449] Pass pointer events bypassing the slider thumb --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 30d4ccb6d8..7f7db46f1e 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -79,6 +79,7 @@ background: #00a4dc; border: none; transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + pointer-events: none; } .mdl-slider-hoverthumb::-webkit-slider-thumb { From c44b94a7b70efadc6f60b8f1c0b82493c7127f35 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 02:29:36 +0300 Subject: [PATCH 018/449] Fix font size --- src/elements/emby-slider/emby-slider.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 7f7db46f1e..b640f4d327 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -29,6 +29,8 @@ /* Disable webkit tap highlighting */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); display: block; + + font-size: inherit; /* Chrome and Firefox override font size for 'input' */ } .mdl-slider::-moz-focus-outer { @@ -72,8 +74,8 @@ .mdl-slider::-webkit-slider-thumb { -webkit-appearance: none; - width: 1.2em; - height: 1.2em; + width: 1.08em; + height: 1.08em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; @@ -100,8 +102,8 @@ .mdl-slider::-moz-range-thumb { -moz-appearance: none; - width: 0.9em; - height: 0.9em; + width: 0.81em; + height: 0.81em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; From 20a20ff9d18bf1c4efb6965a7faed445cbccf225 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 20:04:39 +0300 Subject: [PATCH 019/449] Fix slider bubble position --- src/elements/emby-slider/emby-slider.css | 7 +++++++ src/elements/emby-slider/emby-slider.js | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index b640f4d327..f1f6b72ad5 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -220,6 +220,13 @@ bottom: 0; } +.sliderBubbleTrack { + position: absolute; + left: 0; + right: 0; + margin: 0 0.54em; /* half of slider thumb size */ +} + .sliderBubble { position: absolute; top: 0; diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 24592f4515..00c35b4e2a 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -115,10 +115,11 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli htmlToInsert += '
'; } - htmlToInsert += '
'; + htmlToInsert += '
'; containerElement.insertAdjacentHTML('beforeend', htmlToInsert); + this.sliderBubbleTrack = containerElement.querySelector('.sliderBubbleTrack'); this.backgroundLower = containerElement.querySelector('.mdl-slider-background-lower'); this.backgroundUpper = containerElement.querySelector('.mdl-slider-background-upper'); var sliderBubble = containerElement.querySelector('.sliderBubble'); @@ -152,10 +153,16 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, (window.PointerEvent ? 'pointermove' : 'mousemove'), function (e) { if (!this.dragging) { - var rect = this.getBoundingClientRect(); + var rect = this.sliderBubbleTrack.getBoundingClientRect(); var clientX = e.clientX; + var bubbleValue = (clientX - rect.left) / rect.width; bubbleValue *= 100; + if (this.step !== 0) { + bubbleValue = Math.round(bubbleValue / this.step) * this.step; + } + bubbleValue = Math.min(Math.max(bubbleValue, 0), 100); + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { From 40c7dad2411483ad26d981e1798c35e1210f0221 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 21:21:07 +0300 Subject: [PATCH 020/449] Resize progress bar to slider range --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index f1f6b72ad5..180d728a44 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -167,6 +167,7 @@ margin-top: -0.05em; top: 50%; position: absolute; + padding: 0 0.54em; /* half of slider thumb size */ } .mdl-slider-background-flex { From cc84fce75b3ffd4dec32c903dd6564837b111210 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 01:45:46 +0300 Subject: [PATCH 021/449] Make slider in Edge same as in Chrome --- src/elements/emby-slider/emby-slider.css | 19 ++++++++++++------- src/elements/emby-slider/emby-slider.js | 3 +++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 180d728a44..18c09f61bf 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -72,6 +72,12 @@ display: none; } +.slider-browser-edge { + margin-left: -0.16em; + margin-right: -0.16em; + width: 150%; /* need to occupy space */ +} + .mdl-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 1.08em; @@ -114,22 +120,21 @@ .mdl-slider::-ms-thumb { -webkit-appearance: none; - width: 1.8em; - height: 1.8em; + width: 1.4em; + height: 1.4em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; border: none; - transform: scale(0.9, 0.9); + transform: scale(0.771429); transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); } -.mdl-slider-hoverthumb::-ms-thumb { - margin-left: -0.4em; - transform: scale(0.5, 0.5); +.mdl-slider:hover::-ms-thumb { + transform: none; } -.mdl-slider:hover::-ms-thumb { +.mdl-slider.show-focus:focus::-ms-thumb { transform: none; } diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 00c35b4e2a..f07e6433dc 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -84,6 +84,9 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (browser.noFlex) { this.classList.add('slider-no-webkit-thumb'); } + if (browser.edge || browser.msie) { + this.classList.add('slider-browser-edge'); + } if (!layoutManager.mobile) { this.classList.add('mdl-slider-hoverthumb'); } From c6835f9c41180fad07b9a159e7c35b47e90a8167 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 13:14:12 +0300 Subject: [PATCH 022/449] Make slider in Firefox same as in Chrome --- src/elements/emby-slider/emby-slider.css | 24 ++++++++++-------------- src/elements/emby-slider/emby-slider.js | 2 +- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 18c09f61bf..64f83d7cf8 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -45,17 +45,6 @@ background: transparent; } -.mdl-slider::-moz-range-track { - background: #444; - border: none; - width: calc(100% - 20px); -} - -.mdl-slider::-moz-range-progress { - background: #00a4dc; - width: calc(100% - 20px); -} - .mdl-slider::-ms-track { background: none; color: transparent; @@ -108,14 +97,21 @@ .mdl-slider::-moz-range-thumb { -moz-appearance: none; - width: 0.81em; - height: 0.81em; + width: 1.08em; + height: 1.08em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; background-image: none; border: none; - transform: scale(1.4, 1.4); +} + +.mdl-slider:hover::-moz-range-thumb { + transform: scale(1.3); +} + +.mdl-slider.show-focus:focus::-moz-range-thumb { + transform: scale(1.3); } .mdl-slider::-ms-thumb { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index f07e6433dc..8f93799e67 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -3,7 +3,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); - var supportsNativeProgressStyle = browser.firefox; + var supportsNativeProgressStyle = false; var supportsValueSetOverride = false; var enableWidthWithTransform; From 91631f266d8dd98e40407511e1575080472bde56 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 17:07:13 +0300 Subject: [PATCH 023/449] Fix progress bar position on WebOS 3 --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 64f83d7cf8..ec1dc806d8 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -167,6 +167,7 @@ box-sizing: border-box; margin-top: -0.05em; top: 50%; + left: 0; position: absolute; padding: 0 0.54em; /* half of slider thumb size */ } From 637480230959217fade1c90542357bf0939f5b61 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 12 Feb 2020 13:37:40 +0100 Subject: [PATCH 024/449] Fix linting errors in videoosd --- src/controllers/playback/videoosd.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index d07cc1da8c..eccf065487 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,7 +1230,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if(playerPauseClickTimeout) { + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); } var player = currentPlayer; @@ -1392,9 +1392,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if(playerPauseClickTimeout){ + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + playerPauseClickTimeout = 0; } else { playerPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); From 417e4bd12ebe6a3ae00c5780ad7ca4c3ed2ed3b0 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Wed, 12 Feb 2020 15:57:59 +0000 Subject: [PATCH 025/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 811c21cff0..7c2d9b1e42 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -172,7 +172,7 @@ "HeaderMediaFolders": "Média Könyvtárak", "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", - "HeaderMoreLikeThis": "További ehhez hasonló", + "HeaderMoreLikeThis": "Több ehhez hasonló", "HeaderMovies": "Filmek", "HeaderMusicVideos": "Zenei videók", "HeaderMyDevice": "Jelenlegi eszköz", @@ -1128,7 +1128,7 @@ "ShowAdvancedSettings": "Speciális beállítások megjelenítése", "ValueSeconds": "{0} másodperc", "AddToPlayQueue": "Lejátszási listához adni", - "AllowHWTranscodingHelp": "Ha engedélyezve van akkor lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Jellyfin Szerver által igényelt átkódolást.", + "AllowHWTranscodingHelp": "Lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Szerver által igényelt átkódolást.", "AllowOnTheFlySubtitleExtraction": "Felirat kinyerésének engedélyezése valós időben", "MessageNoTrailersFound": "Nincsenek előzetesek. Telepítsd a Trailer csatornát, hogy javítsd a filmélményt az internetes előzetesek könyvtárának hozzáadásával.", "OptionEnableM2tsMode": "M2ts mód engedélyezése", @@ -1375,5 +1375,21 @@ "LabelPasswordResetProvider": "Jelszó Visszaállítási Szolgáltató:", "FetchingData": "További adatok lekérése", "LabelBaseUrl": "Alap URL:", - "Depressed": "Nyomott" + "Depressed": "Nyomott", + "Desktop": "Asztal", + "LabelTrackNumber": "Sáv száma:", + "LabelSize": "Méret:", + "LabelSimultaneousConnectionLimit": "Egyidejű streamek maximális száma:", + "LabelServerName": "Szerver neve:", + "LabelPleaseRestart": "A változtatások a weboldal manuális újratöltése után lépnek életbe.", + "LabelPlayMethod": "Lejátszási mód:", + "LabelPlayer": "Lejátszó:", + "LabelPersonRole": "Szerep:", + "LabelNumberOfGuideDays": "Előre letöltött műsorújságbeli napok száma:", + "LabelFolder": "Mappa:", + "HeaderNavigation": "Navigáció", + "HeaderFavoritePeople": "Kedvenc emberek", + "HeaderApp": "Alkalmazás", + "GroupVersions": "Verziók csoportosítása", + "CopyStreamURLError": "Hiba történt az URL másolása közben." } From 7faa4dab2bc8745c72374de9e6b4ca3863c0ddd5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 09:11:05 +0300 Subject: [PATCH 026/449] Remove unused CSS --- src/elements/emby-slider/emby-slider.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index ec1dc806d8..4284d7d81b 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -146,14 +146,6 @@ display: none; } -.mdl-slider-ie-container { - height: 1.25em; - overflow: visible; - border: none; - margin: 0; - padding: 0; -} - .mdl-slider-container { height: 1.25em; position: relative; From c4824abfb08664822480b4662c5c24fa4d1f9193 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 09:15:28 +0300 Subject: [PATCH 027/449] Make a style transition like a button --- src/elements/emby-slider/emby-slider.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 4284d7d81b..9ef577a19e 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -75,7 +75,7 @@ border-radius: 50%; background: #00a4dc; border: none; - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + transition: 0.2s; pointer-events: none; } @@ -104,6 +104,7 @@ background: #00a4dc; background-image: none; border: none; + transition: 0.2s; } .mdl-slider:hover::-moz-range-thumb { @@ -123,7 +124,7 @@ background: #00a4dc; border: none; transform: scale(0.771429); - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + transition: 0.2s; } .mdl-slider:hover::-ms-thumb { From e13e6f38d53244f2243d4dcee57446c64a9fa7e9 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 11:50:22 +0300 Subject: [PATCH 028/449] Limit slider bubble position to its track --- src/elements/emby-slider/emby-slider.css | 2 +- src/elements/emby-slider/emby-slider.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 9ef577a19e..833fd3e796 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -227,7 +227,7 @@ position: absolute; top: 0; left: 0; - transform: translate3d(-48%, -120%, 0); + transform: translate3d(-50%, -120%, 0); background: #282828; color: #fff; display: flex; diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 8f93799e67..44e9c63106 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -48,8 +48,13 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli function updateBubble(range, value, bubble, bubbleText) { requestAnimationFrame(function () { + var bubbleTrackRect = range.sliderBubbleTrack.getBoundingClientRect(); + var bubbleRect = bubble.getBoundingClientRect(); - bubble.style.left = value + '%'; + var bubblePos = bubbleTrackRect.width * value / 100; + bubblePos = Math.min(Math.max(bubblePos, bubbleRect.width / 2), bubbleTrackRect.width - bubbleRect.width / 2); + + bubble.style.left = bubblePos + 'px'; if (range.getBubbleHtml) { value = range.getBubbleHtml(value); From f68f3634c0af4a83f105b169656339d6cac689c3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 12:21:01 +0300 Subject: [PATCH 029/449] Remove 'supportsNativeProgressStyle' in favor of buffer progress --- src/elements/emby-slider/emby-slider.js | 40 +++++++++++-------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 44e9c63106..e613318814 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -3,7 +3,6 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); - var supportsNativeProgressStyle = false; var supportsValueSetOverride = false; var enableWidthWithTransform; @@ -104,25 +103,23 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var htmlToInsert = ''; - if (!supportsNativeProgressStyle) { - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; - // the more of these, the more ranges we can display - htmlToInsert += '
'; + // the more of these, the more ranges we can display + htmlToInsert += '
'; - if (enableWidthWithTransform) { - htmlToInsert += '
'; - } else { - htmlToInsert += '
'; - } - - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + if (enableWidthWithTransform) { + htmlToInsert += '
'; + } else { + htmlToInsert += '
'; } + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; containerElement.insertAdjacentHTML('beforeend', htmlToInsert); @@ -190,13 +187,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli passive: true }); - if (!supportsNativeProgressStyle) { - - if (supportsValueSetOverride) { - this.addEventListener('valueset', updateValues); - } else { - startInterval(this); - } + if (supportsValueSetOverride) { + this.addEventListener('valueset', updateValues); + } else { + startInterval(this); } }; From dc95a76e104d491e9dbf5b5a99b6dc86cf3076b0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 12:23:42 +0300 Subject: [PATCH 030/449] Fix vertical position of slider progress bar --- src/elements/emby-slider/emby-slider.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 833fd3e796..5dc57c49c3 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -158,7 +158,6 @@ .mdl-slider-background-flex-container { width: 100%; box-sizing: border-box; - margin-top: -0.05em; top: 50%; left: 0; position: absolute; @@ -168,7 +167,7 @@ .mdl-slider-background-flex { background: #333; height: 0.2em; - margin-top: -0.08em; + margin-top: -0.1em; width: 100%; top: 50%; left: 0; From 4c4f8ff800ed5bdd6c55d3aaae21b860cb4b06a2 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 14 Feb 2020 03:17:39 +0900 Subject: [PATCH 031/449] fix some minor style issues --- src/assets/css/librarybrowser.css | 1 + src/assets/img/devices/android.svg | 2 +- src/components/cardbuilder/card.css | 4 ++-- src/controllers/dashboard/plugins/installed.js | 10 ++++++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8010d05fa9..60904dadb8 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -227,6 +227,7 @@ .centerMessage { margin: auto; width: 30%; + padding: 5em 0; text-align: center; } diff --git a/src/assets/img/devices/android.svg b/src/assets/img/devices/android.svg index c0d377bb72..24edc8bbf9 100644 --- a/src/assets/img/devices/android.svg +++ b/src/assets/img/devices/android.svg @@ -1,4 +1,4 @@ - + diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 96bd28e8d1..3d0faa53b3 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -371,12 +371,12 @@ button::-moz-focus-inner { } .cardImageIcon { - font-size: 5em; + font-size: 5em !important; color: inherit; } .cardImageIcon-small { - font-size: 3em; + font-size: 3em !important; margin-bottom: 0.1em; } diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index 9c4a631c38..a88d018e9a 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -82,9 +82,11 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" return -1; }); + var html = plugins.map(function (p) { return getPluginCardHtml(p, pluginConfigurationPages); }).join(""); + var installedPluginsElement = page.querySelector(".installedPlugins"); installedPluginsElement.removeEventListener("click", onInstalledPluginsClick); installedPluginsElement.addEventListener("click", onInstalledPluginsClick); @@ -93,8 +95,8 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" installedPluginsElement.classList.add("itemsContainer"); installedPluginsElement.classList.add("vertical-wrap"); } else { - html += '
"; html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; @@ -181,9 +181,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
'; - html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

"; + html += '
'; + html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

"; html += '

'; html += globalize.translate("BrowsePluginCatalogMessage"); html += "

"; @@ -135,9 +137,9 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" case "open": Dashboard.navigate(configHref); break; - case "delete": deletePlugin(page, id, name); + break; } } }); @@ -168,7 +170,6 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" showConnectMessage(); } else { var btnCardMenu = dom.parentWithClass(e.target, "btnCardMenu"); - if (btnCardMenu) { showPluginMenu(dom.parentWithClass(btnCardMenu, "page"), btnCardMenu); } @@ -179,6 +180,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" libraryMenu.setTabs("plugins", 0, getTabs); reloadList(this); }); + window.PluginsPage = { renderPlugins: renderPlugins }; From 5e84544c16c750f89546220dc241655fbadbb68b Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Thu, 13 Feb 2020 19:48:04 +0000 Subject: [PATCH 032/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 70 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index db33230cf7..cdc96cf6ef 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -40,9 +40,9 @@ "Backdrop": "背景", "Backdrops": "背景", "Banner": "横幅", - "BirthDateValue": "出生: {0}", + "BirthDateValue": "出生:{0}", "BirthLocation": "出生地", - "BirthPlaceValue": "出生地: {0}", + "BirthPlaceValue": "出生地:{0}", "Blacklist": "黑名单", "BookLibraryHelp": "现已支持音频和文本书籍。浏览{0}有声读物命名指南{1}。", "Books": "书籍", @@ -146,7 +146,7 @@ "CustomDlnaProfilesHelp": "为新的设备创建自定义配置文件或覆盖原有系统配置文件。", "DateAdded": "加入日期", "DatePlayed": "播放日期", - "DeathDateValue": "去世: {0}", + "DeathDateValue": "去世:{0}", "Default": "默认", "DefaultErrorMessage": "处理请求时发生错误。请稍后尝试。", "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义。", @@ -474,7 +474,7 @@ "LabelAlbumArtMaxHeightHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", "LabelAlbumArtMaxWidth": "专辑封面最大宽度:", "LabelAlbumArtMaxWidthHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", - "LabelAlbumArtPN": "专辑封面PN :", + "LabelAlbumArtPN": "专辑封面PN:", "LabelAlbumArtists": "专辑作家:", "LabelAll": "所有", "LabelAllowHWTranscoding": "允许硬件转码", @@ -483,7 +483,7 @@ "LabelAllowedRemoteAddresses": "远程IP地址过滤器:", "LabelAllowedRemoteAddressesMode": "远程IP地址过滤器模式:", "LabelAppName": "APP名称", - "LabelAppNameExample": "例如: Sickbeard, Sonarr", + "LabelAppNameExample": "例如:Sickbeard, Sonarr", "LabelArtists": "艺术家:", "LabelArtistsHelp": "独立多功能 ;", "LabelAudioLanguagePreference": "首选音频语言:", @@ -506,7 +506,7 @@ "LabelCollection": "收藏:", "LabelCommunityRating": "公众评分:", "LabelContentType": "内容类型:", - "LabelCorruptedFrames": "损坏的帧:", + "LabelCorruptedFrames": "损坏的帧:", "LabelCountry": "国家:", "LabelCriticRating": "影评人评分:", "LabelCurrentPassword": "当前密码:", @@ -541,7 +541,7 @@ "LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。", "LabelDownloadLanguages": "下载语言:", "LabelDropImageHere": "拖拽或点击选择图像于此处。", - "LabelDroppedFrames": "丢弃的帧:", + "LabelDroppedFrames": "丢弃的帧:", "LabelDropShadow": "阴影:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "简易PIN码:", @@ -585,7 +585,7 @@ "LabelHardwareAccelerationType": "硬件加速:", "LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。", "LabelHomeNetworkQuality": "家庭网络质量:", - "LabelHomeScreenSectionValue": "主屏幕模块{0}:", + "LabelHomeScreenSectionValue": "主屏幕模块{0}:", "LabelHttpsPort": "本地 HTTPS 端口号:", "LabelHttpsPortHelp": "Jellyfin HTTPS 服务器监听端口。", "LabelIconMaxHeight": "图标最大高度:", @@ -628,7 +628,7 @@ "LabelMaxResumePercentage": "恢复播放最大百分比:", "LabelMaxResumePercentageHelp": "如果在此时间之后停止播放,媒体会标记为“已播放”。", "LabelMaxScreenshotsPerItem": "每个项目最大截图数目:", - "LabelMaxStreamingBitrate": "最大串流质量:", + "LabelMaxStreamingBitrate": "最大串流质量:", "LabelMaxStreamingBitrateHelp": "请指定一个流媒体串流时的最大比特率。", "LabelMessageText": "消息文本:", "LabelMessageTitle": "消息标题:", @@ -683,10 +683,10 @@ "LabelPersonRole": "角色:", "LabelPlaceOfBirth": "出生地:", "LabelPlayDefaultAudioTrack": "播放默认音轨无论是什么语言", - "LabelPlayerDimensions": "播放器尺寸:", + "LabelPlayerDimensions": "播放器尺寸:", "LabelPlaylist": "播放列表:", - "LabelPostProcessor": "后处理应用程序:", - "LabelPostProcessorArguments": "处理器后命令行参数:", + "LabelPostProcessor": "后处理应用程序:", + "LabelPostProcessorArguments": "处理器后命令行参数:", "LabelPostProcessorArgumentsHelp": "使用 {path} 作为录制文件的路径。", "LabelPreferredDisplayLanguage": "首选显示语言:", "LabelPreferredDisplayLanguageHelp": "Jellyfin的翻译工作是一个不断推进的工程项目。", @@ -695,10 +695,10 @@ "LabelProfileAudioCodecs": "音频编解码器:", "LabelProfileCodecs": "编解码器:", "LabelProfileCodecsHelp": "以逗号分隔。留空则适用于所有编解码器。", - "LabelProfileContainer": "媒体载体:", + "LabelProfileContainer": "媒体载体:", "LabelProfileContainersHelp": "以逗号分隔。留空则适用于所有媒体载体。", "LabelProfileVideoCodecs": "视频编解码器:", - "LabelProtocol": "协议:", + "LabelProtocol": "协议:", "LabelProtocolInfo": "协议信息:", "LabelProtocolInfoHelp": "当响应来自设备的 GetProtocolInfo(获取协议信息)请求时,该值将被使用。", "LabelPublicHttpPort": "公开 HTTP 端口号:", @@ -749,7 +749,7 @@ "LabelStatus": "状态:", "LabelStopWhenPossible": "当可能时自动停止:", "LabelStopping": "停止", - "LabelStreamType": "串流类型:", + "LabelStreamType": "串流类型:", "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", @@ -780,7 +780,7 @@ "LabelTypeText": "文本", "LabelUseNotificationServices": "使用以下服务:", "LabelUser": "用户:", - "LabelUserAgent": "用户代理:", + "LabelUserAgent": "用户代理:", "LabelUserLibrary": "用户程序库:", "LabelUserLibraryHelp": "选择一个在设备上显示的用户媒体库。留空则使用默认设置。", "LabelUserRemoteClientBitrateLimitHelp": "覆盖服务器“播放”设置的全局默认值。", @@ -791,7 +791,7 @@ "LabelVersion": "版本:", "LabelVersionInstalled": "{0} 已安装", "LabelVersionNumber": "版本 {0}", - "LabelVideoResolution": "视频分辨率:", + "LabelVideoResolution": "视频分辨率:", "LabelXDlnaCap": "X-DLNA CAP:", "LabelXDlnaCapHelp": "决定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的内容。", "LabelXDlnaDoc": "X-DLNA DOC:", @@ -860,7 +860,7 @@ "MessageDownloadQueued": "下载已列队。", "MessageEnablingOptionLongerScans": "启用此选项可能会大大延长媒体库扫描时间。", "MessageFileReadError": "读取文件发生错误。", - "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明:", + "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明:", "MessageForgotPasswordInNetworkRequired": "请连接你的家庭网络后再试一次以开始密码重置流程。", "MessageInstallPluginFromApp": "这个插件必须从你打算使用的应用程序中安装。", "MessageInvalidForgotPasswordPin": "无效的或过期的 pin 码。请再试一次。", @@ -1318,8 +1318,8 @@ "ConfirmEndPlayerSession": "确认要关闭位于{0}的Jellyfin吗?", "ValueSeconds": "{0}秒", "Features": "功能", - "GenreValue": "风格 : {0}", - "GenresValue": "风格 : {0}", + "GenreValue": "风格:{0}", + "GenresValue": "风格:{0}", "Guide": "指南", "HeaderCancelRecording": "取消录制", "HeaderFavoriteMovies": "最爱的电影", @@ -1438,26 +1438,26 @@ "MessageNoServersAvailable": "未能自动发现服务器。", "TabNetworking": "联网", "HeaderFavoriteBooks": "最爱的书籍", - "LabelVideoCodec": "视频编码:", - "LabelVideoBitrate": "视频码率:", - "LabelTranscodingProgress": "转码进度:", - "LabelTranscodingFramerate": "转码帧率:", - "LabelSize": "大小:", + "LabelVideoCodec": "视频编码:", + "LabelVideoBitrate": "视频码率:", + "LabelTranscodingProgress": "转码进度:", + "LabelTranscodingFramerate": "转码帧率:", + "LabelSize": "大小:", "LabelPleaseRestart": "改动将在手动重启客户端后生效。", - "LabelPlayMethod": "播放方式:", - "LabelFolder": "文件夹:", - "LabelBitrate": "比特率:", - "LabelAudioSampleRate": "采样率:", - "LabelAudioCodec": "编码:", - "LabelAudioChannels": "声道:", - "LabelAudioBitrate": "比特率:", - "LabelAudioBitDepth": "采样位宽:", + "LabelPlayMethod": "播放方式:", + "LabelFolder": "文件夹:", + "LabelBitrate": "比特率:", + "LabelAudioSampleRate": "采样率:", + "LabelAudioCodec": "编码:", + "LabelAudioChannels": "声道:", + "LabelAudioBitrate": "比特率:", + "LabelAudioBitDepth": "采样位宽:", "FetchingData": "提取其他数据", "CopyStreamURLSuccess": "已成功复制URL地址。", "CopyStreamURL": "复制串流URL地址", "ButtonAddImage": "添加图片", - "LabelPlayer": "播放器:", - "LabelBaseUrl": "基础 URL:", + "LabelPlayer": "播放器:", + "LabelBaseUrl": "基础 URL:", "LabelBaseUrlHelp": "您可以在此处添加自定义子目录,以便从更唯一的 URL 访问服务器。", "MusicLibraryHelp": "重播 {0}音乐命名指南{1}。", "HeaderFavoritePeople": "最喜欢的人物", From 91c8776fbdd9c4fad02210851f8129af24c0c08d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 23:11:59 +0300 Subject: [PATCH 033/449] Scale on hover with 'hoverthumb' style only --- src/elements/emby-slider/emby-slider.css | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 5dc57c49c3..f59c2a3cd0 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -79,11 +79,7 @@ pointer-events: none; } -.mdl-slider-hoverthumb::-webkit-slider-thumb { - transform: none; -} - -.mdl-slider:hover::-webkit-slider-thumb { +.mdl-slider-hoverthumb:hover::-webkit-slider-thumb { transform: scale(1.3); } @@ -107,7 +103,7 @@ transition: 0.2s; } -.mdl-slider:hover::-moz-range-thumb { +.mdl-slider-hoverthumb:hover::-moz-range-thumb { transform: scale(1.3); } @@ -127,7 +123,7 @@ transition: 0.2s; } -.mdl-slider:hover::-ms-thumb { +.mdl-slider-hoverthumb:hover::-ms-thumb { transform: none; } From a0fa065667de0a5aa11d413b66f9d4fdb35fc125 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 23:32:04 +0300 Subject: [PATCH 034/449] Fix slider calculations for common case --- src/elements/emby-slider/emby-slider.js | 71 +++++++++++++++++++++---- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index e613318814..8026f001ec 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -16,6 +16,62 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli } } + /** + * Returns slider fraction corresponding to client position. + * + * @param {Object} range slider itself + * @param {number} clientX client X-coordinate + * @return {number} slider fraction + */ + function mapClientToFraction(range, clientX) { + var rect = range.sliderBubbleTrack.getBoundingClientRect(); + + var fraction = (clientX - rect.left) / rect.width; + + // Snap to step + var valueRange = range.max - range.min; + if (range.step !== 'any' && valueRange !== 0) { + var step = (range.step || 1) / valueRange; + fraction = Math.round(fraction / step) * step; + } + + return Math.min(Math.max(fraction, 0), 1); + } + + /** + * Returns slider value corresponding to slider fraction. + * + * @param {Object} range slider itself + * @param {number} fraction slider fraction + * @return {number} slider value + */ + function mapFractionToValue(range, fraction) { + var value = (range.max - range.min) * fraction; + + // Snap to step + if (range.step !== 'any') { + var step = range.step || 1; + value = Math.round(value / step) * step; + } + + value += parseFloat(range.min); + + return Math.min(Math.max(value, range.min), range.max); + } + + /** + * Returns slider fraction corresponding to slider value. + * + * @param {Object} range slider itself + * @param {number} value slider value (snapped to step) + * @return {number} slider fraction + */ + function mapValueToFraction(range, value) { + var valueRange = range.max - range.min; + var fraction = valueRange !== 0 ? (value - range.min) / valueRange : 0; + return Math.min(Math.max(fraction, 0), 1); + } + function updateValues() { // Do not update values when dragging with keyboard to keep current progress for reference @@ -61,7 +117,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (range.getBubbleText) { value = range.getBubbleText(value); } else { - value = Math.round(value); + value = mapFractionToValue(range, value / 100).toLocaleString(); } value = '

' + value + '

'; } @@ -134,7 +190,8 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'input', function (e) { this.dragging = true; - updateBubble(this, this.value, sliderBubble); + var bubbleValue = mapValueToFraction(this, this.value) * 100; + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { sliderBubble.classList.remove('hide'); @@ -158,15 +215,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, (window.PointerEvent ? 'pointermove' : 'mousemove'), function (e) { if (!this.dragging) { - var rect = this.sliderBubbleTrack.getBoundingClientRect(); - var clientX = e.clientX; - - var bubbleValue = (clientX - rect.left) / rect.width; - bubbleValue *= 100; - if (this.step !== 0) { - bubbleValue = Math.round(bubbleValue / this.step) * this.step; - } - bubbleValue = Math.min(Math.max(bubbleValue, 0), 100); + var bubbleValue = mapClientToFraction(this, e.clientX) * 100; updateBubble(this, bubbleValue, sliderBubble); From 798a6798427a6b40348284245dfd8ca505773959 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 14 Feb 2020 00:31:08 +0300 Subject: [PATCH 035/449] Fix slider update by touch on iPhone/iPad --- src/elements/emby-slider/emby-slider.js | 43 ++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 8026f001ec..13472b4d5d 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -75,7 +75,8 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli function updateValues() { // Do not update values when dragging with keyboard to keep current progress for reference - if (!!this.keyboardDragging) { + // Do not update values when touched to keep current progress for reference + if (!!this.keyboardDragging || !!this.touched) { return; } @@ -236,6 +237,46 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli passive: true }); + // HACK: iPhone/iPad do not change input by touch + if (browser.iOS) { + dom.addEventListener(this, 'touchstart', function (e) { + if (e.targetTouches.length !== 1) { + return; + } + + this.touched = true; + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); + + // Reset dragging (from 'input' event) so that real dragging can be detected + var range = this; + setTimeout(function () { + range.dragging = false; + }, 0); + }, { + passive: true + }); + + dom.addEventListener(this, 'touchend', function (e) { + if (!this.dragging) { + this.dispatchEvent(new Event('change', { + bubbles: true, + cancelable: false + })); + } + + this.touched = false; + }, { + passive: true + }); + } + if (supportsValueSetOverride) { this.addEventListener('valueset', updateValues); } else { From fe228a867e24fa42ee0bd80d15414b40e752481e Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 13 Feb 2020 10:02:58 +0000 Subject: [PATCH 036/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 974f02f648..1967ed310c 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -320,7 +320,7 @@ "LabelAllowServerAutoRestart": "Povoliť automatický reštart servera pre aplikovanie aktualizácií", "LabelAllowServerAutoRestartHelp": "Server sa reštartuje iba počas obdobia bez aktivity, keď nie je žiadny používateľ aktívny.", "LabelAllowedRemoteAddresses": "Filter vzdialených IP adries:", - "LabelAppName": "Názov apky", + "LabelAppName": "Názov aplikácie", "LabelAppNameExample": "Príklad: Sickbeard, Sonarr", "LabelArtists": "Umelci:", "LabelArtistsHelp": "Oddeľte pomocou ;", @@ -376,7 +376,7 @@ "LabelFont": "Písmo:", "LabelForgotPasswordUsernameHelp": "Zadajte svoje používateľské meno, ak si ho pamätáte.", "LabelFormat": "Formát:", - "LabelServerNameHelp": "Toto meno bude použité na identifikáciu servera. Ak ostane prázdne, bude použitý názov počítača.", + "LabelServerNameHelp": "Tento názov bude použitý na identifikáciu servera. Ak ostane prázdny, bude použitý názov počítača.", "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií", "LabelGroupMoviesIntoCollectionsHelp": "Pri zobrazení zoznamu filmov budú filmy patriace do kolekcie zobrazené ako jedna zoskupená položka.", "LabelHardwareAccelerationType": "Hardvérová akcelerácia:", @@ -649,7 +649,7 @@ "OptionLikes": "Páči sa", "OptionMissingEpisode": "Chýbajúce epizódy", "OptionMonday": "Pondelok", - "OptionNameSort": "Meno", + "OptionNameSort": "Názov", "OptionNew": "Nové...", "OptionNone": "Žiadne", "OptionOnAppStartup": "Pri spustení aplikácie", @@ -954,9 +954,9 @@ "HeaderMediaFolders": "Priečinky médií", "HeaderRemoveMediaFolder": "Odstrániť priečinok médií", "HeaderSelectCertificatePath": "Vybrať cestu k certifikátu", - "HeaderSortOrder": "Poradie zoradzovania", + "HeaderSortOrder": "Poradie zoraďovania", "HeaderSpecialEpisodeInfo": "Informácie o špeciálnej epizóde", - "HeaderSpecialFeatures": "Špeciálne funkcie", + "HeaderSpecialFeatures": "Bonusové materiály", "HeaderSubtitleDownloads": "Sťahovanie titulkov", "HeaderTags": "Tagy", "HeaderVideoType": "Typ videa", @@ -975,7 +975,7 @@ "OptionDownloadPrimaryImage": "Primárne", "OptionDvd": "DVD", "OptionExtractChapterImage": "Povoliť extrakciu obrázkov z videa", - "OptionHasSpecialFeatures": "Špeciálne fukncie", + "OptionHasSpecialFeatures": "Bonusové materiály", "OptionHasTrailer": "Trailer", "OptionIsHD": "HD", "OptionIsSD": "SD", @@ -1016,7 +1016,7 @@ "ValueOneAlbum": "1 album", "Absolute": "Absolútne", "LabelDidlMode": "DIDL režim:", - "LabelDateTimeLocale": "Miestne nastavenia dátumu:", + "LabelDateTimeLocale": "Lokálne nastavenia dátumu:", "LabelBlastMessageInterval": "Doba zobrazenie správy (sekundy)", "LabelAlbumArtMaxWidth": "Maximálna šírka obrázku albumu:", "LabelAlbumArtMaxHeight": "Maximálna výška obrázku albumu:", @@ -1070,13 +1070,13 @@ "LabelDropShadow": "Vrhať tieň:", "LabelDownMixAudioScaleHelp": "Zosilnenie zvuku pri downmixe. Nastavenie hodnoty na 1 zachová pôvodnú hlasitosť.", "LabelDownMixAudioScale": "Zosilnenie zvuku pri downmixe:", - "LabelDisplayName": "Zobrazované meno:", + "LabelDisplayName": "Zobrazovaný názov:", "LabelDisplayLanguageHelp": "Preklad Jellyfinu je v neustálom vývoji.", "LabelDefaultUserHelp": "Určuje, ktorá používateľská knižnica by mala byť zobrazená na pripojenom zariadení. Toto nastavenie môže byť prepísané pomocou profilov pre každé zariadenie.", "LabelDateAddedBehaviorHelp": "Pokiaľ majú metadáta hodnotu, bude vždy použitá pred niektorou z týchto možností.", "LabelDashboardTheme": "Téma dashboardu servera:", "LabelCustomDeviceDisplayNameHelp": "Nahradte vlastným názvom alebo ponechajte prázdne, aby názov určilo zariadenie.", - "LabelCustomDeviceDisplayName": "Zobrazené meno:", + "LabelCustomDeviceDisplayName": "Zobrazený názov:", "LabelCache": "Cache:", "LabelBurnSubtitles": "Vypáliť titulky:", "LabelBitrate": "Dátový tok:", From 36118b926bc43578a380972b010aa87417896eba Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 14 Feb 2020 23:24:38 +0900 Subject: [PATCH 037/449] add missing string --- src/strings/en-us.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index c8df7b69db..421108aa87 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1223,6 +1223,7 @@ "PlayFromBeginning": "Play from beginning", "PlayNext": "Play next", "PlayNextEpisodeAutomatically": "Play next episode automatically", + "PlaybackErrorNoCompatibleStream": "There are no available formats that are compatible with this device.", "Played": "Played", "Playlists": "Playlists", "PleaseAddAtLeastOneFolder": "Please add at least one folder to this library by clicking the Add button.", From dec26f6c0ea56f0b3066553d88057a7f9cfea509 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 15 Feb 2020 03:47:07 +0300 Subject: [PATCH 038/449] Fix nowplaying for tv mode --- src/components/appRouter.js | 3 +++ src/scripts/librarymenu.js | 28 ++++++++++++++++++++++++++++ src/scripts/site.js | 4 ---- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 7b36d01bdd..b08d46d82c 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -14,6 +14,9 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM }, showSettings: function () { show('/settings/settings.html'); + }, + showNowPlaying: function () { + show("/nowplaying.html"); } }; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 406edbff5e..7d86dec42e 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -12,6 +12,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += "
"; html += '
'; html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -27,6 +28,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerHomeButton = skinHeader.querySelector(".headerHomeButton"); headerUserButton = skinHeader.querySelector(".headerUserButton"); headerCastButton = skinHeader.querySelector(".headerCastButton"); + headerAudioPlayerButton = skinHeader.querySelector(".headerAudioPlayerButton"); headerSearchButton = skinHeader.querySelector(".headerSearchButton"); lazyLoadViewMenuBarImages(); @@ -82,6 +84,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (!layoutManager.tv) { headerCastButton.classList.remove("hide"); } + } else { headerHomeButton.classList.add("hide"); headerCastButton.classList.add("hide"); @@ -116,6 +119,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " Dashboard.navigate("home.html"); } + function showAudioPlayer() { + return appRouter.showNowPlaying(); + } + function bindMenuEvents() { mainDrawerButton = document.querySelector(".mainDrawerButton"); @@ -140,9 +147,29 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerCastButton.addEventListener("click", onCastButtonClicked); } + headerAudioPlayerButton.addEventListener("click", showAudioPlayer); + if (layoutManager.mobile) { initHeadRoom(skinHeader); } + events.on(playbackManager, 'playbackstart', onPlaybackStart); + events.on(playbackManager, 'playbackstop', onPlaybackStop); + } + + function onPlaybackStart(e) { + + if (playbackManager.isPlayingAudio() && layoutManager.tv) { + headerAudioPlayerButton.classList.remove("hide"); + } else { + headerAudioPlayerButton.classList.add("hide"); + } + } + + function onPlaybackStop(e, stopInfo) { + + if (stopInfo.nextMediaType != 'Audio') { + headerAudioPlayerButton.classList.add("hide"); + } } function onCastButtonClicked() { @@ -763,6 +790,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var currentUser; var headerCastButton; var headerSearchButton; + var headerAudioPlayerButton; var enableLibraryNavDrawer = !layoutManager.tv; var skinHeader = document.querySelector(".skinHeader"); var requiresUserRefresh = true; diff --git a/src/scripts/site.js b/src/scripts/site.js index 0cf65158d5..eb6a0ba566 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -989,10 +989,6 @@ var AppInfo = {}; Dashboard.navigate("mypreferencesmenu.html"); }; - appRouter.showNowPlaying = function () { - Dashboard.navigate("nowplaying.html"); - }; - appRouter.setTitle = function (title) { LibraryMenu.setTitle(title); }; From c9685d66141bf44aa01ac6b53fc12526870b03f7 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Fri, 14 Feb 2020 20:15:35 +0000 Subject: [PATCH 039/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 80 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7c2d9b1e42..f4218fadee 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -217,7 +217,7 @@ "HeaderUploadImage": "Kép feltöltés", "HeaderUser": "Felhasználó", "HeaderUsers": "Felhasználók", - "HeaderVideoType": "Videó típusa:", + "HeaderVideoType": "Videó típusa", "HeaderVideos": "Videók", "HeaderYears": "Év", "HeadersFolders": "Könyvtárak", @@ -342,7 +342,7 @@ "LabelYear": "Év:", "LabelYourFirstName": "Keresztneved:", "LabelYoureDone": "Készen vagy!", - "LatestFromLibrary": "Nemrég hozzáadva: {0}", + "LatestFromLibrary": "Nemrég hozzáadott {0}", "Like": "Tettszik", "Live": "Élő", "ManageLibrary": "Könyvtár kezelése", @@ -457,7 +457,7 @@ "PleaseRestartServerName": "Kérlek indítsd újra a Jellyfin Szerver-t - {0}.", "Quality": "Minőség", "RecommendationBecauseYouLike": "Mert tetszett a(z) {0}", - "RecommendationBecauseYouWatched": "Ha már megnézted a(z) {0}", + "RecommendationBecauseYouWatched": "Amiért megnézted ezt: {0}", "RecommendationDirectedBy": "Rendezte: {0}", "RecommendationStarring": "Főszerepben: {0}", "Record": "Felvétel", @@ -467,9 +467,9 @@ "ReleaseDate": "Megjelenés dátuma", "RememberMe": "Emlékezz rám", "Repeat": "Ismétlés", - "RepeatAll": "Folyamatos ismétlés", - "RepeatMode": "Ismétlő mód", - "RepeatOne": "Ismétlés egyszer", + "RepeatAll": "Összes ismétlése", + "RepeatMode": "Ismétlés módja", + "RepeatOne": "Aktuális ismétlése", "ReplaceAllMetadata": "Összes metaadat cseréje", "ReplaceExistingImages": "Cserélje ki a meglévő képeket", "Rewind": "Ugrás vissza", @@ -493,7 +493,7 @@ "ShowTitle": "Név megjelenítése", "Shuffle": "Keverés", "SkipEpisodesAlreadyInMyLibraryHelp": "Az epizódokat összehasonlítjuk az évad és az epizód számával, ha rendelkezésre állnak.", - "Sort": "Rendezés:", + "Sort": "Rendezés", "SortByValue": "Rendezés {0}", "Studios": "Stúdiók", "Subtitles": "Feliratok", @@ -583,7 +583,7 @@ "AccessRestrictedTryAgainLater": "A hozzáférés jelenleg korlátozott. Kérlek próbáld újra később.", "Actor": "Színész", "AirDate": "Vetítés dátuma", - "Aired": "Vetítve:", + "Aired": "Vetítve", "Albums": "Albumok", "AllChannels": "Minden csatorna", "AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB/IDX, stb.)", @@ -642,7 +642,7 @@ "ConfirmDeleteItems": "Az elem törlése mind a fájlrendszerből, mind a médiakönyvtárból törlődik. Biztosan folytatni akarod?", "ConfirmDeletion": "Törlés megerősítése", "ConfirmEndPlayerSession": "Szeretnéd leállítani a Jellyfin-t {0}?", - "ContinueWatching": "Folyamatban lévő filmek", + "ContinueWatching": "Megtekintés folytatása", "Continuing": "Folyamatos", "CriticRating": "Kritikus értékelés", "CustomDlnaProfilesHelp": "Hozz létre egyéni profilt az új eszközhöz, vagy módosítsd a rendszerprofilt.", @@ -683,7 +683,7 @@ "Ended": "Befejeződött", "ErrorAddingMediaPathToVirtualFolder": "Hiba történt a média elérésekor. Kérlek győződjön meg róla, hogy az elérési út érvényes és a Jellyfin szerver hozzáfér az adott helyhez.", "ErrorAddingTunerDevice": "Hiba történt a tuner eszköz hozzáadásakor. Kérlek győződj meg róla, hogy az eszköz elérhető és próbáld meg újra.", - "ErrorAddingXmlTvFile": "Hiba történt az XmlTV fájl elérésekor. Győződj meg róla, hogy a fájl létezik és próbáld meg újra.", + "ErrorAddingXmlTvFile": "Hiba történt az XMLTV fájl elérésekor. Győződj meg róla, hogy a fájl létezik és próbáld meg újra.", "ErrorDeletingItem": "Hiba történt az elem törlése során a Jellyfin Szerverről. Ellenőrizd, hogy a Jellyfin Szerver rendelkezik-e írási jogosultsággal a média mappához és próbálja újra.", "ErrorMessageStartHourGreaterThanEnd": "A befejezési időnek nagyobbnak kell lennie mint a kezdési idő.", "ErrorSavingTvProvider": "Hiba történt a TV szolgáltató mentésekor. Kérlek győződj meg róla, hogy elérhető és próbálkozz meg újra.", @@ -760,7 +760,7 @@ "HeaderMusicQuality": "Zene minősége", "HeaderNewApiKey": "Új API kulcs", "HeaderNewDevices": "Új eszközök", - "HeaderNextEpisodePlayingInValue": "Következő epizód lejátszása {0}", + "HeaderNextEpisodePlayingInValue": "Következő epizód lejátszása {0} múlva", "HeaderNextVideoPlayingInValue": "Következő videó lejátszása {0}", "HeaderOtherItems": "Egyéb elemek", "HeaderPasswordReset": "Jelszó visszaállítása", @@ -914,7 +914,7 @@ "LabelLockItemToPreventChanges": "Az elem zárolása a jövőbeni változások elkerülése érdekében", "LabelLoginDisclaimer": "Bejelentkezési nyilatkozat:", "LabelLoginDisclaimerHelp": "Ez az üzenet a bejelentkezési oldal alján jelenik meg.", - "LabelManufacturer": "Gyártó", + "LabelManufacturer": "Gyártó:", "LabelManufacturerUrl": "Gyártó URL címe", "LabelMatchType": "Egyezés típusa:", "LabelMaxBackdropsPerItem": "A hátterek maximális száma elemenként:", @@ -1055,7 +1055,7 @@ "LiveBroadcasts": "Élő adások", "MessageConfirmRevokeApiKey": "Biztosan visszavonod ezt az API kulcsot? Az alkalmazás csatlakozása a Jellyfin Szerverhez hirtelen megszűnik.", "MessageDirectoryPickerInstruction": "A hálózati útvonalak manuálisan megadhatók abban az esetben, ha a Hálózati gomb nem találja meg a készülékeket. Például: {0} vagy {1}.", - "MessageDirectoryPickerLinuxInstruction": "Az Arch Linux, CentOS, Debian, Fedora, OpenSuse vagy Ubuntu Linux operációs rendszereken a Jellyfin rendszer felhasználójának legalább olvasási hozzáférést kell biztosítania a tárolóhelyekhez.", + "MessageDirectoryPickerLinuxInstruction": "Az Arch Linux, CentOS, Debian, Fedora, openSUSE vagy Ubuntu Linux operációs rendszereken a Jellyfin szolgáltatás felhasználójának legalább olvasási hozzáférést kell biztosítania a tárolóhelyekhez.", "MessageForgotPasswordInNetworkRequired": "Kérlek próbáld meg újra a jelszó visszaállítási folyamatot az otthoni hálózatban.", "MessageNoMovieSuggestionsAvailable": "Jelenleg nincsenek filmajánlatok. Kezdj el nézni és értékelni a filmeket, majd térj vissza, hogy megtekinthesd az ajánlásokat.", "MessagePasswordResetForUsers": "A következő felhasználók jelszavai visszaálltak. Most már bejelentkezhetnek a visszaállításhoz használt PIN kódokkal.", @@ -1282,10 +1282,10 @@ "LabelMaxResumePercentageHelp": "A címeket teljesen lejátszottnak tekintjük, ha ezen idő után fejezed be.", "LabelMaxStreamingBitrateHelp": "Adj meg egy maximum bitrátát a streameléshez.", "LabelMinResumePercentageHelp": "A címeket nem lejátszottnak tekintjük, ha ez alatt az idő alatt fejezed be.", - "LabelMusicStreamingTranscodingBitrateHelp": "Határozz meg egy streamelési max bitrátát a zenékhez", + "LabelMusicStreamingTranscodingBitrateHelp": "Határozz meg egy streamelési max bitrátát a zenékhez.", "DashboardVersionNumber": "Verzió: {0}", "DashboardServerName": "Szerver: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "MediaInfoSoftware": "Szoftver", "MediaInfoStreamTypeAudio": "Audió", "MediaInfoStreamTypeSubtitle": "Felirat", @@ -1391,5 +1391,53 @@ "HeaderFavoritePeople": "Kedvenc emberek", "HeaderApp": "Alkalmazás", "GroupVersions": "Verziók csoportosítása", - "CopyStreamURLError": "Hiba történt az URL másolása közben." + "CopyStreamURLError": "Hiba történt az URL másolása közben.", + "OptionSubstring": "Szövegrészlet", + "ButtonSplit": "Szétvág", + "Absolute": "Abszolút", + "LabelSkipIfAudioTrackPresentHelp": "Vedd ki a pipát, ha minden videóhoz szeretnél feliratot az audio nyelvétől függetlenül.", + "EnableFastImageFadeInHelp": "Gyorsabb előtűnés animáció a betöltött képekhez", + "EnableFastImageFadeIn": "Gyors kép-előtűnés", + "SubtitleOffset": "Felirat eltolása", + "SeriesDisplayOrderHelp": "Rakd sorba az epizódokat az adásba kerülésük dátuma, a DVD sorszám, vagy az abszolút számozás szerint.", + "SelectAdminUsername": "Kérjük válassz felhasználónevet az adminisztrátor fiók számára.", + "QueueAllFromHere": "Az összes sorba állítása innen", + "OptionThumbCard": "Miniatűr kártya", + "OptionThumb": "Miniatűr", + "OptionSpecialEpisode": "Különkiadások", + "OptionRandom": "Véletlenszerű", + "OptionPosterCard": "Poszter kártya", + "OptionPoster": "Poszter", + "OptionLoginAttemptsBeforeLockoutHelp": "A 0 érték beállítással az alapértelmezett beállítások lesznek bekapcsolva. A sima felhasználóknak 3, az adminisztrátoroknak 5 lehetőségük lesz. A -1 érték kikapcsolja ezt a funkciót.", + "OptionList": "Lista", + "OptionDownloadThumbImage": "Miniatűr", + "OptionDownloadBannerImage": "Banner", + "OptionDownloadArtImage": "Grafika", + "OptionCustomUsers": "Egyéni", + "OptionBlockChannelContent": "Internetes csatornatartalmak", + "OptionBanner": "Banner", + "OnlyForcedSubtitlesHelp": "Csak a kényszerítettnek jelölt feliratok fognak megjelenni.", + "OnlyForcedSubtitles": "Csak kényszerített feliratok", + "Normal": "Normális", + "MusicVideo": "Videoklip", + "MusicLibraryHelp": "Nézd meg a {0}zenék elnevezési útmutatóját{1}.", + "MusicArtist": "Zenei előadó", + "MusicAlbum": "Zenealbum", + "MoreMediaInfo": "Média információ", + "MetadataSettingChangeHelp": "A metaadat beállítások módosítása az ezután újonnan hozzáadott médiát fogja befolyásolni. A már meglévő tartalom frissítéséhez nyisd meg a részletek képernyőt, és kattints a frissítésre, vagy végezz tömeges frissítést a Metaadat Managerben.", + "MessageConfirmDeleteGuideProvider": "Biztosan törölni szeretnéd ezt a műsorújság szolgáltatót?", + "MessageConfirmAppExit": "Ki szeretnél lépni?", + "LaunchWebAppOnStartupHelp": "A web kliens indítása az alapértelmezett böngészőben a szerver indítása után. A kliens nem fog elindulni a szerver újraindítása után.", + "LabelVideoResolution": "Videó felbontás:", + "LabelVideoCodec": "Videó kodek:", + "LabelVideoBitrate": "Videó bitráta:", + "LabelStreamType": "Stream típusa:", + "LabelSkipIfGraphicalSubsPresentHelp": "A feliratok szöveges verziójának megtartása hatékonyabb kézbesítést eredményez és csökkenti az átkódolás valószínűségét.", + "LabelNumberOfGuideDaysHelp": "Több napnyi műsorújság letöltése hosszabb távú időzítést tesz lehetővé, valamint több napra előre tekinthető meg a műsorújság, azonban hosszabb ideig fog tartani a letöltés. Az automatikus lehetőség a csatornák számától függően állítja be az értéket.", + "LabelMonitorUsers": "Tevékenység követése tőle:", + "LabelDroppedFrames": "Eldobott képkockák:", + "LabelDisplaySpecialsWithinSeasons": "Speciális epizódok megjelenítése abban az évadban, amiben adásban voltak", + "LabelCorruptedFrames": "Sérült képkockák:", + "HeaderKeepSeries": "Sorozat megtartása", + "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra." } From 990e0de950a07717f92f86d4b0b70aee1957d882 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Fri, 14 Feb 2020 12:17:15 +0000 Subject: [PATCH 040/449] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index fe0194d0e5..96f10feef5 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1457,5 +1457,10 @@ "MessageConfirmAppExit": "Vrei să ieși?", "CopyStreamURLError": "A apărut o eroare la copierea adresei URL.", "EnableFastImageFadeInHelp": "Activați animația mai rapidă de tranziție pentru imaginile încărcate", - "EnableFastImageFadeIn": "Tranziție a imaginii rapidă" + "EnableFastImageFadeIn": "Tranziție a imaginii rapidă", + "LabelVideoResolution": "Rezoluția video:", + "LabelStreamType": "Tipul streamului:", + "LabelPlayerDimensions": "Dimensiunile soft redare:", + "LabelDroppedFrames": "Cadre abandonate:", + "LabelCorruptedFrames": "Cadre corupte:" } From bb1ba5a29ed28222ef49b4d314b830a9289bc45c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Feb 2020 16:18:24 +0300 Subject: [PATCH 041/449] Make configurable slider progress bar update --- src/components/nowplayingbar/nowplayingbar.js | 7 +---- src/components/remotecontrol/remotecontrol.js | 6 ---- src/controllers/playback/videoosd.js | 6 ---- src/elements/emby-slider/emby-slider.js | 29 ++++++++++++++----- src/nowplaying.html | 2 +- src/videoosd.html | 2 +- 6 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..56fa2eaa15 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -31,7 +31,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; @@ -393,7 +393,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var showMuteButton = true; var showVolumeSlider = true; - var progressElement = volumeSliderContainer.querySelector('.mdl-slider-background-lower'); if (supportedCommands.indexOf('ToggleMute') === -1) { showMuteButton = false; @@ -405,10 +404,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', muteButton.querySelector('i').innerHTML = 'volume_up'; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..be1fcd2754 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -279,8 +279,6 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.nowPlayingVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -303,10 +301,6 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL view.querySelector(".buttonMute i").innerHTML = "volume_up"; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (showMuteButton) { view.querySelector(".buttonMute").classList.remove("hide"); } else { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..6c7dcce788 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -862,8 +862,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.osdVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -886,10 +884,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med view.querySelector(".buttonMute i").innerHTML = "volume_up"; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (showMuteButton) { view.querySelector(".buttonMute").classList.remove("hide"); } else { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 13472b4d5d..5465ccc5b6 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -72,11 +72,15 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli return Math.min(Math.max(fraction, 0), 1); } - function updateValues() { + /** + * Updates progress bar. + * + * @param {boolean} [isValueSet] update by 'valueset' event or by timer + */ + function updateValues(isValueSet) { - // Do not update values when dragging with keyboard to keep current progress for reference - // Do not update values when touched to keep current progress for reference - if (!!this.keyboardDragging || !!this.touched) { + // Do not update values by 'valueset' in case of soft-implemented dragging + if (!!isValueSet && (!!this.keyboardDragging || !!this.touched)) { return; } @@ -84,7 +88,9 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var value = range.value; // put this on a callback. Doing it within the event sometimes causes the slider to get hung up and not respond - requestAnimationFrame(function () { + // Keep only one per slider frame request + cancelAnimationFrame(range.updateValuesFrame); + range.updateValuesFrame = requestAnimationFrame(function () { var backgroundLower = range.backgroundLower; @@ -191,6 +197,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'input', function (e) { this.dragging = true; + if (this.dataset.sliderKeepProgress !== 'true') { + updateValues.call(this); + } + var bubbleValue = mapValueToFraction(this, this.value) * 100; updateBubble(this, bubbleValue, sliderBubble); @@ -204,7 +214,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'change', function () { this.dragging = false; - updateValues.call(this); + + if (this.dataset.sliderKeepProgress === 'true') { + updateValues.call(this); + } sliderBubble.classList.add('hide'); hasHideClass = true; @@ -278,7 +291,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli } if (supportsValueSetOverride) { - this.addEventListener('valueset', updateValues); + this.addEventListener('valueset', updateValues.bind(this, true)); } else { startInterval(this); } @@ -457,7 +470,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (interval) { clearInterval(interval); } - range.interval = setInterval(updateValues.bind(range), 100); + range.interval = setInterval(updateValues.bind(range, true), 100); } EmbySliderPrototype.detachedCallback = function () { diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..68486a2e72 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -9,7 +9,7 @@

- +
diff --git a/src/videoosd.html b/src/videoosd.html index a099605d0d..a2bfb7988e 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -18,7 +18,7 @@
- +
From ad0b67d2f6725ece3b1083b243c1974e54311a8e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Feb 2020 16:51:37 +0300 Subject: [PATCH 042/449] Make delayed volume update --- src/components/nowplayingbar/nowplayingbar.js | 19 +++++++++++-- src/components/remotecontrol/remotecontrol.js | 28 +++++++++++++------ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 56fa2eaa15..fcbbc54f1a 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -187,14 +187,29 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', volumeSliderContainer.classList.remove('hide'); } + var volumeSliderTimer; + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + if (currentPlayer) { currentPlayer.setVolume(this.value); } } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + volumeSlider.addEventListener('change', setVolume); - volumeSlider.addEventListener('mousemove', setVolume); - volumeSlider.addEventListener('touchmove', setVolume); + volumeSlider.addEventListener('mousemove', setVolumeDelayed); + volumeSlider.addEventListener('touchmove', setVolumeDelayed); positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider.addEventListener('change', function () { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index be1fcd2754..df1b01367d 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -609,15 +609,27 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL return datetime.getDisplayRunningTime(ticks); }; - context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", function () { + var volumeSliderTimer; + + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + + context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", setVolume); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolumeDelayed); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolumeDelayed); context.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); From 0e506a24b1911dae66cc84b5d13e581fb2bdcc8c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 15 Feb 2020 19:24:36 +0300 Subject: [PATCH 043/449] fix padding for tv mode --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 1b5b9ded6d..7a3e0ada68 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -522,6 +522,7 @@ .layout-tv .detailPagePrimaryContainer { position: relative; + top: 0; } .detailSticky { From a47214bbb92a243c635df30cbed64aa79d22f7a7 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 15 Feb 2020 22:15:17 +0100 Subject: [PATCH 044/449] Add book and folder icons to cards --- src/components/cardbuilder/cardBuilder.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 23ac93676e..e2751b647d 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1486,6 +1486,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } function getDefaultText(item, options) { + console.debug("Getting icon for " + item.Type); + if (item.CollectionType) { return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } @@ -1500,6 +1502,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return 'movie' case 'Series': return 'tv' + case 'Book': + return 'book' + case 'Folder': + return 'folder' } if (options && options.defaultCardImageIcon) { From 52ad0febe0eb665ff1ae5340810798c021d830eb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 15 Feb 2020 22:23:40 +0100 Subject: [PATCH 045/449] Fix details page ribbon position in TV layout --- CONTRIBUTORS.md | 1 + src/assets/css/librarybrowser.css | 1 + src/components/cardbuilder/cardBuilder.js | 2 -- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 5a43208068..aa3ec707e3 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -33,6 +33,7 @@ - [Daniel Hartung](https://github.com/dhartung) - [Ryan Hartzell](https://github.com/ryan-hartzell) - [Thibault Nocchi](https://github.com/ThibaultNocchi) + - [MrTimscampi](https://github.com/MrTimscampi) # Emby Contributors diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 1b5b9ded6d..7a3e0ada68 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -522,6 +522,7 @@ .layout-tv .detailPagePrimaryContainer { position: relative; + top: 0; } .detailSticky { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index e2751b647d..29d7455bc9 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1486,8 +1486,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } function getDefaultText(item, options) { - console.debug("Getting icon for " + item.Type); - if (item.CollectionType) { return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } From 23b4dfc8fa146d72f737197e6a99db4ed5e55edd Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 15 Feb 2020 09:20:13 +0000 Subject: [PATCH 046/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index f4218fadee..64f455b7a8 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1,7 +1,7 @@ { - "Add": "Hozzáad", + "Add": "Hozzáadás", "AddToCollection": "Hozzáadás gyűjteményhez", - "AddToPlaylist": "Lejátszási listához adni", + "AddToPlaylist": "Hozzáadás lejátszási listához", "AddedOnValue": "Hozzáadva: {0}", "AdditionalNotificationServices": "Keresd meg a Bővítmények katalógust további értesítési szolgáltatások telepítéséhez.", "Alerts": "Riasztások", @@ -17,8 +17,8 @@ "BirthPlaceValue": "Születési hely: {0}", "Books": "Könyvek", "Browse": "Tallózás", - "ButtonAdd": "Hozzáad", - "ButtonAddMediaLibrary": "Új Média Könyvtár felvétele", + "ButtonAdd": "Hozzáadás", + "ButtonAddMediaLibrary": "Médiakönyvtár hozzáadása", "ButtonAddServer": "Szerver Hozzáadása", "ButtonAddUser": "Új felhasználó", "ButtonArrowDown": "Le", @@ -74,7 +74,7 @@ "ButtonStop": "Leállít", "ButtonSubmit": "Elküld", "ButtonSubtitles": "Feliratok", - "ButtonTrailer": "Filmelőzetes", + "ButtonTrailer": "Előzetes", "ButtonUninstall": "Eltávolítás", "ButtonWebsite": "Weboldal", "Channels": "Csatornák", @@ -84,7 +84,7 @@ "DateAdded": "Hozzáadva", "DatePlayed": "Lejátszás dátuma", "Delete": "Törlés", - "DeleteMedia": "Média törlés", + "DeleteMedia": "Média törlése", "Descending": "Csökkenő", "Director": "Rendező", "DirectorValue": "Rendező: {0}", @@ -97,7 +97,7 @@ "Download": "Letöltés", "Edit": "Szerkesztés", "EditImages": "Képek szerkesztése", - "EditMetadata": "Metaadat szerkesztés", + "EditMetadata": "Metaadat szerkesztése", "EditSubtitles": "Feliratok szerkesztése", "EnableBackdrops": "Háttérképek", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", @@ -127,7 +127,7 @@ "GenresValue": "Műfajok: {0}", "HeaderActiveDevices": "Aktív eszközök", "HeaderAddToCollection": "Hozzáadás gyűjteményhez", - "HeaderAddToPlaylist": "Lejátszási listához adni", + "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", "HeaderAddUpdateImage": "Kép hozzáadása / frissítése", "HeaderAddUser": "Új felhasználó", "HeaderAlbums": "Albumok", @@ -138,7 +138,7 @@ "HeaderCastCrew": "Szereplők és Stáb", "HeaderChannels": "Csatornák", "HeaderConnectToServer": "Kapcsolódás a Szerverhez", - "HeaderContinueWatching": "Folyamatban lévő filmek", + "HeaderContinueWatching": "Megtekintés folytatása", "HeaderCustomDlnaProfiles": "Egyedi profilok", "HeaderDetectMyDevices": "Eszközök érzékelése", "HeaderDeveloperInfo": "Fejlesztői információk", @@ -165,7 +165,7 @@ "HeaderLibraries": "Könyvtárak", "HeaderLibraryAccess": "Könyvtár Hozzáférés", "HeaderLibraryFolders": "Médiatár mappák", - "HeaderLibraryOrder": "Médiatár rendezés", + "HeaderLibraryOrder": "Médiatár elrendezése", "HeaderLibrarySettings": "Médiatár beállítások", "HeaderLiveTvTunerSetup": "Élő TV tuner beállítása", "HeaderMedia": "Média", @@ -198,7 +198,7 @@ "HeaderRevisionHistory": "Módosítási előzmények", "HeaderRunningTasks": "Futó folyamatok", "HeaderScenes": "Jelenetek", - "HeaderSeasons": "Évad", + "HeaderSeasons": "Évadok", "HeaderSelectMetadataPath": "Válaszd ki a metaadat útvonalat", "HeaderSelectServer": "Szerver Kiválasztás", "HeaderSendMessage": "Üzenet küldése", @@ -268,7 +268,7 @@ "LabelEncoderPreset": "H264 enkóder beállítások:", "LabelHardwareAccelerationType": "Hardveres gyorsítás:", "LabelHardwareAccelerationTypeHelp": "Ez egy kísérleti szolgáltatás, amely csak a támogatott rendszereken érhető el.", - "LabelHomeScreenSectionValue": "Kezdőképernyő blokk {0}:", + "LabelHomeScreenSectionValue": "{0}. kezdőképernyő blokk:", "LabelImageType": "Kép típusa:", "LabelKodiMetadataDateFormat": "Megjelenési dátum formátuma:", "LabelLanguage": "Nyelv:", @@ -297,7 +297,7 @@ "LabelPlayDefaultAudioTrack": "Az alapértelmezett hangsáv lejátszása a nyelvtől függetlenül", "LabelPlaylist": "Lejátszási lista:", "LabelPreferredDisplayLanguage": "Elsődleges megjelenítendő nyelv:", - "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatban lévő project.", + "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatos projekt.", "LabelPrevious": "Előző", "LabelProfileAudioCodecs": "Audió kódekek:", "LabelProfileCodecs": "Kódek:", @@ -418,7 +418,7 @@ "OptionHasSubtitles": "Feliratok", "OptionHasThemeSong": "Főcímdal", "OptionHasThemeVideo": "Filmzene", - "OptionHasTrailer": "Filmelőzetes", + "OptionHasTrailer": "Előzetes", "OptionHideUser": "Felhasználó elrejtése a bejelentkezési képernyőn", "OptionHomeVideos": "Fényképek", "OptionImdbRating": "IMDb értékelés", @@ -463,7 +463,7 @@ "Record": "Felvétel", "Refresh": "Frissítés", "RefreshDialogHelp": "A metaadatok frissítése a Jellyfin Server vezérlőpultjában engedélyezett beállítások és internetszolgáltatások alapján történik.", - "RefreshMetadata": "Metaadat frissítés", + "RefreshMetadata": "Metaadat frissítése", "ReleaseDate": "Megjelenés dátuma", "RememberMe": "Emlékezz rám", "Repeat": "Ismétlés", @@ -476,7 +476,7 @@ "Runtime": "Játékidő", "Saturday": "Szombat", "Save": "Mentés", - "ScanForNewAndUpdatedFiles": "Keresés az új és frissített fileokra", + "ScanForNewAndUpdatedFiles": "Keresés az új és frissített fájlokra", "ScanLibrary": "Könyvtár beolvasása", "Search": "Keresés", "SearchForMissingMetadata": "Keresés a hiányzó metaadatokra", @@ -494,7 +494,7 @@ "Shuffle": "Keverés", "SkipEpisodesAlreadyInMyLibraryHelp": "Az epizódokat összehasonlítjuk az évad és az epizód számával, ha rendelkezésre állnak.", "Sort": "Rendezés", - "SortByValue": "Rendezés {0}", + "SortByValue": "Rendezés {0} szerint", "Studios": "Stúdiók", "Subtitles": "Feliratok", "Suggestions": "Javaslatok", @@ -583,7 +583,7 @@ "AccessRestrictedTryAgainLater": "A hozzáférés jelenleg korlátozott. Kérlek próbáld újra később.", "Actor": "Színész", "AirDate": "Vetítés dátuma", - "Aired": "Vetítve", + "Aired": "Adásban", "Albums": "Albumok", "AllChannels": "Minden csatorna", "AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB/IDX, stb.)", @@ -1100,7 +1100,7 @@ "OptionAllowSyncTranscoding": "Engedélyezze a média letöltését és szinkronizálását, amely átkódolást igényel", "OptionAllowVideoPlaybackRemuxing": "Olyan videólejátszás engedélyezése, amely átalakítást igényel újrakódolás nélkül", "OptionAllowVideoPlaybackTranscoding": "Engedélyezze az átkódolást igénylő videó lejátszást", - "OptionArtist": "Művész", + "OptionArtist": "Előadó", "OptionAuto": "Auto", "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "A több mappában elosztott sorozat automatikus összevonása", @@ -1127,7 +1127,7 @@ "PlayNextEpisodeAutomatically": "A következő epizód automatikus lejátszása", "ShowAdvancedSettings": "Speciális beállítások megjelenítése", "ValueSeconds": "{0} másodperc", - "AddToPlayQueue": "Lejátszási listához adni", + "AddToPlayQueue": "Hozzáadás a lejátszási sorhoz", "AllowHWTranscodingHelp": "Lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Szerver által igényelt átkódolást.", "AllowOnTheFlySubtitleExtraction": "Felirat kinyerésének engedélyezése valós időben", "MessageNoTrailersFound": "Nincsenek előzetesek. Telepítsd a Trailer csatornát, hogy javítsd a filmélményt az internetes előzetesek könyvtárának hozzáadásával.", @@ -1269,7 +1269,7 @@ "Vertical": "Függőleges", "VideoRange": "Videó tartomány", "ViewAlbum": "Album megtekintése", - "ViewArtist": "Művész megtekintése", + "ViewArtist": "Előadó megtekintése", "Whitelist": "Fehérlista", "WizardCompleted": "Ez most minden amire szükség volt. A Jellyfin megkezdte a médiakönyvtáraddal kapcsolatos információk gyűjtését. Nézz meg néhány alkalmazásunkat, majd kattints a Befejezés gombra a Vezérlőpult megtekintéséhez.", "XmlTvKidsCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok gyerekeknek szóló programokként jelennek meg. Válaszd el őket a '|' elválasztóval.", @@ -1358,7 +1358,7 @@ "LabelLocalHttpServerPortNumberHelp": "A TCP port száma, melyen a Jellyfin HTTP szerver figyel.", "UserAgentHelp": "Adj meg egy egyedi HTTP user-agent fejlécet.", "XmlDocumentAttributeListHelp": "Ezek a tulajdonságok minden XML válaszüzenet gyökér elemére alkalmazásra kerülnek.", - "Thumb": "Thumb", + "Thumb": "Miniatűr", "MediaInfoStreamTypeData": "Adat", "MediaInfoStreamTypeEmbeddedImage": "Beágyazott kép", "LabelBitrate": "Bitráta:", From a98b961b948f86400f28bc3101f0a1f4942519a2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Feb 2020 01:31:14 +0100 Subject: [PATCH 047/449] Fix icons on WebOS WebOS 4 apparently has a ligature bug that prevents icons with an underscore from working as intended. This replaces them with either the corresponding CSS class or unicode escape code, depending on context. Refactoring is needed in order to be able to use CSS classes everywhere, so in the interest of time, this does the best available currently. Fixes #678 --- .../accessschedule.template.html | 2 +- src/components/actionsheet/actionsheet.js | 2 +- src/components/alphapicker/alphapicker.js | 2 +- src/components/cardbuilder/cardBuilder.js | 14 ++++++------- src/components/channelmapper/channelmapper.js | 2 +- .../collectioneditor/collectioneditor.js | 2 +- .../directorybrowser/directorybrowser.js | 2 +- .../emby-scrollbuttons/emby-scrollbuttons.js | 2 +- src/components/favoriteitems.js | 2 +- src/components/filtermenu/filtermenu.js | 2 +- .../guide/guide-settings.template.html | 2 +- src/components/guide/guide.js | 12 +++++------ src/components/guide/tvguide.template.html | 4 ++-- .../homescreensettings/homescreensettings.js | 6 +++--- src/components/homesections/homesections.js | 6 +++--- .../imagedownloader/imagedownloader.js | 2 +- .../imagedownloader.template.html | 2 +- src/components/imageeditor/imageeditor.js | 8 ++++---- .../imageeditor/imageeditor.template.html | 2 +- .../imageoptionseditor.template.html | 2 +- .../imageuploader/imageuploader.template.html | 2 +- src/components/indicators/indicators.js | 12 +++++------ .../itemMediaInfo/itemMediaInfo.template.html | 2 +- src/components/itemcontextmenu.js | 4 ++-- .../itemidentifier.template.html | 2 +- .../libraryoptionseditor.js | 14 ++++++------- src/components/listview/listview.js | 12 +++++------ src/components/mediainfo/mediainfo.js | 8 ++++---- .../medialibrarycreator.template.html | 2 +- .../medialibraryeditor.template.html | 2 +- .../metadataeditor.template.html | 4 ++-- .../metadataeditor/personeditor.template.html | 2 +- src/components/multiselect/multiselect.js | 2 +- src/components/nowplayingbar/nowplayingbar.js | 12 +++++------ src/components/playback/brightnessosd.js | 2 +- src/components/playback/volumeosd.js | 4 ++-- .../playlisteditor/playlisteditor.js | 2 +- src/components/prompt/prompt.template.html | 2 +- .../recordingcreator.template.html | 2 +- .../recordingeditor.template.html | 2 +- .../recordingfields.template.html | 4 ++-- .../seriesrecordingeditor.template.html | 2 +- src/components/refreshdialog/refreshdialog.js | 2 +- src/components/remotecontrol/remotecontrol.js | 8 ++++---- src/components/slideshow/slideshow.js | 2 +- src/components/sortmenu/sortmenu.js | 2 +- .../subtitleeditor/subtitleeditor.js | 6 +++--- .../subtitleeditor.template.html | 2 +- src/components/tabbedview/itemstab.js | 2 +- src/components/tunerpicker.js | 2 +- src/components/viewsettings/viewsettings.js | 2 +- src/controllers/dashboard/dashboard.js | 2 +- .../dashboard/plugins/installed.js | 2 +- .../scheduledtasks/scheduledtasks.js | 4 ++-- src/controllers/devices.js | 2 +- src/controllers/favorites.js | 2 +- src/controllers/itemdetailpage.js | 2 +- src/controllers/list.js | 2 +- src/controllers/livetvstatus.js | 4 ++-- src/controllers/medialibrarypage.js | 2 +- src/controllers/movies/moviegenres.js | 2 +- src/controllers/playback/videoosd.js | 8 ++++---- src/controllers/shows/tvgenres.js | 2 +- src/controllers/userprofilespage.js | 4 ++-- src/dashboard.html | 10 +++++----- src/elements/emby-select/emby-select.js | 2 +- src/itemdetails.html | 8 ++++---- src/list.html | 12 +++++------ src/livetv.html | 16 +++++++-------- src/movies.html | 16 +++++++-------- src/music.html | 20 +++++++++---------- src/mypreferencesmenu.html | 2 +- src/nowplaying.html | 20 +++++++++---------- src/scripts/librarybrowser.js | 8 ++++---- src/scripts/librarymenu.js | 6 +++--- src/tv.html | 12 +++++------ src/videoosd.html | 16 +++++++-------- src/wizardfinish.html | 2 +- src/wizardlibrary.html | 2 +- src/wizardremoteaccess.html | 2 +- src/wizardsettings.html | 2 +- src/wizarduser.html | 2 +- 82 files changed, 201 insertions(+), 201 deletions(-) diff --git a/src/components/accessschedule/accessschedule.template.html b/src/components/accessschedule/accessschedule.template.html index a0d05537c4..02f11942ed 100644 --- a/src/components/accessschedule/accessschedule.template.html +++ b/src/components/accessschedule/accessschedule.template.html @@ -1,6 +1,6 @@

${HeaderAccessSchedule} diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 9be09c4d25..926d63b637 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -158,7 +158,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu } if (layoutManager.tv) { - html += ''; + html += ''; } // If any items have an icon, give them all an icon just to make sure they're all lined up evenly diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index a23a7dfff3..9ac39e55be 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -67,7 +67,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 23ac93676e..5a40d0ec0c 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -758,7 +758,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -1316,15 +1316,15 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { - overlayButtons += ''; + overlayButtons += ''; } if (overlayPlayButton && !item.IsPlaceHolder && (item.LocationType !== 'Virtual' || !item.MediaType || item.Type === 'Program') && item.Type !== 'Person') { - overlayButtons += ''; + overlayButtons += ''; } if (options.overlayMoreButton) { - overlayButtons += ''; + overlayButtons += ''; } } @@ -1457,7 +1457,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } html += '
'; @@ -1477,7 +1477,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana html += ''; } - html += ''; + html += ''; html += '
'; html += '
'; @@ -1673,7 +1673,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var icon = cell.querySelector('.timerIndicator'); if (!icon) { var indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); + indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); } diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index ee89b1799d..2b2de1870c 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -127,7 +127,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee var html = ""; var title = globalize.translate("MapChannels"); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += "

"; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index 864e03ab52..79220ac335 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -243,7 +243,7 @@ define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManage var title = items.length ? globalize.translate('HeaderAddToCollection') : globalize.translate('NewCollection'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index d4d25fa905..06f7773cf6 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -265,7 +265,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += options.header || Globalize.translate("HeaderSelectPath"); html += "

"; diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.js b/src/components/emby-scrollbuttons/emby-scrollbuttons.js index 0b769a9821..af8261a632 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.js @@ -7,7 +7,7 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' function getScrollButtonHtml(direction) { var html = ''; - var icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; + var icon = direction === 'left' ? '' : ''; html += ''; + html += ''; html += '

${Filters}

'; html += '
'; diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index f5a52a7475..02701db3d2 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 9144886945..fd6931177a 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -416,7 +416,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -430,13 +430,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -550,7 +550,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
keyboard_arrow_left
'; + html += '
'; html += '
' + program.Name; @@ -1106,7 +1106,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); } if (newTimerId) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 3f95448523..5dc16dba3b 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,7 +30,7 @@
'; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index af574200f3..4ecff8bef5 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -260,7 +260,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; @@ -608,7 +608,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderOnNow'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { @@ -683,7 +683,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 019875f35c..f984ce22a5 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -116,7 +116,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (showControls) { html += '
'; - html += ''; + html += ''; html += ''; html += '
'; } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index 0dc3cc0661..dec796fb05 100644 --- a/src/components/imagedownloader/imagedownloader.template.html +++ b/src/components/imagedownloader/imagedownloader.template.html @@ -1,5 +1,5 @@
- +

${Search}

diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index da3d673aa7..20aebf4305 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -155,15 +155,15 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (image.ImageType === "Backdrop" || image.ImageType === "Screenshot") { if (index > 0) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } if (index < numImages - 1) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } } else { if (imageProviders.length) { diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index 57b63550fd..37dce874c0 100644 --- a/src/components/imageeditor/imageeditor.template.html +++ b/src/components/imageeditor/imageeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderEditImages}

diff --git a/src/components/imageoptionseditor/imageoptionseditor.template.html b/src/components/imageoptionseditor/imageoptionseditor.template.html index 3e9a2ae8ce..910d8fdd6e 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.template.html +++ b/src/components/imageoptionseditor/imageoptionseditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderImageOptions}

diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index b27168075a..1b83b50955 100644 --- a/src/components/imageuploader/imageuploader.template.html +++ b/src/components/imageuploader/imageuploader.template.html @@ -1,5 +1,5 @@
- +

${HeaderUploadImage}

diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index a8bd4c6200..5b9c1e6787 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -118,7 +118,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -129,20 +129,20 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getSyncIndicator(item) { if (item.SyncPercent === 100) { - return '
file_download
'; + return '
'; } else if (item.SyncPercent != null) { - return '
file_download
'; + return '
'; } return ''; diff --git a/src/components/itemMediaInfo/itemMediaInfo.template.html b/src/components/itemMediaInfo/itemMediaInfo.template.html index afe0023cdd..d5f583dcab 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.template.html +++ b/src/components/itemMediaInfo/itemMediaInfo.template.html @@ -1,6 +1,6 @@

${HeaderMediaInfo}

diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 77ba2a6f49..62048345ea 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -15,7 +15,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("Play"), id: "resume", - icon: "play_arrow" + icon: "" }); } @@ -23,7 +23,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("PlayAllFromHere"), id: "playallfromhere", - icon: "play_arrow" + icon: "" }); } } diff --git a/src/components/itemidentifier/itemidentifier.template.html b/src/components/itemidentifier/itemidentifier.template.html index 229c047553..9b3e58a864 100644 --- a/src/components/itemidentifier/itemidentifier.template.html +++ b/src/components/itemidentifier/itemidentifier.template.html @@ -1,6 +1,6 @@

${Identify}

diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 261d20745b..f9f63c9b51 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -65,9 +65,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += "

"; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -120,7 +120,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += plugin.Name; html += ""; html += "
"; - i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" } html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -220,9 +220,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += ""; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += ""; } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index dbe47b562f..4ab317155d 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -262,9 +262,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (!clickEntireItem && options.dragHandle) { - //html += ''; + //html += ''; // Firefox and Edge are not allowing the button to be draggable - html += 'drag_handle'; + html += ''; } if (options.image !== false) { @@ -298,7 +298,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -427,7 +427,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - var moreIcon = 'more_horiz'; + var moreIcon = ''; html += getTextLinesHtml(textlines, isLargeStyle); @@ -476,7 +476,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { @@ -484,7 +484,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index e4375b742a..3b25b58ffa 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -6,7 +6,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -20,13 +20,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getProgramInfoHtml(item, options) { diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index 4dcb7812d4..32c6b254b7 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index 07e26b777b..172c535fa1 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index a09c2dd57b..8e36a824b7 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

@@ -9,7 +9,7 @@ ${Save}
diff --git a/src/components/metadataeditor/personeditor.template.html b/src/components/metadataeditor/personeditor.template.html index 57a46a0413..ec76f58c70 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index b1367ef66b..b4fa87c8a0 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -129,7 +129,7 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo html += ''; html += '

'; - var moreIcon = "more_horiz"; + var moreIcon = ""; html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..87cc83e388 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -42,19 +42,19 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; html += ''; html += ''; - html += ''; + html += ''; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; @@ -66,7 +66,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; html += ''; - html += ''; + html += ''; html += '
'; html += '
'; @@ -289,7 +289,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (isPaused) { for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').innerHTML = 'play_arrow'; + playPauseButtons[i].querySelector('i').innerHTML = ''; } } else { @@ -400,7 +400,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } if (isMuted) { - muteButton.querySelector('i').innerHTML = 'volume_off'; + muteButton.querySelector('i').innerHTML = ''; } else { muteButton.querySelector('i').innerHTML = 'volume_up'; } diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 1a064ed39d..f50e281c99 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'brightness_high'; + html += ''; html += '
'; diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index d1cd64c656..de20aaab15 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'volume_up'; + html += ''; html += '
'; @@ -101,7 +101,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - iconElement.innerHTML = isMuted ? 'volume_off' : 'volume_up'; + iconElement.innerHTML = isMuted ? '' : ''; } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index b70bdc1442..c274b40799 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -258,7 +258,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index 8e78a64cbc..23b918a1f2 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index e8cb850338..b99ead300a 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index b5f38dbba4..48256da0a2 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 35f5d4412d..ce35960716 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index 0aaa687b60..fa9f16561b 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 07ad8e2e59..b5730e592a 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -123,7 +123,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..14866e05a1 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -297,10 +297,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; + view.querySelector(".buttonMute i").innerHTML = ""; } if (progressElement) { @@ -332,7 +332,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; var btnPlayPause = context.querySelector(".btnPlayPause"); - btnPlayPause.querySelector("i").innerHTML = isPaused ? "play_arrow" : "pause"; + btnPlayPause.querySelector("i").innerHTML = isPaused ? "" : "pause"; buttonVisible(btnPlayPause, isActive); } @@ -367,7 +367,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL action: "setplaylistindex", enableUserDataButtons: false, rightButtons: [{ - icon: "remove_circle_outline", + icon: "", title: globalize.translate("ButtonRemove"), id: "remove" }], diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index b6c896f623..115de54b25 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -349,7 +349,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "play_arrow"; + btnSlideshowPause.innerHTML = ""; } swiperInstance.stopAutoplay(); diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index 6820b24d23..a0b40acaf6 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -66,7 +66,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Sort}

'; html += '
'; diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 59ca98ff32..1ff30712f6 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -132,7 +132,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">'; - itemHtml += 'closed_caption'; + itemHtml += ''; itemHtml += '
'; @@ -248,7 +248,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">'; - html += 'closed_caption'; + html += ''; var bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; @@ -281,7 +281,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '
'; if (!layoutManager.tv) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index 4d1d737b41..8719cc9305 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,5 +1,5 @@
- +

${Subtitles}

info${Help} diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index d430102f2a..6cfd408424 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -181,7 +181,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'; + btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? '' : ''; } function bindAll(elems, eventName, fn) { diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index fb6760dec4..ec6087b890 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -128,7 +128,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" dlg.classList.add("formDialog"); var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += globalize.translate("HeaderLiveTvTunerSetup"); html += "

"; diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index 82bafb084f..d40c4d9618 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -77,7 +77,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Settings}

'; html += '
'; diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 9746b58afe..1b7d123931 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -571,7 +571,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } if (session.PlayState && session.PlayState.IsPaused) { - btnSessionPlayPause.querySelector("i").innerHTML = "play_arrow"; + btnSessionPlayPause.querySelector("i").innerHTML = ""; } else { btnSessionPlayPause.querySelector("i").innerHTML = "pause"; } diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index a88d018e9a..026b58ce67 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -54,7 +54,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += "
"; html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index cc8be8216e..2c665a4403 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -51,7 +51,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma if (task.State === "Running") { html += ''; } else if (task.State === "Idle") { - html += ''; + html += ''; } html += "
"; } @@ -99,7 +99,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma } else if (state === "Idle") { elem.classList.add("btnStartTask"); elem.classList.remove("btnStopTask"); - elem.querySelector("i").innerHTML = "play_arrow"; + elem.querySelector("i").innerHTML = ""; elem.title = globalize.translate("ButtonStart"); } $(elem).parents(".listItem")[0].setAttribute("data-status", state); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 2013607d70..4ddb4d4d20 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 522ddd4712..a4f2af64dd 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -248,7 +248,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap html += '

'; html += globalize.translate(section.name); html += "

"; - html += 'chevron_right'; + html += ''; html += ""; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 432ad0ff2d..990de87b60 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -2070,7 +2070,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); bindAll(view, ".btnDeleteItem", "click", onDeleteClick); bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".btnMoreCommands i").innerHTML = "more_horiz"; + view.querySelector(".btnMoreCommands i").innerHTML = ""; view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); view.querySelector(".btnSplitVersions").addEventListener("click", function () { splitVersions(self, view, apiClient, params); diff --git a/src/controllers/list.js b/src/controllers/list.js index f5d601345d..6e25242a01 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -175,7 +175,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"; + btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "" : ""; } } } diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 1c6386ba9f..aee5876a45 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -30,7 +30,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += "
"; html += "
"; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; html += '
'; html += device.Url || " "; @@ -112,7 +112,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += "
"; html += ""; html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index b4291e41a6..03c84f2ca3 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -297,7 +297,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showMenu !== false) { html += '
'; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 0067f64228..31b09aceb8 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -145,7 +145,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..50ae615b82 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -539,7 +539,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updateFullscreenIcon() { if (playbackManager.isFullscreen(currentPlayer)) { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("ExitFullscreen")); - view.querySelector(".btnFullscreen i").innerHTML = "fullscreen_exit"; + view.querySelector(".btnFullscreen i").innerHTML = ""; } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); view.querySelector(".btnFullscreen i").innerHTML = "fullscreen"; @@ -741,7 +741,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updatePlayPauseState(isPaused) { var button = view.querySelector(".btnPause i"); if (isPaused) { - button.innerHTML = "play_arrow"; + button.innerHTML = ""; button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { button.innerHTML = "pause"; @@ -880,10 +880,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; + view.querySelector(".buttonMute i").innerHTML = ""; } if (progressElement) { diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 23397fd73e..d3034d8b5c 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -141,7 +141,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index a3c247cd35..2a2387ab60 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
'; html += user.Name; html += "
"; - html += ''; + html += ''; html += "
"; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); @@ -188,7 +188,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += '
'; html += user.UserName; diff --git a/src/dashboard.html b/src/dashboard.html index 4888c1110f..5417cae9a5 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -5,7 +5,7 @@

${TabServer}

- chevron_right +
@@ -34,7 +34,7 @@

${HeaderActiveDevices}

- chevron_right +
@@ -45,7 +45,7 @@

${HeaderActivity}

- chevron_right +
@@ -62,7 +62,7 @@

${Alerts}

- chevron_right +
@@ -71,7 +71,7 @@

${HeaderPaths}

- chevron_right +
diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index e26d1921aa..02818c6630 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
keyboard_arrow_down
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/itemdetails.html b/src/itemdetails.html index ef41bc4b16..100e3f968a 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,7 +1,7 @@
@@ -17,21 +17,21 @@
diff --git a/src/list.html b/src/list.html index 643d3a1baa..375653c12d 100644 --- a/src/list.html +++ b/src/list.html @@ -7,13 +7,13 @@ ${HeaderPlayAll}
diff --git a/src/livetv.html b/src/livetv.html index 752b7c827b..9986529b7f 100644 --- a/src/livetv.html +++ b/src/livetv.html @@ -7,7 +7,7 @@
@@ -16,7 +16,7 @@
@@ -25,7 +25,7 @@
@@ -34,7 +34,7 @@
@@ -43,7 +43,7 @@
@@ -52,7 +52,7 @@
@@ -63,7 +63,7 @@
- +
@@ -72,7 +72,7 @@
diff --git a/src/movies.html b/src/movies.html index 702f1e1f40..e552ca392f 100644 --- a/src/movies.html +++ b/src/movies.html @@ -3,9 +3,9 @@
- - - + + +
@@ -46,8 +46,8 @@
- - + +
@@ -62,7 +62,7 @@
- +
@@ -74,8 +74,8 @@
- - + +
diff --git a/src/music.html b/src/music.html index d4d0acd8bb..9a284a5f8f 100644 --- a/src/music.html +++ b/src/music.html @@ -37,11 +37,11 @@
- + - - - + + +
@@ -56,8 +56,8 @@
- - + +
@@ -72,8 +72,8 @@
- - + +
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index cb63322f31..f7948a0789 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -41,7 +41,7 @@
- closed_caption +
${Subtitles}
diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..b609fab164 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -14,11 +14,11 @@
@@ -63,7 +63,7 @@
@@ -78,13 +78,13 @@

'; + html += ''; html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } html += "
"; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 406edbff5e..0abcf697b1 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -5,7 +5,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var html = ""; html += '
'; html += '
'; - html += '"; + html += ''; html += ''; html += ''; html += '

'; @@ -306,7 +306,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " icon: "folder" }, { name: globalize.translate("TabPlayback"), - icon: "play_arrow", + icon: "", href: "encodingsettings.html", pageIds: ["encodingSettingsPage", "playbackConfigurationPage", "streamingSettingsPage"] }]; @@ -584,7 +584,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var icon = headerCastButton.querySelector("i"); if (info && !info.isLocalPlayer) { - icon.innerHTML = "cast_connected"; + icon.innerHTML = ""; headerCastButton.classList.add("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; } else { diff --git a/src/tv.html b/src/tv.html index 0840652c77..9a47c6fa8b 100644 --- a/src/tv.html +++ b/src/tv.html @@ -3,9 +3,9 @@
- - - + + +
@@ -59,9 +59,9 @@
- - - + + +
diff --git a/src/videoosd.html b/src/videoosd.html index a099605d0d..de14f9c1ca 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -25,15 +25,15 @@
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index 84b559ee82..d3a0c4a831 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -5,7 +5,7 @@

${WizardCompleted}

${OptionAllowMediaPlaybackTranscodingHelp}
From 2557ec8fd3d3e07fd833c7901dc5630b6749888d Mon Sep 17 00:00:00 2001 From: tokiedokie Date: Sun, 16 Feb 2020 01:29:56 +0000 Subject: [PATCH 053/449] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index a276c7df07..88cfc5b689 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1115,5 +1115,8 @@ "LabelPreferredDisplayLanguage": "優先する表示言語:", "ImportMissingEpisodesHelp": "有効にすると、所有してないエピソードの情報がJellyfinデータベースにインポートされ、シーズンとシリーズに表示されます。これは、ライブラリスキャンに莫大な時間が掛かる可能性があります。", "LabelBindToLocalNetworkAddress": "ローカルネットワークアドレスにバインド:", - "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:" + "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:", + "HeaderNavigation": "ナビゲーション", + "CopyStreamURLError": "URLのコピー中にエラーが発生しました。", + "ButtonSplit": "分ける" } From e5343cada8a909ca6a7c27bbab8517da0e0ba7f6 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Sun, 16 Feb 2020 02:52:30 +0100 Subject: [PATCH 054/449] Fix Swiper on WebOS by importing ES5 version (#806) --- src/bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bundle.js b/src/bundle.js index 308687513a..b7bde65f80 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -66,7 +66,7 @@ _define("shaka", function() { }); // swiper -var swiper = require("swiper"); +var swiper = require("swiper/js/swiper"); require("swiper/css/swiper.min.css"); _define("swiper", function() { return swiper; From e12e6731b261c195ce70e9fbbe23d8ad7b048532 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Feb 2020 03:44:43 +0100 Subject: [PATCH 055/449] Make the console quieter by default --- src/components/alphapicker/alphapicker.js | 2 +- src/components/appRouter.js | 12 +-- src/components/apphost.js | 8 +- src/components/autoFocuser.js | 2 +- src/components/cardbuilder/cardBuilder.js | 4 +- .../chromecast/chromecasthelpers.js | 4 +- src/components/chromecast/chromecastplayer.js | 48 +++++----- src/components/dialogHelper/dialogHelper.js | 2 +- src/components/dom.js | 2 +- .../emby-itemscontainer.js | 2 +- src/components/fetchhelper.js | 18 ++-- src/components/focusManager.js | 2 +- src/components/guide/guide.js | 6 +- src/components/htmlMediaHelper.js | 26 +++--- src/components/htmlaudioplayer/plugin.js | 6 +- src/components/htmlvideoplayer/plugin.js | 47 +++++----- src/components/imageuploader/imageuploader.js | 2 +- src/components/indicators/indicators.js | 4 +- src/components/keyboardnavigation.js | 6 +- src/components/listview/listview.js | 1 - src/components/mediainfo/mediainfo.js | 12 +-- src/components/nowplayingbar/nowplayingbar.js | 6 +- src/components/playback/playbackmanager.js | 12 +-- .../playback/playbackorientation.js | 4 +- .../playback/remotecontrolautoplay.js | 4 +- src/components/pluginManager.js | 2 +- .../polyfills/focusPreventScroll.js | 2 +- src/components/remotecontrol/remotecontrol.js | 6 +- src/components/screensavermanager.js | 4 +- src/components/scrollManager.js | 2 +- src/components/scroller.js | 2 +- .../serverNotifications.js | 4 +- src/components/skinManager.js | 4 +- src/components/slideshow/slideshow.js | 2 +- src/components/upnextdialog/upnextdialog.js | 2 +- src/controllers/dashboard/plugins/add.js | 2 +- src/controllers/movies/moviesrecommended.js | 2 +- src/controllers/music/musicrecommended.js | 2 +- src/controllers/playback/videoosd.js | 8 +- src/controllers/shows/tvupcoming.js | 2 +- src/controllers/wizard/user.js | 2 +- src/libraries/apiclient/apiclientcore.js | 57 ++++++++---- src/libraries/apiclient/appStorage.js | 4 +- src/libraries/apiclient/connectionmanager.js | 46 +++++----- src/libraries/apiclient/credentialprovider.js | 2 +- src/libraries/apiclient/localassetmanager.js | 4 +- src/libraries/apiclient/sync/localsync.js | 2 +- src/libraries/apiclient/sync/mediasync.js | 92 +++++++++---------- .../apiclient/sync/multiserversync.js | 10 +- src/libraries/apiclient/sync/serversync.js | 12 +-- src/scripts/autobackdrops.js | 2 +- src/scripts/browserdeviceprofile.js | 4 +- src/scripts/globalize.js | 4 +- src/scripts/livetvcomponents.js | 2 +- src/scripts/routes.js | 4 +- src/scripts/site.js | 24 ++--- 56 files changed, 286 insertions(+), 273 deletions(-) diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index a23a7dfff3..9a51c310c3 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -241,7 +241,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b try { btn = element.querySelector('.alphaPickerButton[data-value=\'' + value + '\']'); } catch (err) { - console.log('Error in querySelector: ' + err); + console.error('error in querySelector: ' + err); } if (btn && btn !== selected) { diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 7b36d01bdd..f201e1239f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -387,13 +387,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM var apiClient = connectionManager.currentApiClient(); var pathname = ctx.pathname.toLowerCase(); - console.log('appRouter - processing path request ' + pathname); + console.debug('appRouter - processing path request ' + pathname); var isCurrentRouteStartup = currentRouteInfo ? currentRouteInfo.route.startup : true; var shouldExitApp = ctx.isBack && route.isDefaultRoute && isCurrentRouteStartup; if (!shouldExitApp && (!apiClient || !apiClient.isLoggedIn()) && !route.anonymous) { - console.log('appRouter - route does not allow anonymous access, redirecting to login'); + console.debug('appRouter - route does not allow anonymous access, redirecting to login'); beginConnectionWizard(); return; } @@ -408,10 +408,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM if (apiClient && apiClient.isLoggedIn()) { - console.log('appRouter - user is authenticated'); + console.debug('appRouter - user is authenticated'); if (route.isDefaultRoute) { - console.log('appRouter - loading skin home page'); + console.debug('appRouter - loading skin home page'); loadUserSkinWithOptions(ctx); return; } else if (route.roles) { @@ -425,7 +425,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } } - console.log('appRouter - proceeding to ' + pathname); + console.debug('appRouter - proceeding to ' + pathname); callback(); } @@ -672,7 +672,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM baseRoute = baseRoute.substring(0, baseRoute.length - 1); } - console.log('Setting page base to ' + baseRoute); + console.debug('setting page base to ' + baseRoute); page.base(baseRoute); } diff --git a/src/components/apphost.js b/src/components/apphost.js index 2a0b7b19e9..291f531eb1 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -186,7 +186,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return !!cue.length; } catch (err) { - console.log("error detecting cue support: " + err); + console.error("error detecting cue support: " + err); return false; } } @@ -194,7 +194,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppVisible() { if (isHidden) { isHidden = false; - console.log("triggering app resume event"); + console.debug("triggering app resume event"); events.trigger(appHost, "resume"); } } @@ -202,7 +202,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppHidden() { if (!isHidden) { isHidden = true; - console.log("app is hidden"); + console.debug("app is hidden"); } } @@ -314,7 +314,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet window.close(); } } catch (err) { - console.log("error closing application: " + err); + console.error("error closing application: " + err); } } diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 09ded814f2..6d99009e67 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -25,7 +25,7 @@ define(["focusManager", "layoutManager"], function (focusManager, layoutManager) activeElement = e.target; }); - console.log("AutoFocuser enabled"); + console.debug("AutoFocuser enabled"); } /** diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 29d7455bc9..e9e58780af 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -342,7 +342,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana try { newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); } catch (err) { - console.log('error parsing timestamp for premiere date'); + console.error('error parsing timestamp for premiere date'); } } } else if (options.indexBy === 'ProductionYear') { @@ -738,7 +738,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana airTimeText += ' - ' + datetime.getDisplayTime(date); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9d6f811cb1..21dbec6ff0 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -132,7 +132,7 @@ define(['events'], function (events) { var match; while (match = linkRegExp.exec(text)) { - // console.log(matches); + // console.debug(matches); var txt = match[0]; var pos = match.index; var len = txt.length; @@ -189,7 +189,7 @@ define(['events'], function (events) { return apiClient.getPublicSystemInfo().then(function (info) { var localAddress = info.LocalAddress if (!localAddress) { - console.log("No valid local address returned, defaulting to external one") + console.debug("No valid local address returned, defaulting to external one") localAddress = serverAddress; } addToCache(serverAddress, localAddress); diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 112d2980ab..4bb9b4daa1 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -105,7 +105,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.sessionListener.bind(this), this.receiverListener.bind(this)); - console.log('chromecast.initialize'); + console.debug('chromecast.initialize'); chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler); }; @@ -114,14 +114,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onInitSuccess = function () { this.isInitialized = true; - console.log("chromecast init success"); + console.debug("chromecast init success"); }; /** * Generic error callback function */ CastPlayer.prototype.onError = function () { - console.log("chromecast error"); + console.debug("chromecast error"); }; /** @@ -177,10 +177,10 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.receiverListener = function (e) { if (e === 'available') { - console.log("chromecast receiver found"); + console.debug("chromecast receiver found"); this.hasReceivers = true; } else { - console.log("chromecast receiver list empty"); + console.debug("chromecast receiver list empty"); this.hasReceivers = false; } }; @@ -190,7 +190,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.sessionUpdateListener = function (isAlive) { if (isAlive) { - console.log('sessionUpdateListener: already alive'); + console.debug('sessionUpdateListener: already alive'); } else { this.session = null; this.deviceState = DEVICE_STATE.IDLE; @@ -198,7 +198,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); - console.log('sessionUpdateListener: setting currentMediaSession to null'); + console.debug('sessionUpdateListener: setting currentMediaSession to null'); this.currentMediaSession = null; sendConnectionResult(false); @@ -211,7 +211,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session request in opt_sessionRequest. */ CastPlayer.prototype.launchApp = function () { - console.log("chromecast launching app..."); + console.debug("chromecast launching app..."); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); }; @@ -220,7 +220,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {Object} e A chrome.cast.Session object */ CastPlayer.prototype.onRequestSessionSuccess = function (e) { - console.log("chromecast session success: " + e.sessionId); + console.debug("chromecast session success: " + e.sessionId); this.onSessionConnected(e); }; @@ -262,7 +262,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for launch error */ CastPlayer.prototype.onLaunchError = function () { - console.log("chromecast launch error"); + console.debug("chromecast launch error"); this.deviceState = DEVICE_STATE.ERROR; sendConnectionResult(false); }; @@ -280,7 +280,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for stop app success */ CastPlayer.prototype.onStopAppSuccess = function (message) { - console.log(message); + console.debug(message); this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; @@ -296,7 +296,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.loadMedia = function (options, command) { if (!this.session) { - console.log("no session"); + console.debug("no session"); return Promise.reject(); } @@ -377,7 +377,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; CastPlayer.prototype.onPlayCommandSuccess = function () { - //console.log('Message was sent to receiver ok.'); + //console.debug('Message was sent to receiver ok.'); }; /** @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - //console.log("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + //console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -405,7 +405,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {!Boolean} e true/false */ CastPlayer.prototype.onMediaStatusUpdate = function (e) { - //console.log("chromecast updating media: " + e); + console.debug("chromecast updating media: " + e); if (e === false) { this.castPlayerState = PLAYER_STATE.IDLE; } @@ -417,7 +417,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { if (!this.currentMediaSession) { - //console.log('this.currentMediaSession is null'); + //console.debug('this.currentMediaSession is null'); return; } @@ -443,7 +443,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { - //console.log(info); + //console.debug(info); }; function normalizeImages(state) { @@ -493,7 +493,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, eventName, function (e, data) { - //console.log('cc: ' + eventName); + //console.debug('cc: ' + eventName); var state = instance.getPlayerStateInternal(data); events.trigger(instance, eventName, [state]); @@ -520,14 +520,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' playbackManager.setActivePlayer(PlayerName, instance.getCurrentTargetInfo()); } - console.log('cc: connect'); + console.debug('cc: connect'); // Reset this so that statechange will fire instance.lastPlayerData = null; }); events.on(instance._castPlayer, "playbackstart", function (e, data) { - console.log('cc: playbackstart'); + console.debug('cc: playbackstart'); instance._castPlayer.initializeCastPlayer(); @@ -537,7 +537,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackstop", function (e, data) { - console.log('cc: playbackstop'); + console.debug('cc: playbackstop'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "playbackstop", [state]); @@ -555,7 +555,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackprogress", function (e, data) { - //console.log('cc: positionchange'); + //console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "timeupdate", [state]); @@ -569,7 +569,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playstatechange", function (e, data) { - //console.log('cc: playstatechange'); + //console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "pause", [state]); @@ -664,7 +664,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' normalizeImages(data); - //console.log(JSON.stringify(data)); + //console.debug(JSON.stringify(data)); if (triggerStateChange) { events.trigger(this, "statechange", [data]); diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..2372fb584c 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -32,7 +32,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } diff --git a/src/components/dom.js b/src/components/dom.js index da03b87428..828b086897 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -69,7 +69,7 @@ define([], function () { }); window.addEventListener("test", null, opts); } catch (e) { - console.log('error checking capture support'); + console.debug('error checking capture support'); } function addEventListenerWithOptions(target, type, handler, options) { diff --git a/src/components/emby-itemscontainer/emby-itemscontainer.js b/src/components/emby-itemscontainer/emby-itemscontainer.js index 7cfb3e4a4a..bd2caa476e 100644 --- a/src/components/emby-itemscontainer/emby-itemscontainer.js +++ b/src/components/emby-itemscontainer/emby-itemscontainer.js @@ -467,7 +467,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', focusManager.focus(newElement); return; } catch (err) { - console.log(err); + console.error(err); } } } diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index bb7f21e75e..beb23efba1 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -51,7 +51,7 @@ define([], function () { function fetchWithTimeout(url, options, timeoutMs) { - console.log('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url); + console.debug('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url); return new Promise(function (resolve, reject) { @@ -63,14 +63,14 @@ define([], function () { fetch(url, options).then(function (response) { clearTimeout(timeout); - console.log('fetchWithTimeout: succeeded connecting to url: ' + url); + console.debug('fetchWithTimeout: succeeded connecting to url: ' + url); resolve(response); }, function (error) { clearTimeout(timeout); - console.log('fetchWithTimeout: timed out connecting to url: ' + url); + console.debug('fetchWithTimeout: timed out connecting to url: ' + url); reject(); }); @@ -93,21 +93,17 @@ define([], function () { } function ajax(request) { - if (!request) { throw new Error("Request cannot be null"); } request.headers = request.headers || {}; - console.log('requesting url: ' + request.url); + console.debug('requesting url: ' + request.url); return getFetchPromise(request).then(function (response) { - - console.log('response status: ' + response.status + ', url: ' + request.url); - + console.debug('response status: ' + response.status + ', url: ' + request.url); if (response.status < 400) { - if (request.dataType === 'json' || request.headers.accept === 'application/json') { return response.json(); } else if (request.dataType === 'text' || (response.headers.get('Content-Type') || '').toLowerCase().indexOf('text/') === 0) { @@ -118,10 +114,8 @@ define([], function () { } else { return Promise.reject(response); } - }, function (err) { - - console.log('request failed to url: ' + request.url); + console.error('request failed to url: ' + request.url); throw err; }); } diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 56ff324e23..1da58d75c8 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -43,7 +43,7 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { preventScroll: scrollManager.isEnabled() }); } catch (err) { - console.log('Error in focusManager.autoFocus: ' + err); + console.error('Error in focusManager.autoFocus: ' + err); } } diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 9144886945..c3203ed8df 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -29,7 +29,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var offset = newPct - left; var pctOfWidth = (offset / width) * 100; - //console.log(pctOfWidth); + //console.debug(pctOfWidth); var guideProgramName = cell.guideProgramName; if (!guideProgramName) { guideProgramName = cell.querySelector('.guideProgramName'); @@ -396,7 +396,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for start date'); + console.error('error parsing timestamp for start date'); } } @@ -404,7 +404,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for end date'); + console.error('error parsing timestamp for end date'); } } diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 86f05dabfa..b900dd3719 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -114,12 +114,12 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve if (!recoverDecodingErrorDate || (now - recoverDecodingErrorDate) > 3000) { recoverDecodingErrorDate = now; - console.log('try to recover media Error ...'); + console.debug('try to recover media Error ...'); hlsPlayer.recoverMediaError(); } else { if (!recoverSwapAudioCodecDate || (now - recoverSwapAudioCodecDate) > 3000) { recoverSwapAudioCodecDate = now; - console.log('try to swap Audio Codec and recover media Error ...'); + console.debug('try to swap Audio Codec and recover media Error ...'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { @@ -233,7 +233,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve return Promise.resolve(); } } catch (err) { - console.log('error calling video.play: ' + err); + console.error('error calling video.play: ' + err); return Promise.reject(); } } @@ -245,7 +245,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.unload(); } catch (err) { - console.log(err); + console.error(err); } instance._castPlayer = null; @@ -258,7 +258,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._shakaPlayer = null; @@ -271,7 +271,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._hlsPlayer = null; @@ -286,7 +286,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve player.detachMediaElement(); player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._flvPlayer = null; @@ -307,14 +307,14 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve hls.on(Hls.Events.ERROR, function (event, data) { - console.log('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); + console.error('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); switch (data.type) { case Hls.ErrorTypes.NETWORK_ERROR: // try to recover network error if (data.response && data.response.code && data.response.code >= 400) { - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -343,7 +343,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve // This could be a CORS error related to access control response headers - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -355,20 +355,20 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve onErrorInternal(instance, 'network'); } } else { - console.log("fatal network error encountered, try to recover"); + console.debug("fatal network error encountered, try to recover"); hls.startLoad(); } break; case Hls.ErrorTypes.MEDIA_ERROR: - console.log("fatal media error encountered, try to recover"); + console.debug("fatal media error encountered, try to recover"); var currentReject = reject; reject = null; handleHlsJsMediaError(instance, currentReject); break; default: - console.log('Cannot recover from hls error - destroy and trigger error'); + console.debug('Cannot recover from hls error - destroy and trigger error'); // cannot recover // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index ef64bad046..aeccaa9a12 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -16,7 +16,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp // Need to record the starting volume on each pass rather than querying elem.volume // This is due to iOS safari not allowing volume changes and always returning the system volume value var newVolume = Math.max(0, startingVolume - 0.15); - console.log('fading volume to ' + newVolume); + console.debug('fading volume to ' + newVolume); elem.volume = newVolume; if (newVolume <= 0) { @@ -113,7 +113,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp bindEvents(elem); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -298,7 +298,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 45eff41dbe..5ffed8c999 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -11,7 +11,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } @@ -242,7 +242,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa loading.show(); - console.log('prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('prefetching hls playlist: ' + hlsPlaylistUrl); return connectionManager.getApiClient(item.ServerId).ajax({ @@ -251,7 +251,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }).then(function () { - console.log('completed prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('completed prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); streamInfo.url = hlsPlaylistUrl; @@ -260,7 +260,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }, function () { - console.log('error prefetching hls playlist: ' + hlsPlaylistUrl); + console.error('error prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); return Promise.resolve(); @@ -408,7 +408,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lrd.media.streamType = cast.receiver.media.StreamType.OTHER; lrd.media.customData = options; - console.log('loading media url into mediaManager'); + console.debug('loading media url into mediaManager'); try { mediaManager.load(lrd); @@ -418,7 +418,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return Promise.resolve(); } catch (err) { - console.log('mediaManager error: ' + err); + console.debug('mediaManager error: ' + err); return Promise.reject(); } } @@ -460,11 +460,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa protocol = cast.player.api.CreateSmoothStreamingProtocol(host); } - console.log('loading playback url: ' + url); - console.log('contentType: ' + contentType); + console.debug('loading playback url: ' + url); + console.debug('contentType: ' + contentType); host.onError = function (errorCode) { - console.log("Fatal Error - " + errorCode); + console.error("Fatal Error - " + errorCode); }; mediaElement.autoplay = false; @@ -499,7 +499,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elem.removeEventListener('error', onError); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -608,7 +608,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } else if (currentTrackEvents) { setTrackEventsSubtitleOffset(currentTrackEvents, offsetValue); } else { - console.log("No available track, cannot apply offset: ", offsetValue); + console.debug("No available track, cannot apply offset: ", offsetValue); } } }; @@ -727,15 +727,15 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa // https://msdn.microsoft.com/en-us/library/hh772507(v=vs.85).aspx var elemAudioTracks = elem.audioTracks || []; - console.log('found ' + elemAudioTracks.length + ' audio tracks'); + console.debug('found ' + elemAudioTracks.length + ' audio tracks'); for (i = 0, length = elemAudioTracks.length; i < length; i++) { if (audioIndex === i) { - console.log('setting audio track ' + i + ' to enabled'); + console.debug('setting audio track ' + i + ' to enabled'); elemAudioTracks[i].enabled = true; } else { - console.log('setting audio track ' + i + ' to disabled'); + console.debug('setting audio track ' + i + ' to disabled'); elemAudioTracks[i].enabled = false; } } @@ -911,7 +911,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function onError() { var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; @@ -1115,9 +1115,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function renderSsaAss(videoElement, track, item) { if (supportsCanvas() && supportsWebWorkers()) { + console.debug('rendering subtitles with SubtitlesOctopus'); renderWithSubtitlesOctopus(videoElement, track, item); } else { - console.log('rendering subtitles with libjass'); + console.debug('rendering subtitles with libjass'); renderWithLibjass(videoElement, track, item); } } @@ -1137,7 +1138,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var videoElement = self._mediaElement; var width = videoElement.offsetWidth; var height = videoElement.offsetHeight; - console.log('videoElement resized: ' + width + 'x' + height); + console.debug('videoElement resized: ' + width + 'x' + height); renderer.resize(width, height, 0, 0); } } @@ -1254,7 +1255,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa trackElement.removeCue(trackElement.cues[0]); } } catch (e) { - console.log('Error removing cue from textTrack'); + console.error('error removing cue from textTrack'); } trackElement.mode = 'disabled'; @@ -1268,7 +1269,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa fetchSubtitles(track, item).then(function (data) { // show in ui - console.log('downloaded ' + data.TrackEvents.length + ' track events'); + console.debug('downloaded ' + data.TrackEvents.length + ' track events'); // add some cues to show the text // in safari, the cues need to be added before setting the track mode to showing data.TrackEvents.forEach(function (trackEvent) { @@ -1294,7 +1295,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { clock.seek(timeMs / 1000); } catch (err) { - console.log('Error in libjass: ' + err); + console.error('error in libjass: ' + err); } return; } @@ -1327,7 +1328,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function setCurrentTrackElement(streamIndex) { - console.log('Setting new text track index to: ' + streamIndex); + console.debug('Setting new text track index to: ' + streamIndex); var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource); @@ -1369,7 +1370,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa track.removeCue(track.cues[0]); } } catch (e) { - console.log('Error removing cue from textTrack'); + console.error('error removing cue from textTrack'); } } @@ -1590,7 +1591,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; function onPictureInPictureError(err) { - console.log('Picture in picture error: ' + err.toString()); + console.error('Picture in picture error: ' + err.toString()); } HtmlVideoPlayer.prototype.setPictureInPictureEnabled = function (isEnabled) { diff --git a/src/components/imageuploader/imageuploader.js b/src/components/imageuploader/imageuploader.js index 198f540802..400646f669 100644 --- a/src/components/imageuploader/imageuploader.js +++ b/src/components/imageuploader/imageuploader.js @@ -47,7 +47,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' }; reader.onabort = function () { loading.hide(); - console.log('File read cancelled'); + console.debug('File read cancelled'); }; // Closure to capture the file information. diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index c81ac6bf18..b909c8c68c 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -62,7 +62,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun startDate = datetime.parseISO8601Date(item.StartDate).getTime(); endDate = datetime.parseISO8601Date(item.EndDate).getTime(); } catch (err) { - console.log(err); + console.error(err); } var now = new Date().getTime(); @@ -174,7 +174,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun return '
Unaired
'; } } catch (err) { - console.log(err); + console.error(err); } } return '
Missing
'; diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 4f3ed873d9..6fbec937d2 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -1,7 +1,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { "use strict"; - console.log("keyboardnavigation"); + console.debug("keyboardnavigation"); /** * Key name mapping. @@ -45,7 +45,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) try { hasFieldKey = "key" in new KeyboardEvent("keydown"); } catch (e) { - console.log("error checking 'key' field"); + console.error("error checking 'key' field"); } if (!hasFieldKey) { @@ -142,7 +142,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } if (capture) { - console.log("Disabling default event handling"); + console.debug("Disabling default event handling"); e.preventDefault(); } }); diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index dbe47b562f..5dcf3303a2 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -269,7 +269,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (options.image !== false) { var imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); - console.log(imgUrl); var imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; if (isLargeStyle && layoutManager.tv) { diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index e4375b742a..fc5e99dddb 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -57,7 +57,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -143,7 +143,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } @@ -176,7 +176,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -200,7 +200,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } } catch (e) { - console.log("Error parsing date: " + item.EndDate); + console.error("error parsing date: " + item.EndDate); } } @@ -248,7 +248,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } else if (item.ProductionYear) { miscInfo.push(item.ProductionYear); @@ -267,7 +267,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..876e42e5e4 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -582,7 +582,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStart(e, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; @@ -627,7 +627,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; if (player.isLocalPlayer) { @@ -653,7 +653,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index da04a2e13e..f9af97803b 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -57,7 +57,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - //console.log(method + '-' + JSON.stringify(info)); + //console.debug(method + '-' + JSON.stringify(info)); var apiClient = connectionManager.getApiClient(serverId); apiClient[method](info); } @@ -1024,7 +1024,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla currentTargetInfo = targetInfo; if (targetInfo) { - console.log('Active player: ' + JSON.stringify(targetInfo)); + console.debug('Active player: ' + JSON.stringify(targetInfo)); } if (player && player.isLocalPlayer) { @@ -2828,7 +2828,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (newItemInfo) { - console.log('playing next track'); + console.debug('playing next track'); var newItemPlayOptions = newItemInfo.item.playOptions || getDefaultPlayOptions(); @@ -3118,7 +3118,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // medianotsupported var errorType = error.type; - console.log('playbackmanager playback error type: ' + (errorType || '')); + console.debug('playbackmanager playback error type: ' + (errorType || '')); var streamInfo = error.streamInfo || getPlayerData(player).streamInfo; @@ -3401,7 +3401,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function getLiveStreamMediaInfo(player, streamInfo, mediaSource, liveStreamId, serverId) { - console.log('getLiveStreamMediaInfo'); + console.debug('getLiveStreamMediaInfo'); streamInfo.lastMediaInfoQuery = new Date().getTime(); @@ -3961,7 +3961,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; PlaybackManager.prototype.sendCommand = function (cmd, player) { - console.log('MediaController received command: ' + cmd.Name); + console.debug('MediaController received command: ' + cmd.Name); switch (cmd.Name) { case 'SetRepeatMode': this.setRepeatMode(cmd.Arguments.RepeatMode, player); diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 3253d8acdf..90f7b9f5fa 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -9,7 +9,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager function onOrientationChangeError(err) { orientationLocked = false; - console.log('error locking orientation: ' + err); + console.error('error locking orientation: ' + err); } events.on(playbackManager, 'playbackstart', function (e, player, state) { @@ -46,7 +46,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager try { unlockOrientation(); } catch (err) { - console.log('error unlocking orientation: ' + err); + console.error('error unlocking orientation: ' + err); } orientationLocked = false; } diff --git a/src/components/playback/remotecontrolautoplay.js b/src/components/playback/remotecontrolautoplay.js index d8316b87ef..0d7b7afce3 100644 --- a/src/components/playback/remotecontrolautoplay.js +++ b/src/components/playback/remotecontrolautoplay.js @@ -32,12 +32,12 @@ define(['events', 'playbackManager'], function (events, playbackManager) { } if (!oldPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because oldPlayer is not a local player'); + console.debug('Skipping remote control autoplay because oldPlayer is not a local player'); return; } if (newPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because newPlayer is a local player'); + console.debug('Skipping remote control autoplay because newPlayer is a local player'); return; } diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index ec65e63e65..f43a10ba05 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -27,7 +27,7 @@ define(['events'], function (events) { PluginManager.prototype.loadPlugin = function (url) { - console.log('Loading plugin: ' + url); + console.debug('Loading plugin: ' + url); var instance = this; return new Promise(function (resolve, reject) { diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 6511c0426c..8c8da94244 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -19,7 +19,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { focusElem.focus(opts); } catch (e) { - console.log("error checking preventScroll support"); + console.error("error checking preventScroll support"); } if (!supportsPreventScrollOption) { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..43a112fa58 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -127,7 +127,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL maxHeight: 300 }) : null; - console.log("updateNowPlayingInfo"); + console.debug("updateNowPlayingInfo"); setImageUrl(context, url); if (item) { backdrop.setBackdrops([item]); @@ -398,7 +398,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStart(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; onStateChanged.call(player, e, state); } @@ -426,7 +426,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStopped(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; if (!state.NextMediaType) { diff --git a/src/components/screensavermanager.js b/src/components/screensavermanager.js index 5b7613c98d..b9d7082850 100644 --- a/src/components/screensavermanager.js +++ b/src/components/screensavermanager.js @@ -53,7 +53,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio throw new Error("An existing screensaver is already active."); } - console.log("Showing screensaver " + screensaver.name); + console.debug("Showing screensaver " + screensaver.name); screensaver.show(); activeScreenSaver = screensaver; @@ -71,7 +71,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio function hide() { if (activeScreenSaver) { - console.log("Hiding screensaver"); + console.debug("Hiding screensaver"); activeScreenSaver.hide(); activeScreenSaver = null; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 57107ed185..559fbaf524 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -40,7 +40,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage elem.scrollTo(opts); } catch (e) { - console.log("error checking ScrollToOptions support"); + console.error("error checking ScrollToOptions support"); } /** diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..45a0c08982 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -392,7 +392,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var currentStart = self._pos.cur; var currentEnd = currentStart + frameSize; - //console.log('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); + //console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); var isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications/serverNotifications.js index 1941881b7a..1087e46675 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications/serverNotifications.js @@ -33,7 +33,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } function processGeneralCommand(cmd, apiClient) { - console.log('Received command: ' + cmd.Name); + console.debug('Received command: ' + cmd.Name); switch (cmd.Name) { case 'Select': inputManager.trigger('select'); @@ -133,7 +133,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus focusManager.sendText(cmd.Arguments.String); break; default: - console.log('processGeneralCommand does not recognize: ' + cmd.Name); + console.debug('processGeneralCommand does not recognize: ' + cmd.Name); break; } diff --git a/src/components/skinManager.js b/src/components/skinManager.js index b757aab3d6..b38ff25791 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -96,7 +96,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr appHost.setThemeColor(color); } } catch (err) { - console.log('Error setting theme color: ' + err); + console.error('error setting theme color: ' + err); } } @@ -170,7 +170,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr sound.play(); currentSound = sound; } catch (err) { - console.log('Error playing sound: ' + err); + console.error('error playing sound: ' + err); } }); } diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index b6c896f623..fab328bb21 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -78,7 +78,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f try { appHost.setUserScalable(scalable); } catch (err) { - console.log('error in appHost.setUserScalable: ' + err); + console.error('error in appHost.setUserScalable: ' + err); } } diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 80e7d807bd..ddcbbdf820 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -131,7 +131,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l var secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0); - console.log('up next seconds remaining: ' + secondsRemaining); + console.debug('up next seconds remaining: ' + secondsRemaining); var timeText = '' + globalize.translate('HeaderSecondsValue', secondsRemaining) + ''; diff --git a/src/controllers/dashboard/plugins/add.js b/src/controllers/dashboard/plugins/add.js index 7930d6927b..72a7134fac 100644 --- a/src/controllers/dashboard/plugins/add.js +++ b/src/controllers/dashboard/plugins/add.js @@ -122,7 +122,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e confirm(msg, globalize.translate("HeaderConfirmPluginInstallation")).then(function () { alertCallback(); }, function () { - console.log('plugin not installed'); + console.debug('plugin not installed'); }); }); } else { diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 31ded5c594..7d3251e589 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -201,7 +201,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function loadSuggestionsTab(view, params, tabContent) { var parentId = params.topParentId; var userId = ApiClient.getCurrentUserId(); - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadResume(tabContent, userId, parentId); loadLatest(tabContent, userId, parentId); loadSuggestions(tabContent, userId, parentId); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 556877aa1b..8b87dff265 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -155,7 +155,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function loadSuggestionsTab(page, tabContent, parentId) { - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadLatest(tabContent, parentId); loadRecentlyPlayed(tabContent, parentId); loadFrequentlyPlayed(tabContent, parentId); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..ae6dfa7f8c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -575,7 +575,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onPlaybackStart(e, state) { - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); var player = this; onStateChanged.call(player, e, state); resetUpNextDialog(); @@ -594,7 +594,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function onPlaybackStopped(e, state) { currentRuntimeTicks = null; resetUpNextDialog(); - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); if ("Video" !== state.NextMediaType) { view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -725,14 +725,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var endDate = datetime.parseISO8601Date(program.EndDate); if (new Date().getTime() >= endDate.getTime()) { - console.log("program info needs to be refreshed"); + console.debug("program info needs to be refreshed"); var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { type: "init" }, state); } } catch (e) { - console.log("Error parsing date: " + program.EndDate); + console.error("error parsing date: " + program.EndDate); } } } diff --git a/src/controllers/shows/tvupcoming.js b/src/controllers/shows/tvupcoming.js index f85278195f..249d932d39 100644 --- a/src/controllers/shows/tvupcoming.js +++ b/src/controllers/shows/tvupcoming.js @@ -58,7 +58,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", day: "numeric" }); } catch (err) { - console.log('error parsing timestamp for upcoming tv shows'); + console.error('error parsing timestamp for upcoming tv shows'); } } diff --git a/src/controllers/wizard/user.js b/src/controllers/wizard/user.js index d29be37c13..c2560ba06a 100644 --- a/src/controllers/wizard/user.js +++ b/src/controllers/wizard/user.js @@ -10,7 +10,7 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em } function onUpdateUserComplete(result) { - console.log(result); + console.debug(result); loading.hide(); nextWizardPage(); } diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index b6c98ebbd9..0b17c7c3cb 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -59,8 +59,22 @@ define(["events", "appStorage"], function(events, appStorage) { } function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId, devicePixelRatio) { - if (!serverAddress) throw new Error("Must supply a serverAddress"); - console.log("ApiClient serverAddress: " + serverAddress), console.log("ApiClient appName: " + appName), console.log("ApiClient appVersion: " + appVersion), console.log("ApiClient deviceName: " + deviceName), console.log("ApiClient deviceId: " + deviceId), this._serverInfo = {}, this._serverAddress = serverAddress, this._deviceId = deviceId, this._deviceName = deviceName, this._appName = appName, this._appVersion = appVersion, this._devicePixelRatio = devicePixelRatio + if (!serverAddress) { + throw new Error("Must supply a serverAddress"); + } + + console.debug("ApiClient serverAddress: " + serverAddress); + console.debug("ApiClient appName: " + appName); + console.debug("ApiClient appVersion: " + appVersion); + console.debug("ApiClient deviceName: " + deviceName); + console.debug("ApiClient deviceId: " + deviceId); + this._serverInfo = {}; + this._serverAddress = serverAddress; + this._deviceId = deviceId; + this._deviceName = deviceName; + this._appName = appName; + this._appVersion = appVersion; + this._devicePixelRatio = devicePixelRatio; } function setSavedEndpointInfo(instance, info) { @@ -68,13 +82,14 @@ define(["events", "appStorage"], function(events, appStorage) { } function getTryConnectPromise(instance, url, state, resolve, reject) { - console.log("getTryConnectPromise " + url), fetchWithTimeout(instance.getUrl("system/info/public", null, url), { + console.debug("getTryConnectPromise " + url); + fetchWithTimeout(instance.getUrl("system/info/public", null, url), { method: "GET", accept: "application/json" }, 15e3).then(function() { - state.resolved || (state.resolved = !0, console.log("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) + state.resolved || (state.resolved = !0, console.debug("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) }, function() { - state.resolved || (console.log("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) + state.resolved || (console.error("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) }) } @@ -91,7 +106,7 @@ define(["events", "appStorage"], function(events, appStorage) { }), addressesStrings.push(addresses[addresses.length - 1].url)), serverInfo.RemoteAddress && -1 === addressesStrings.indexOf(serverInfo.RemoteAddress) && (addresses.push({ url: serverInfo.RemoteAddress, timeout: 200 - }), addressesStrings.push(addresses[addresses.length - 1].url)), console.log("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { + }), addressesStrings.push(addresses[addresses.length - 1].url)), console.debug("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { var state = {}; state.numAddresses = addresses.length, state.rejects = 0, addresses.map(function(url) { setTimeout(function() { @@ -103,7 +118,7 @@ define(["events", "appStorage"], function(events, appStorage) { function tryReconnect(instance, retryCount) { return retryCount = retryCount || 0, retryCount >= 20 ? Promise.reject() : tryReconnectInternal(instance).catch(function(err) { - return console.log("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { + return console.error("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { setTimeout(function() { tryReconnect(instance, retryCount + 1).then(resolve, reject) }, 500) @@ -139,7 +154,7 @@ define(["events", "appStorage"], function(events, appStorage) { function onWebSocketOpen() { var instance = this; - console.log("web socket connection opened"), events.trigger(instance, "websocketopen") + console.debug("web socket connection opened"), events.trigger(instance, "websocketopen") } function onWebSocketError() { @@ -149,7 +164,11 @@ define(["events", "appStorage"], function(events, appStorage) { function setSocketOnClose(apiClient, socket) { socket.onclose = function() { - console.log("web socket closed"), apiClient._webSocket === socket && (console.log("nulling out web socket"), apiClient._webSocket = null), setTimeout(function() { + console.debug("web socket closed"); + apiClient._webSocket === socket; + console.debug("nulling out web socket"); + apiClient._webSocket = null; + setTimeout(function() { events.trigger(apiClient, "websocketclose") }, 0) } @@ -244,24 +263,24 @@ define(["events", "appStorage"], function(events, appStorage) { var lowered = url.toLowerCase(); return "/" !== name.charAt(0) && (url += "/"), url += name, params && (params = paramsToString(params)) && (url += "?" + params), url }, ApiClient.prototype.fetchWithFailover = function(request, enableReconnection) { - console.log("Requesting " + request.url), request.timeout = 3e4; + console.debug("Requesting " + request.url), request.timeout = 3e4; var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) }, function(error) { - if (error ? console.log("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.log("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.log("Reporting request failure"), onFetchFail(instance, request.url, {}), error; - console.log("Attempting reconnection"); + if (error ? console.error("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.error("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.error("Reporting request failure"), onFetchFail(instance, request.url, {}), error; + console.debug("Attempting reconnection"); var previousServerAddress = instance.serverAddress(); return tryReconnect(instance).then(function() { - return console.log("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) + return console.debug("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) }, function(innerError) { - throw console.log("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError + throw console.error("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError }) }) }, ApiClient.prototype.fetch = function(request, includeAuthorization) { if (!request) throw new Error("Request cannot be null"); if (request.headers = request.headers || {}, !1 !== includeAuthorization && this.setRequestHeaders(request.headers), !1 === this.enableAutomaticNetworking || "GET" !== request.type) { - console.log("Requesting url without automatic networking: " + request.url); + console.debug("Requesting url without automatic networking: " + request.url); var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) @@ -340,7 +359,7 @@ define(["events", "appStorage"], function(events, appStorage) { if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try { this.openWebSocket() } catch (err) { - console.log("Error opening web socket: " + err) + console.error("error opening web socket: " + err) } }; var messageIdsReceived = {}; @@ -348,14 +367,14 @@ define(["events", "appStorage"], function(events, appStorage) { var accessToken = this.accessToken(); if (!accessToken) throw new Error("Cannot open web socket without access token."); var url = this.getUrl("socket"); - url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.log("opening web socket with url: " + url); + url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.debug("opening web socket with url: " + url); var webSocket = new WebSocket(url); webSocket.onmessage = onWebSocketMessage.bind(this), webSocket.onopen = onWebSocketOpen.bind(this), webSocket.onerror = onWebSocketError.bind(this), setSocketOnClose(this, webSocket), this._webSocket = webSocket }, ApiClient.prototype.closeWebSocket = function() { var socket = this._webSocket; socket && socket.readyState === WebSocket.OPEN && socket.close() }, ApiClient.prototype.sendWebSocketMessage = function(name, data) { - console.log("Sending web socket message: " + name); + console.debug("Sending web socket message: " + name); var msg = { MessageType: name }; @@ -387,7 +406,7 @@ define(["events", "appStorage"], function(events, appStorage) { }, ApiClient.prototype.updateServerInfo = function(server, serverUrl) { if (null == server) throw new Error("server cannot be null"); if (this.serverInfo(server), !serverUrl) throw new Error("serverUrl cannot be null. serverInfo: " + JSON.stringify(server)); - console.log("Setting server address to " + serverUrl), this.serverAddress(serverUrl) + console.debug("Setting server address to " + serverUrl), this.serverAddress(serverUrl) }, ApiClient.prototype.isWebSocketSupported = function() { try { return null != WebSocket diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 6083bb4953..97229f8558 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -2,7 +2,7 @@ define([], function() { "use strict"; function onCachePutFail(e) { - console.log(e); + console.error(e); } function updateCache(instance) { @@ -45,7 +45,7 @@ define([], function() { self.caches.open("embydata").then(onCacheOpened.bind(this)); } } catch (err) { - console.log("Error opening cache: " + err); + console.error("error opening cache: " + err); } } diff --git a/src/libraries/apiclient/connectionmanager.js b/src/libraries/apiclient/connectionmanager.js index 7e7d578cba..a8e389bd03 100644 --- a/src/libraries/apiclient/connectionmanager.js +++ b/src/libraries/apiclient/connectionmanager.js @@ -95,18 +95,18 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function fetchWithTimeout(url, options, timeoutMs) { - console.log("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); + console.debug("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); return new Promise(function (resolve, reject) { var timeout = setTimeout(reject, timeoutMs); options = options || {}; options.credentials = "same-origin"; fetch(url, options).then(function (response) { clearTimeout(timeout); - console.log("fetchWithTimeout: succeeded connecting to url: " + url); + console.debug("fetchWithTimeout: succeeded connecting to url: " + url); resolve(response); }, function (error) { clearTimeout(timeout); - console.log("fetchWithTimeout: timed out connecting to url: " + url); + console.error("fetchWithTimeout: timed out connecting to url: " + url); reject(); }); }); @@ -118,9 +118,9 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } request.headers = request.headers || {}; - console.log("ConnectionManager requesting url: " + request.url); + console.debug("ConnectionManager requesting url: " + request.url); return getFetchPromise(request).then(function (response) { - console.log("ConnectionManager response status: " + response.status + ", url: " + request.url); + console.debug("ConnectionManager response status: " + response.status + ", url: " + request.url); if (response.status < 400) { if ("json" === request.dataType || "application/json" === request.headers.accept) { @@ -132,7 +132,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory return Promise.reject(response); }, function (err) { - console.log("ConnectionManager request failed to url: " + request.url); + console.error("ConnectionManager request failed to url: " + request.url); throw err; }); } @@ -227,7 +227,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory apiClient.enableAutomaticBitrateDetection = options.enableAutomaticBitrateDetection; if (false !== options.enableWebSocket) { - console.log("calling apiClient.ensureWebSocket"); + console.debug("calling apiClient.ensureWebSocket"); apiClient.ensureWebSocket(); } } @@ -333,7 +333,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function getTryConnectPromise(url, connectionMode, state, resolve, reject) { - console.log("getTryConnectPromise " + url); + console.debug("getTryConnectPromise " + url); ajax({ url: getEmbyServerUrl(url, "system/info/public"), timeout: defaultTimeout, @@ -342,7 +342,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }).then(function (result) { if (!state.resolved) { state.resolved = true; - console.log("Reconnect succeeded to " + url); + console.debug("Reconnect succeeded to " + url); resolve({ url: url, connectionMode: connectionMode, @@ -351,7 +351,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } }, function () { if (!state.resolved) { - console.log("Reconnect failed to " + url); + console.error("Reconnect failed to " + url); if (++state.rejects >= state.numAddresses) { reject(); @@ -391,7 +391,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory addressesStrings.push(addresses[addresses.length - 1].url); } - console.log("tryReconnect: " + addressesStrings.join("|")); + console.debug("tryReconnect: " + addressesStrings.join("|")); return new Promise(function (resolve, reject) { var state = {}; state.numAddresses = addresses.length; @@ -458,7 +458,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } } - console.log("Begin ConnectionManager constructor"); + console.debug("Begin ConnectionManager constructor"); var self = this; this._apiClients = []; self._minServerVersion = "3.2.33"; @@ -530,7 +530,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.clearData = function () { - console.log("connection manager clearing data"); + console.debug("connection manager clearing data"); var credentials = credentialProvider.credentials(); credentials.Servers = []; credentialProvider.credentials(credentials); @@ -550,7 +550,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory events.trigger(self, "apiclientcreated", [apiClient]); } - console.log("returning instance from getOrAddApiClient"); + console.debug("returning instance from getOrAddApiClient"); return apiClient; }; @@ -592,7 +592,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.logout = function () { - console.log("begin connectionManager loguot"); + console.debug("begin connectionManager loguot"); var promises = []; for (var i = 0, length = self._apiClients.length; i < length; i++) { @@ -628,7 +628,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.getAvailableServers = function () { - console.log("Begin getAvailableServers"); + console.debug("begin getAvailableServers"); var credentials = credentialProvider.credentials(); return Promise.all([findServers()]).then(function (responses) { var foundServers = responses[0]; @@ -644,7 +644,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServers = function (servers, options) { - console.log("Begin connectToServers, with " + servers.length + " servers"); + console.debug("begin connectToServers, with " + servers.length + " servers"); var firstServer = servers.length ? servers[0] : null; if (firstServer) { @@ -653,7 +653,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result.State = "ServerSelection"; } - console.log("resolving connectToServers with result.State: " + result.State); + console.debug("resolving connectToServers with result.State: " + result.State); return result; }); } @@ -665,7 +665,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServer = function (server, options) { - console.log("begin connectToServer"); + console.debug("begin connectToServer"); return new Promise(function (resolve, reject) { options = options || {}; tryReconnect(server).then(function (result) { @@ -674,14 +674,14 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result = result.data; if (1 === compareVersions(self.minServerVersion(), result.Version)) { - console.log("minServerVersion requirement not met. Server version: " + result.Version); + console.debug("minServerVersion requirement not met. Server version: " + result.Version); resolve({ State: "ServerUpdateNeeded", Servers: [server] }); } else { if (server.Id && result.Id !== server.Id) { - console.log("http request succeeded, but found a different server Id than what was expected"); + console.debug("http request succeeded, but found a different server Id than what was expected"); resolveFailure(self, resolve); } else { onSuccessfulConnection(server, result, connectionMode, serverUrl, options, resolve); @@ -695,7 +695,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory self.connectToAddress = function (address, options) { function onFail() { - console.log("connectToAddress " + address + " failed"); + console.error("connectToAddress " + address + " failed"); return Promise.resolve({ State: "Unavailable", }); @@ -741,7 +741,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; ConnectionManager.prototype.connect = function (options) { - console.log("Begin connect"); + console.debug("begin connect"); var instance = this; return instance.getAvailableServers().then(function (servers) { return instance.connectToServers(servers, options); diff --git a/src/libraries/apiclient/credentialprovider.js b/src/libraries/apiclient/credentialprovider.js index 471f2b5ef1..cd27a1fe69 100644 --- a/src/libraries/apiclient/credentialprovider.js +++ b/src/libraries/apiclient/credentialprovider.js @@ -4,7 +4,7 @@ define(["events", "appStorage"], function(events, appStorage) { function ensure(instance, data) { if (!instance._credentials) { var json = appStorage.getItem(instance.key) || "{}"; - console.log("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] + console.debug("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] } } diff --git a/src/libraries/apiclient/localassetmanager.js b/src/libraries/apiclient/localassetmanager.js index fbe74aae51..190fe4cd7d 100644 --- a/src/libraries/apiclient/localassetmanager.js +++ b/src/libraries/apiclient/localassetmanager.js @@ -2,7 +2,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman "use strict"; function getLocalItem(serverId, itemId) { - return console.log("[lcoalassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) + return console.debug("[localassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) } function recordUserAction(action) { @@ -25,7 +25,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman } function getServerItems(serverId) { - return console.log("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) + return console.debug("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) } function getItemsFromIds(serverId, ids) { diff --git a/src/libraries/apiclient/sync/localsync.js b/src/libraries/apiclient/sync/localsync.js index cea244de08..150fa1f5b2 100644 --- a/src/libraries/apiclient/sync/localsync.js +++ b/src/libraries/apiclient/sync/localsync.js @@ -3,7 +3,7 @@ define(["connectionManager"], function(connectionManager) { var isSyncing; return { sync: function(options) { - return console.log("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { + return console.debug("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { require(["multiserversync", "appSettings"], function(MultiServerSync, appSettings) { options = options || {}, options.cameraUploadServers = appSettings.cameraUploadServers(), (new MultiServerSync).sync(connectionManager, options).then(function() { isSyncing = null, resolve() diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 24220561ad..9ca101b540 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -2,9 +2,9 @@ define(["localassetmanager"], function(localassetmanager) { "use strict"; function processDownloadStatus(apiClient, serverInfo, options) { - return console.log("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { + return console.debug("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { return localassetmanager.getServerItems(serverInfo.Id).then(function(items) { - console.log("[mediasync] Begin processDownloadStatus getServerItems completed"); + console.debug("[mediasync] Begin processDownloadStatus getServerItems completed"); var p = Promise.resolve(), cnt = 0; return items.filter(function(item) { @@ -14,7 +14,7 @@ define(["localassetmanager"], function(localassetmanager) { return reportTransfer(apiClient, item) }), cnt++ }), p.then(function() { - return console.log("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() + return console.debug("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() }) }) }) @@ -23,39 +23,39 @@ define(["localassetmanager"], function(localassetmanager) { function reportTransfer(apiClient, item) { return localassetmanager.getItemFileSize(item.LocalPath).then(function(size) { return size > 0 ? apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function() { - return item.SyncStatus = "synced", console.log("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) + return item.SyncStatus = "synced", console.debug("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) }, function(error) { return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) }) : localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result) { - return result ? Promise.resolve() : (console.log("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return result ? Promise.resolve() : (console.debug("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.debug("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() })) }) }, function(error) { return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.error("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() }) }) } function reportOfflineActions(apiClient, serverInfo) { - return console.log("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { + return console.debug("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { return actions.length ? apiClient.reportOfflineActions(actions).then(function() { return localassetmanager.deleteUserActions(actions).then(function() { - return console.log("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() + return console.debug("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() }) }, function(err) { return console.error("[mediasync] error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) - }) : (console.log("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) + }) : (console.debug("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) }) } function syncData(apiClient, serverInfo) { - return console.log("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return console.debug("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -67,7 +67,7 @@ define(["localassetmanager"], function(localassetmanager) { }; return apiClient.syncData(request).then(function(result) { return afterSyncData(apiClient, serverInfo, result).then(function() { - return console.log("[mediasync] Exit syncData"), Promise.resolve() + return console.debug("[mediasync] Exit syncData"), Promise.resolve() }, function(err) { return console.error("[mediasync] Error in syncData: " + err.toString()), Promise.resolve() }) @@ -76,7 +76,7 @@ define(["localassetmanager"], function(localassetmanager) { } function afterSyncData(apiClient, serverInfo, syncDataResult) { - console.log("[mediasync] Begin afterSyncData"); + console.debug("[mediasync] Begin afterSyncData"); var p = Promise.resolve(); return syncDataResult.ItemIdsToRemove && syncDataResult.ItemIdsToRemove.length > 0 && syncDataResult.ItemIdsToRemove.forEach(function(itemId) { p = p.then(function() { @@ -85,16 +85,16 @@ define(["localassetmanager"], function(localassetmanager) { }), p = p.then(function() { return removeObsoleteContainerItems(serverInfo.Id) }), p.then(function() { - return console.log("[mediasync] Exit afterSyncData"), Promise.resolve() + return console.debug("[mediasync] Exit afterSyncData"), Promise.resolve() }) } function removeObsoleteContainerItems(serverId) { - return console.log("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) + return console.debug("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) } function removeLocalItem(itemId, serverId) { - return console.log("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { + return console.debug("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { return item ? localassetmanager.removeLocalItem(item) : Promise.resolve() }, function(err2) { return console.error("[mediasync] removeLocalItem: Failed: ", err2), Promise.resolve() @@ -102,8 +102,8 @@ define(["localassetmanager"], function(localassetmanager) { } function getNewMedia(apiClient, downloadCount) { - return console.log("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { - console.log("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); + return console.debug("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { + console.debug("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); var p = Promise.resolve(), currentCount = downloadCount; return jobItems.forEach(function(jobItem) { @@ -111,7 +111,7 @@ define(["localassetmanager"], function(localassetmanager) { return getNewItem(jobItem, apiClient) })) }), p.then(function() { - return console.log("[mediasync] Exit getNewMedia"), Promise.resolve() + return console.debug("[mediasync] Exit getNewMedia"), Promise.resolve() }) }, function(err) { return console.error("[mediasync] getReadySyncItems: Failed: ", err), Promise.resolve() @@ -119,7 +119,7 @@ define(["localassetmanager"], function(localassetmanager) { } function afterMediaDownloaded(apiClient, jobItem, localItem) { - return console.log("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { + return console.debug("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { var libraryItem = jobItem.Item; return downloadParentItems(apiClient, jobItem, libraryItem).then(function() { return getSubtitles(apiClient, jobItem, localItem) @@ -128,21 +128,21 @@ define(["localassetmanager"], function(localassetmanager) { } function createLocalItem(libraryItem, jobItem) { - console.log("[localassetmanager] Begin createLocalItem"); + console.debug("[localassetmanager] Begin createLocalItem"); var item = { Item: libraryItem, ItemId: libraryItem.Id, ServerId: libraryItem.ServerId, Id: libraryItem.Id }; - return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.log("[localassetmanager] End createLocalItem"), item + return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.debug("[localassetmanager] End createLocalItem"), item } function getNewItem(jobItem, apiClient) { - console.log("[mediasync] Begin getNewItem"); + console.debug("[mediasync] Begin getNewItem"); var libraryItem = jobItem.Item; return localassetmanager.getLocalItem(libraryItem.ServerId, libraryItem.Id).then(function(existingItem) { - if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.log("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); + if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.debug("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); libraryItem.CanDelete = !1, libraryItem.CanDownload = !1, libraryItem.SupportsSync = !1, libraryItem.People = [], libraryItem.Chapters = [], libraryItem.Studios = [], libraryItem.SpecialFeatureCount = null, libraryItem.LocalTrailerCount = null, libraryItem.RemoteTrailers = []; var localItem = createLocalItem(libraryItem, jobItem); return localItem.SyncStatus = "queued", downloadMedia(apiClient, jobItem, localItem) @@ -183,12 +183,12 @@ define(["localassetmanager"], function(localassetmanager) { } function downloadMedia(apiClient, jobItem, localItem) { - console.log("[mediasync] downloadMedia: start."); + console.debug("[mediasync] downloadMedia: start."); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", { api_key: apiClient.accessToken() }); return ensureLocalPathParts(localItem, jobItem), localassetmanager.downloadFile(url, localItem).then(function(result) { - console.log("[mediasync] downloadMedia-downloadFile returned path: " + result.path); + console.debug("[mediasync] downloadMedia-downloadFile returned path: " + result.path); var localPath = result.path, libraryItem = localItem.Item; if (localPath && libraryItem.MediaSources) @@ -200,18 +200,18 @@ define(["localassetmanager"], function(localassetmanager) { return afterMediaDownloaded(apiClient, jobItem, localItem).then(function() { return result.isComplete ? (localItem.SyncStatus = "synced", reportTransfer(apiClient, localItem)) : Promise.resolve() }, function(err) { - return console.log("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) }) } function getImages(apiClient, jobItem, localItem) { - console.log("[mediasync] Begin getImages"); + console.debug("[mediasync] Begin getImages"); var p = Promise.resolve(), libraryItem = localItem.Item, serverId = libraryItem.ServerId, @@ -249,15 +249,15 @@ define(["localassetmanager"], function(localassetmanager) { })), libraryItem.ParentPrimaryImageItemId && libraryItem.ParentPrimaryImageTag && (p = p.then(function() { return downloadImage(localItem, apiClient, serverId, libraryItem.ParentPrimaryImageItemId, libraryItem.ParentPrimaryImageTag, "Primary") })), p.then(function() { - return console.log("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) + return console.debug("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) }, function(err) { - return console.log("[mediasync] Error getImages: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error getImages: " + err.toString()), Promise.resolve() }) } function downloadImage(localItem, apiClient, serverId, itemId, imageTag, imageType, index) { return index = index || 0, localassetmanager.hasImage(serverId, itemId, imageType, index).then(function(hasImage) { - if (hasImage) return console.log("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); + if (hasImage) return console.debug("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); var maxWidth = 400; "backdrop" === imageType && (maxWidth = null); var imageUrl = apiClient.getScaledImageUrl(itemId, { @@ -266,18 +266,18 @@ define(["localassetmanager"], function(localassetmanager) { maxWidth: maxWidth, api_key: apiClient.accessToken() }); - return console.log("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { + return console.debug("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { return Promise.resolve(result) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() }) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() }) } function getSubtitles(apiClient, jobItem, localItem) { - if (console.log("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.log("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); + if (console.debug("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.debug("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); var files = jobItem.AdditionalFiles.filter(function(f) { return "Subtitles" === f.Type }), @@ -288,16 +288,16 @@ define(["localassetmanager"], function(localassetmanager) { return getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) }) }), p.then(function() { - return console.log("[mediasync] Exit getSubtitles"), Promise.resolve() + return console.debug("[mediasync] Exit getSubtitles"), Promise.resolve() }) } function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) { - console.log("[mediasync] Begin getItemSubtitle"); + console.debug("[mediasync] Begin getItemSubtitle"); var subtitleStream = mediaSource.MediaStreams.filter(function(m) { return "Subtitle" === m.Type && m.Index === file.Index })[0]; - if (!subtitleStream) return console.log("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); + if (!subtitleStream) return console.debug("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/AdditionalFiles", { Name: file.Name, api_key: apiClient.accessToken() @@ -311,7 +311,7 @@ define(["localassetmanager"], function(localassetmanager) { } function checkLocalFileExistence(apiClient, serverInfo, options) { - return options.checkFileExistence ? (console.log("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return options.checkFileExistence ? (console.debug("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -332,13 +332,13 @@ define(["localassetmanager"], function(localassetmanager) { return function() { var self = this; "string" == typeof webWorkerBaseUrl && -1 !== webWorkerBaseUrl.indexOf("ms-appx://") ? self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { return !0 === options.syncCheckProgressOnly && downloadCount > 2 ? Promise.resolve() : reportOfflineActions(apiClient, serverInfo).then(function() { return getNewMedia(apiClient, downloadCount).then(function() { return syncData(apiClient, serverInfo).then(function() { - return console.log("[mediasync]************************************* Exit sync"), Promise.resolve() + return console.debug("[mediasync]************************************* Exit sync"), Promise.resolve() }) }) }) @@ -348,7 +348,7 @@ define(["localassetmanager"], function(localassetmanager) { console.error(err.toString()) }) } : self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return syncData(apiClient, serverInfo).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { diff --git a/src/libraries/apiclient/sync/multiserversync.js b/src/libraries/apiclient/sync/multiserversync.js index 0654b5615d..c0f05fb734 100644 --- a/src/libraries/apiclient/sync/multiserversync.js +++ b/src/libraries/apiclient/sync/multiserversync.js @@ -3,18 +3,18 @@ define(["serversync"], function(ServerSync) { function syncNext(connectionManager, servers, index, options, resolve, reject) { var length = servers.length; - if (index >= length) return console.log("MultiServerSync.sync complete"), void resolve(); + if (index >= length) return console.debug("MultiServerSync.sync complete"), void resolve(); var server = servers[index]; - console.log("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { - console.log("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.debug("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { + console.debug("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }, function(err) { - console.log("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.error("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }) } function MultiServerSync() {} return MultiServerSync.prototype.sync = function(connectionManager, options) { - return console.log("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { + return console.debug("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { var servers = connectionManager.getSavedServers(); syncNext(connectionManager, servers, 0, options, resolve, reject) }) diff --git a/src/libraries/apiclient/sync/serversync.js b/src/libraries/apiclient/sync/serversync.js index 34a1b11e8e..4d773c06a6 100644 --- a/src/libraries/apiclient/sync/serversync.js +++ b/src/libraries/apiclient/sync/serversync.js @@ -2,11 +2,11 @@ define([], function() { "use strict"; function performSync(connectionManager, server, options) { - console.log("ServerSync.performSync to server: " + server.Id), options = options || {}; + console.debug("ServerSync.performSync to server: " + server.Id), options = options || {}; var cameraUploadServers = options.cameraUploadServers || []; - console.log("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); + console.debug("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); var uploadPhotos = -1 !== cameraUploadServers.indexOf(server.Id); - return console.log("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { + return console.debug("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { return syncMedia(connectionManager, server, options) }) } @@ -26,7 +26,7 @@ define([], function() { function ServerSync() {} return ServerSync.prototype.sync = function(connectionManager, server, options) { - if (!server.AccessToken && !server.ExchangeToken) return console.log("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); + if (!server.AccessToken && !server.ExchangeToken) return console.debug("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); var connectionOptions = { updateDateLastAccessed: !1, enableWebSocket: !1, @@ -34,9 +34,9 @@ define([], function() { enableAutomaticBitrateDetection: !1 }; return connectionManager.connectToServer(server, connectionOptions).then(function(result) { - return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.log("Unable to connect to server id: " + server.Id), Promise.reject()) + return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.error("Unable to connect to server id: " + server.Id), Promise.reject()) }, function(err) { - throw console.log("Unable to connect to server id: " + server.Id), err + throw console.error("Unable to connect to server id: " + server.Id), err }) }, ServerSync }); \ No newline at end of file diff --git a/src/scripts/autobackdrops.js b/src/scripts/autobackdrops.js index 73042f83ce..09f89fad6f 100644 --- a/src/scripts/autobackdrops.js +++ b/src/scripts/autobackdrops.js @@ -10,7 +10,7 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett var data = cache[key]; if (data) { - console.log("Found backdrop id list in cache. Key: " + key); + console.debug("Found backdrop id list in cache. Key: " + key); data = JSON.parse(data); return Promise.resolve(data); } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 9d91a691d0..1e5b96f967 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -302,9 +302,9 @@ define(['browser'], function (browser) { try { var isTizenUhd = webapis.productinfo.isUdPanelSupported(); isTizenFhd = !isTizenUhd; - console.log("isTizenFhd = " + isTizenFhd); + console.debug("isTizenFhd = " + isTizenFhd); } catch (error) { - console.log("isUdPanelSupported() error code = " + error.code); + console.error("isUdPanelSupported() error code = " + error.code); } } diff --git a/src/scripts/globalize.js b/src/scripts/globalize.js index aa3a2ef0f9..69bb3aee21 100644 --- a/src/scripts/globalize.js +++ b/src/scripts/globalize.js @@ -38,7 +38,7 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana try { culture = userSettings.language(); } catch (err) { - console.log('no language set in user settings'); + console.error('no language set in user settings'); } culture = culture || getDefaultLanguage(); @@ -48,7 +48,7 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana try { dateTimeCulture = userSettings.dateTimeLocale(); } catch (err) { - console.log('no date format set in user settings'); + console.error('no date format set in user settings'); } if (dateTimeCulture) { diff --git a/src/scripts/livetvcomponents.js b/src/scripts/livetvcomponents.js index 4215de4cbe..61ffc66fb4 100644 --- a/src/scripts/livetvcomponents.js +++ b/src/scripts/livetvcomponents.js @@ -34,7 +34,7 @@ define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layout day: "numeric" }); } catch (err) { - console.log("Error parsing premiereDate:" + item.StartDate + "; error: " + err); + console.error("error parsing premiereDate:" + item.StartDate + "; error: " + err); } } diff --git a/src/scripts/routes.js b/src/scripts/routes.js index b726aaf872..9c3db58a7f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -16,12 +16,12 @@ define([ function defineRoute(newRoute) { var path = newRoute.path; - console.log("defining route: " + path); + console.debug("defining route: " + path); newRoute.dictionary = "core"; Emby.Page.addRoute(path, newRoute); } - console.log("defining core routes"); + console.debug("defining core routes"); defineRoute({ path: "/addplugin.html", diff --git a/src/scripts/site.js b/src/scripts/site.js index 0cf65158d5..c0f3904316 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -286,10 +286,10 @@ var AppInfo = {}; bindConnectionManagerEvents(connectionManager, events, userSettings); if (!AppInfo.isNativeApp) { - console.log("loading ApiClient singleton"); + console.debug("loading ApiClient singleton"); return require(["apiclient"], function (apiClientFactory) { - console.log("creating ApiClient singleton"); + console.debug("creating ApiClient singleton"); var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), window.devicePixelRatio); @@ -301,7 +301,7 @@ var AppInfo = {}; window.ApiClient = apiClient; localApiClient = apiClient; - console.log("loaded ApiClient singleton"); + console.debug("loaded ApiClient singleton"); }); } @@ -335,7 +335,7 @@ var AppInfo = {}; try { playbackManager.onAppClose(); } catch (err) { - console.log("error in onAppClose: " + err); + console.error("error in onAppClose: " + err); } }); return playbackManager; @@ -393,7 +393,7 @@ var AppInfo = {}; } function onRequireJsError(requireType, requireModules) { - console.log("RequireJS error: " + (requireType || "unknown") + ". Failed modules: " + (requireModules || []).join(",")); + console.error("RequireJS error: " + (requireType || "unknown") + ". Failed modules: " + (requireModules || []).join(",")); } function defineResizeObserver() { @@ -481,7 +481,7 @@ var AppInfo = {}; Promise.all(promises).then(function () { createConnectionManager().then(function () { - console.log("initAfterDependencies promises resolved"); + console.debug("initAfterDependencies promises resolved"); require(["globalize", "browser"], function (globalize, browser) { window.Globalize = globalize; @@ -525,10 +525,10 @@ var AppInfo = {}; document.title = Globalize.translateDocument(document.title, "core"); if (browser.tv && !browser.android) { - console.log("Using system fonts with explicit sizes"); + console.debug("using system fonts with explicit sizes"); require(["systemFontsSizedCss"]); } else { - console.log("Using default fonts"); + console.debug("using default fonts"); require(["systemFontsCss"]); } @@ -540,7 +540,7 @@ var AppInfo = {}; } function loadPlugins(appHost, browser, shell) { - console.log("Loading installed plugins"); + console.debug("loading installed plugins"); var list = [ "components/playback/playaccessvalidation", "components/playback/experimentalwarnings", @@ -582,13 +582,13 @@ var AppInfo = {}; } function onAppReady(browser) { - console.log("Begin onAppReady"); + console.debug("begin onAppReady"); // ensure that appHost is loaded in this point require(['apphost', 'appRouter'], function (appHost, appRouter) { window.Emby = {}; - console.log("onAppReady - loading dependencies"); + console.debug("onAppReady - loading dependencies"); if (browser.iOS) { require(['css!assets/css/ios.css']); } @@ -659,7 +659,7 @@ var AppInfo = {}; try { navigator.serviceWorker.register("serviceworker.js"); } catch (err) { - console.log("Error registering serviceWorker: " + err); + console.error("error registering serviceWorker: " + err); } } } From df81f33360f4a72bab1f47d339305f133bae9f6f Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:13:10 +0000 Subject: [PATCH 056/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 5045d4d0b8..67b7be2d27 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -88,7 +88,7 @@ "AddGuideProviderHelp": "Lisää lähde ohjelmaoppaalle.", "AddItemToCollectionHelp": "Lisää nimikkeitä etsimällä niitä ja käyttämällä hiiren oikeaa nappia tai valikkoa lisätäksesi ne kokoelmaan.", "Aired": "Esityspäivä", - "AllowHWTranscodingHelp": "Jos sallittu, salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen Jellyfin palvelimella.", + "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", "AllowOnTheFlySubtitleExtractionHelp": "Sulautetut tekstitykset voi erottaa videoista ja toimittaa Jellyfin ohjelmalle tekstinä, jotta videoita ei tarvitse uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa videotoiston pysähtymisen purun ajaksi. Poista tämä liittääksesi tekstiyksen videokuvaankon asiakaslaite ei tue tekstiyksiä.", @@ -121,7 +121,7 @@ "BirthLocation": "Syntymäpaikka", "BirthPlaceValue": "Syntymäpaikka: {0}", "Blacklist": "Kieltolista", - "BookLibraryHelp": "Ääni- ja tekstimuotoiset kirjat on tuettuja. Katso {0}Jellyfin Kirjojen nimeämisopas{1}.", + "BookLibraryHelp": "Ääni- ja tekstimuotoiset kirjat on tuettuja. Katso {0}kirjojen nimeämisopas{1}.", "Books": "Kirjat", "Box": "Laatikko", "BoxRear": "Laatikko (takaa)", From 479fe2c889ef4e97c85c8abb4b1b8508f2cdbc85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:14:36 +0000 Subject: [PATCH 057/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 67b7be2d27..d30437fef0 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -91,7 +91,7 @@ "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", - "AllowOnTheFlySubtitleExtractionHelp": "Sulautetut tekstitykset voi erottaa videoista ja toimittaa Jellyfin ohjelmalle tekstinä, jotta videoita ei tarvitse uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa videotoiston pysähtymisen purun ajaksi. Poista tämä liittääksesi tekstiyksen videokuvaankon asiakaslaite ei tue tekstiyksiä.", + "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille ilmitekstinä, jotta videota ei tarvitsisi uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa toiston pysähtymisen purun ajaksi. Poista tämä käytöstä polttaaksesi tekstiykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä.", "AllowRemoteAccess": "Salli etäyhteydet tähän Jellyfin palvelimeen.", "AllowRemoteAccessHelp": "Jos merkki puuttuu, kaikki ulkopuoliset yhteydet estetään.", "AllowSeasonalThemes": "Salli automaattiset vuodenaikateemat", @@ -285,5 +285,6 @@ "ValueSpecialEpisodeName": "Erikois - {0}", "Sync": "Synkronoi", "Songs": "Kappaleet", - "Shows": "Ohjelmat" + "Shows": "Ohjelmat", + "CopyStreamURLSuccess": "URL kopioitu onnistuneesti." } From bef1747c3f55a8dbfc8c306ceb369071e5e34395 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:18:22 +0000 Subject: [PATCH 058/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index d30437fef0..8f9e44c398 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -286,5 +286,5 @@ "Sync": "Synkronoi", "Songs": "Kappaleet", "Shows": "Ohjelmat", - "CopyStreamURLSuccess": "URL kopioitu onnistuneesti." + "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti." } From a491c6b83292621e6880b8730a062db26df07e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:19:41 +0000 Subject: [PATCH 059/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 8f9e44c398..e722926c16 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -236,7 +236,7 @@ "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", - "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen toistoa.", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", @@ -286,5 +286,7 @@ "Sync": "Synkronoi", "Songs": "Kappaleet", "Shows": "Ohjelmat", - "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti." + "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", + "DeathDateValue": "Kuoli: {0}", + "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili." } From fb5adbce2d9db73c376b2adb06c6f706f39577c5 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:22:12 +0000 Subject: [PATCH 060/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index e722926c16..c018cccfee 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -236,7 +236,7 @@ "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", - "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (mkv, avi, wmv, jne.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", From bf2caf59579a67a1922a6a3b0bcd3ae0fc991ebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:22:40 +0000 Subject: [PATCH 061/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index c018cccfee..5a0aa741d6 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -249,7 +249,7 @@ "DisplayInMyMedia": "Näytä kotinäytöllä", "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", - "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös Jellyfin-palvelimen asennusvaiheessa.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asennusvaiheessa.", "DisplayModeHelp": "Valitse näyttölaitteen tyyppi jolla pyörität Jellyfiniä.", "DoNotRecord": "Älä tallenna", "Down": "Alas", From ac9807d93a9ac3f09ddeec47c238c4fd0f2cce60 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:22:49 +0000 Subject: [PATCH 062/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 5a0aa741d6..548f96ecdf 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -249,7 +249,7 @@ "DisplayInMyMedia": "Näytä kotinäytöllä", "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", - "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asennusvaiheessa.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asetuksissa.", "DisplayModeHelp": "Valitse näyttölaitteen tyyppi jolla pyörität Jellyfiniä.", "DoNotRecord": "Älä tallenna", "Down": "Alas", From 7a9fbb3edf5a6e1998badc0ba0d564ddc65f2a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:24:33 +0000 Subject: [PATCH 063/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 548f96ecdf..88e623d905 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -288,5 +288,6 @@ "Shows": "Ohjelmat", "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {0}", - "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili." + "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili.", + "EnableBackdrops": "Taustat" } From 54fdd34f774e2600e84e5b8ce488335a1db819b0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 17:42:00 +0300 Subject: [PATCH 064/449] Fix padding for plain itemscontainer --- src/controllers/movies/moviegenres.js | 2 +- src/controllers/movies/moviesrecommended.js | 2 ++ src/controllers/shows/tvgenres.js | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 0067f64228..f48dc08b8f 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -152,7 +152,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 31ded5c594..8b71844434 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -178,6 +178,8 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (layoutManager.tv) { elem.classList.add("smoothScrollX"); + elem.classList.add("padded-top-focusscale"); + elem.classList.add("padded-bottom-focusscale"); } elem.classList.add("scrollX"); diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 23397fd73e..950f2e45d1 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -147,7 +147,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader if (enableScrollX()) { var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; } else { From 07268df35a9ad683352b15a6b0b675257ebec295 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 22:06:37 +0300 Subject: [PATCH 065/449] Simplify expression --- src/components/scrollManager.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 57107ed185..ba000ed954 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -158,11 +158,20 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function getScrollableParent(element, vertical) { if (element) { + var nameScroll = "scrollWidth"; + var nameClient = "clientWidth"; + var nameClass = "scrollX"; + + if (vertical) { + nameScroll = "scrollHeight"; + nameClient = "clientHeight"; + nameClass = "scrollY"; + } + var parent = element.parentElement; while (parent) { - if ((!vertical && parent.scrollWidth > parent.clientWidth && parent.classList.contains("scrollX")) || - (vertical && parent.scrollHeight > parent.clientHeight && parent.classList.contains("scrollY"))) { + if (parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } From 6ad85b3c45020a78ac105b2db72d81d8d969d48e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 22:08:08 +0300 Subject: [PATCH 066/449] Disable scrollManager on emby-scroller --- src/components/scrollManager.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index ba000ed954..4ba696d744 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -171,7 +171,9 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var parent = element.parentElement; while (parent) { - if (parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { + // Skip 'emby-scroller' because it scrolls by itself + if (!parent.classList.contains("emby-scroller") && + parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } From c354e16b521c746d3a576ef1a211463f18bd52dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:24:45 +0000 Subject: [PATCH 067/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 88e623d905..66ce8e837f 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -289,5 +289,21 @@ "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {0}", "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili.", - "EnableBackdrops": "Taustat" + "EnableBackdrops": "Taustat", + "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfin Palvelimella pääsy sijaintiin.", + "Episodes": "Jaksot", + "EndsAtValue": "Päättyy {0}", + "Ended": "Päättynyt", + "EnableThemeSongsHelp": "Soita tunnuslaulut taustalla, selatessasi kirjastoa.", + "EnableThemeSongs": "Tunnuslaulut", + "EnableStreamLoopingHelp": "Laita tämä päälle, jos suoratoistot sisältävät vain muutaman sekuntin verran dataa jota tarvitsee pyytää jatkuvasti. Tämän päälle laittaminen ilman toiminnon tarvetta voi aiheuttaa ongelmia.", + "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden media-tiedostojen ohessa.", + "EnablePhotos": "Näytä valokuvat", + "EnableNextVideoInfoOverlay": "Näytä seuraavan videon tiedot toiston aikana", + "EnableHardwareEncoding": "Salli rauta-tason muunnoksen kiihdytys", + "EnableExternalVideoPlayers": "Ulkoiset videosoittimet", + "EnableDisplayMirroring": "Näytön peilaus", + "EnableColorCodedBackgrounds": "Väri-koodatut taustat", + "EnableCinemaMode": "Teatteri-tila", + "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa." } From 485549fedf548c1d4eec3149f69b1ac807fb4b57 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sun, 16 Feb 2020 09:02:25 +0000 Subject: [PATCH 068/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 64f455b7a8..541323e90a 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -4,7 +4,7 @@ "AddToPlaylist": "Hozzáadás lejátszási listához", "AddedOnValue": "Hozzáadva: {0}", "AdditionalNotificationServices": "Keresd meg a Bővítmények katalógust további értesítési szolgáltatások telepítéséhez.", - "Alerts": "Riasztások", + "Alerts": "Értesítések", "All": "Összes", "AllEpisodes": "Összes epizód", "AllLanguages": "Összes nyelv", @@ -275,7 +275,7 @@ "LabelLogs": "Naplók:", "LabelMessageText": "Üzenet szövege:", "LabelMessageTitle": "Üzenet címe:", - "LabelMetadata": "Metaadat:", + "LabelMetadata": "Metaadatok:", "LabelMetadataDownloadLanguage": "Előnyben részesített letöltendő nyelv:", "LabelMetadataPath": "Metaadat útvonal:", "LabelMetadataReaders": "Metaadat olvasók:", @@ -591,7 +591,7 @@ "AllowMediaConversionHelp": "Add meg vagy tiltsd le a média konvertálás funkcióhoz való hozzáférést.", "AllowRemoteAccess": "Engedélyezze a távoli kapcsolatokat a Jellyfin szerverhez.", "AllowRemoteAccessHelp": "Ha nincs bekapcsolva, minden távoli kapcsolat blokkolva lesz.", - "AlwaysPlaySubtitles": "A feliratokat mindig jelenítse meg", + "AlwaysPlaySubtitles": "Mindig legyen felirat", "AnyLanguage": "Bármelyik nyelv", "Anytime": "Bármikor", "AroundTime": "{0} körül", @@ -706,7 +706,7 @@ "HeaderAccessSchedule": "Hozzáférési Ütemezés", "HeaderAccessScheduleHelp": "Hozz létre hozzáférési ütemezést, hogy korlátozd a hozzáférést bizonyos időben.", "HeaderActiveRecordings": "Aktív Felvételek", - "HeaderActivity": "Tevékenység", + "HeaderActivity": "Tevékenységek", "HeaderAdditionalParts": "További részek", "HeaderAdmin": "Adminisztrátor", "HeaderAlbumArtists": "Album előadók", @@ -1439,5 +1439,6 @@ "LabelDisplaySpecialsWithinSeasons": "Speciális epizódok megjelenítése abban az évadban, amiben adásban voltak", "LabelCorruptedFrames": "Sérült képkockák:", "HeaderKeepSeries": "Sorozat megtartása", - "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra." + "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra.", + "LabelTranscodes": "Átkódolások:" } From 04c5f4bfdd9a7e7590f336ba35363a0b84279f31 Mon Sep 17 00:00:00 2001 From: tokiedokie Date: Sun, 16 Feb 2020 02:20:43 +0000 Subject: [PATCH 069/449] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 88cfc5b689..6fcdf086db 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1118,5 +1118,10 @@ "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:", "HeaderNavigation": "ナビゲーション", "CopyStreamURLError": "URLのコピー中にエラーが発生しました。", - "ButtonSplit": "分ける" + "ButtonSplit": "分ける", + "LabelEnableDlnaServer": "DLNAサーバーの有効化", + "LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化", + "LabelDroppedFrames": "ドロップフレーム:", + "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", + "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。" } From cb48def4aebbb9841edfb46d72e09ff018672754 Mon Sep 17 00:00:00 2001 From: Jared Allard Date: Sun, 16 Feb 2020 05:26:52 +0000 Subject: [PATCH 070/449] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 6fcdf086db..f10e63bcef 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1123,5 +1123,7 @@ "LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化", "LabelDroppedFrames": "ドロップフレーム:", "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", - "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。" + "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。", + "LabelArtistsHelp": "分けますと使用;", + "Identify": "識別する" } From b2e7da744e43ee66fac448499a5fa8360bd485b6 Mon Sep 17 00:00:00 2001 From: Ulrich Wagner Date: Mon, 17 Feb 2020 14:56:43 +0100 Subject: [PATCH 071/449] #2407: Prefer MP4-Metadata for episodes --- .../libraryoptionseditor/libraryoptionseditor.js | 8 ++++++++ .../libraryoptionseditor.template.html | 7 +++++++ src/strings/de.json | 2 ++ src/strings/en-gb.json | 2 ++ src/strings/en-us.json | 2 ++ 5 files changed, 21 insertions(+) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 261d20745b..e168d9213d 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -391,6 +391,12 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide"); } + if (contentType === "tvshows") { + parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.remove("hide"); + } else { + parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.add("hide"); + } + return populateMetadataSettings(parent, contentType); } @@ -488,6 +494,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct SeasonZeroDisplayName: parent.querySelector("#txtSeasonZeroName").value, AutomaticRefreshIntervalDays: parseInt(parent.querySelector("#selectAutoRefreshInterval").value), EnableEmbeddedTitles: parent.querySelector("#chkEnableEmbeddedTitles").checked, + EnableEmbeddedEpisodeInfos: parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked, SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked, SkipSubtitlesIfAudioTrackMatches: parent.querySelector("#chkSkipIfAudioTrackPresent").checked, SaveSubtitlesWithMedia: parent.querySelector("#chkSaveSubtitlesLocally").checked, @@ -540,6 +547,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes; parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping; parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles; + parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked = options.EnableEmbeddedEpisodeInfos; parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia; parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index ebfdacaa19..bfa090b0d9 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -28,6 +28,13 @@
${PreferEmbeddedTitlesOverFileNamesHelp}
+
+ +
${PreferEmbeddedEpisodeInfosOverFileNamesHelp}
+
From 62c580f249b91fd5ebca2b12f9cb6570b66e9053 Mon Sep 17 00:00:00 2001 From: NeroBurner Date: Mon, 17 Feb 2020 10:55:40 +0000 Subject: [PATCH 076/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 2e338cce62..ac5b84ae76 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1485,5 +1485,6 @@ "EnableFastImageFadeIn": "Schnelle Bildeinblendung", "LabelPlayerDimensions": "Playerabmessungen:", "LabelDroppedFrames": "Verlorene Frames:", - "LabelCorruptedFrames": "Fehlerhafte Frames:" + "LabelCorruptedFrames": "Fehlerhafte Frames:", + "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)" } From a77b281a9553a0fa2dfc0bf39b376d39edd9054c Mon Sep 17 00:00:00 2001 From: TheGoose Date: Mon, 17 Feb 2020 14:54:57 +0000 Subject: [PATCH 077/449] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 6e6a19bfe6..3b3926a258 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1463,5 +1463,13 @@ "OptionRandom": "Random", "SelectAdminUsername": "Please select a username for the admin account.", "ButtonSplit": "Split", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "MessageConfirmAppExit": "Do you want to exit?", + "LabelVideoResolution": "Video resolution:", + "LabelStreamType": "Stream type:", + "LabelPlayerDimensions": "Player dimensions:", + "LabelDroppedFrames": "Dropped frames:", + "LabelCorruptedFrames": "Corrupted frames:", + "CopyStreamURLError": "There was an error copying the URL." } From e125ad70572f8496c0fd8db8a419f2e048c1336b Mon Sep 17 00:00:00 2001 From: zibius1 Date: Mon, 17 Feb 2020 16:25:28 +0000 Subject: [PATCH 078/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a489d053f6..97e2692387 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -916,7 +916,7 @@ "MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.", "MinutesAfter": "minutes après", "MinutesBefore": "minutes avant", - "Mobile": "Mobile", + "Mobile": "Pour appareil Mobile", "Monday": "Lundi", "MoreFromValue": "Plus de {0}", "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.", @@ -1455,5 +1455,15 @@ "OptionRandom": "Aléatoire", "ButtonSplit": "Séparer", "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)", + "MessageConfirmAppExit": "Sortir?", + "LabelVideoResolution": "Résolution vidéo", + "LabelStreamType": "Type de flux", + "EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées", + "EnableFastImageFadeIn": "Transition d'image rapide", + "LabelPlayerDimensions": "Dimension du lecteur", + "LabelDroppedFrames": "Cadre informatique oublié", + "LabelCorruptedFrames": "Cadre informatique corrompu", + "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL." } From 5256f98c948d037964d6e1ab6dc2a5a74facbf8a Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Mon, 17 Feb 2020 16:33:43 +0000 Subject: [PATCH 079/449] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 0635b5ee25..a952175d80 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -434,7 +434,7 @@ "LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.", "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", - "LabelCustomRating": "Egen anmeldelse:", + "LabelCustomRating": "Egen aldersgrense:", "LabelDateAdded": "Dato lagt til:", "LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:", "LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.", @@ -1463,5 +1463,6 @@ "LabelPlayerDimensions": "Dimensjoner på avspiller:", "LabelCorruptedFrames": "Korrupte bilder:", "LabelStreamType": "Type strøm:", - "LabelDroppedFrames": "Fortapte bilder:" + "LabelDroppedFrames": "Fortapte bilder:", + "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)" } From 5a1f3c1614ac3548dfb48cd64fb3a045b9d17194 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Mon, 17 Feb 2020 09:05:59 +0000 Subject: [PATCH 080/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 1967ed310c..0390eb9073 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1464,5 +1464,6 @@ "LabelPlayerDimensions": "Rozmery prehrávača:", "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškodené snímky:", - "CopyStreamURLError": "Pri kopírovaní URL nastala chyba." + "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", + "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)" } From b8c90dcc7fe091c0c905b1e5bfcaf7c0afaae3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20F=C3=A4th?= Date: Tue, 18 Feb 2020 16:46:17 +0100 Subject: [PATCH 081/449] Fix dashboard padding --- src/dashboard.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dashboard.html b/src/dashboard.html index 4888c1110f..7180b94872 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -2,7 +2,7 @@
- -
+

${HeaderActiveDevices}

chevron_right From 2cd1edda3ba8fd561221348fda53ecf8797a45cc Mon Sep 17 00:00:00 2001 From: 4d1m Date: Tue, 18 Feb 2020 09:58:33 +0000 Subject: [PATCH 082/449] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 96f10feef5..b8e87e0d36 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1462,5 +1462,6 @@ "LabelStreamType": "Tipul streamului:", "LabelPlayerDimensions": "Dimensiunile soft redare:", "LabelDroppedFrames": "Cadre abandonate:", - "LabelCorruptedFrames": "Cadre corupte:" + "LabelCorruptedFrames": "Cadre corupte:", + "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)" } From 7e58b448cd252edb6d1c0a1b5dc031128d7d3c55 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 19 Feb 2020 02:10:40 +0300 Subject: [PATCH 083/449] apply suggestion make position slider navigable by keyboard --- src/components/remotecontrol/remotecontrol.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..0316e19a0b 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -1,4 +1,4 @@ -define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize) { +define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "layoutManager", "userSettings", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings) { "use strict"; function showAudioMenu(context, player, button, item) { @@ -228,6 +228,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL buttonVisible(context.querySelector(".btnFastForward"), null != item); var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + if (positionSlider && item && item.RunTimeTicks) { + positionSlider.setKeyboardSteps(userSettings.skipBackLength() * 1000000 / item.RunTimeTicks, + userSettings.skipForwardLength() * 1000000 / item.RunTimeTicks); + } + if (positionSlider && !positionSlider.dragging) { positionSlider.disabled = !playState.CanSeek; var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; @@ -687,6 +692,12 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit); context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit); events.on(playbackManager, "playerchange", onPlayerChange); + + if (layoutManager.tv) { + var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + positionSlider.classList.add("focusable"); + positionSlider.enableKeyboardDragging(); + } } function onDialogClosed(e) { From 2d509e9fb652b72c8206c8a37736aa1d6bc840e6 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 19 Feb 2020 02:11:29 +0300 Subject: [PATCH 084/449] apply suggestion make focus --- src/nowplaying.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..94180ed397 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -12,7 +12,7 @@
-
+
From 4be2aed45c47cb8be66951ce25076c9517973c4a Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Wed, 19 Feb 2020 02:54:46 +0000 Subject: [PATCH 085/449] Added translation using Weblate (Spanish (Dominican Republic)) --- src/strings/es_DO.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/es_DO.json diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/es_DO.json @@ -0,0 +1 @@ +{} From 9c60b8f2dbceb8536b4470a66acfe05ff05acd2a Mon Sep 17 00:00:00 2001 From: Ulrich Wagner Date: Wed, 19 Feb 2020 07:59:15 +0100 Subject: [PATCH 086/449] Removed an unnecessary translation --- src/strings/en-gb.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 489117e5b4..3b3926a258 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -597,8 +597,6 @@ "PreferredNotRequired": "Preferred, but not required", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode informations from the embedded metadata if available.", - "PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode informations over filenames", "PluginInstalledMessage": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", "PleaseSelectTwoItems": "Please select at least two items.", "PleaseRestartServerName": "Please restart Jellyfin Server - {0}.", From 4ea3b98c2794ad97a4d910880faae3209f0aee04 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 19 Feb 2020 11:10:12 +0300 Subject: [PATCH 087/449] Extract setVolume/setVolumeDelayed --- src/controllers/playback/videoosd.js | 49 +++++++++++----------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 6c7dcce788..1c73351db9 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1405,39 +1405,28 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }, options); } + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + + playbackManager.setVolume(this.value, currentPlayer); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + view.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); - nowPlayingVolumeSlider.addEventListener("change", function () { - if (volumeSliderTimer) { - // interupt and remove existing timer - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - } - playbackManager.setVolume(this.value, currentPlayer); - }); - nowPlayingVolumeSlider.addEventListener("mousemove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); - nowPlayingVolumeSlider.addEventListener("touchmove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); + nowPlayingVolumeSlider.addEventListener("change", setVolume); + nowPlayingVolumeSlider.addEventListener("mousemove", setVolumeDelayed); + nowPlayingVolumeSlider.addEventListener("touchmove", setVolumeDelayed); nowPlayingPositionSlider.addEventListener("change", function () { var player = currentPlayer; From 805394d9a3151b635cedb831efe9ce35d7f2f986 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 15:42:48 +0100 Subject: [PATCH 088/449] Add a message to home when no libraries have been created (#798) * Add a prompt to home when no libraries exist Resolves: #642 * Replace let with var in homesection.js * Use centerMessage class in "no library" prompt * Fix invalid closing tag * Change \"no library\" prompt description for admins --- src/components/homesections/homesections.js | 54 +++++++++++++++------ src/strings/en-us.json | 2 + 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index af574200f3..c6d0652ecc 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -40,26 +40,48 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la return getUserViews(apiClient, user.Id).then(function (userViews) { var html = ''; - var sectionCount = 7; - for (var i = 0; i < sectionCount; i++) { - html += '
'; - } + if (userViews.length) { + var sectionCount = 7; + for (var i = 0; i < sectionCount; i++) { + html += '
'; + } - elem.innerHTML = html; - elem.classList.add('homeSectionsContainer'); + elem.innerHTML = html; + elem.classList.add('homeSectionsContainer'); - var promises = []; - var sections = getAllSectionsToShow(userSettings, sectionCount); - for (var i = 0; i < sections.length; i++) { - promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); - } + var promises = []; + var sections = getAllSectionsToShow(userSettings, sectionCount); + for (var i = 0; i < sections.length; i++) { + promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); + } - return Promise.all(promises).then(function () { - return resume(elem, { - refresh: true, - returnPromise: false + return Promise.all(promises).then(function () { + return resume(elem, { + refresh: true, + returnPromise: false + }); }); - }); + } else { + var noLibDescription; + if (user['Policy'] && user['Policy']['IsAdministrator']) { + noLibDescription = Globalize.translate("NoCreatedLibraries", '
', '') + } else { + noLibDescription = Globalize.translate("AskAdminToCreateLibrary"); + } + + html += '
'; + html += '

' + Globalize.translate("MessageNothingHere") + '

'; + html += '

' + noLibDescription + '

' + html += '
'; + elem.innerHTML = html; + + var createNowLink = elem.querySelector("#button-createLibrary") + if (createNowLink) { + createNowLink.addEventListener("click", () => { + Dashboard.navigate("library.html"); + }); + } + } }); } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 84f78079a5..d7e404eba6 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -36,6 +36,7 @@ "Artists": "Artists", "AsManyAsPossible": "As many as possible", "Ascending": "Ascending", + "AskAdminToCreateLibrary": "Ask an administrator to create a library.", "AspectRatio": "Aspect Ratio", "AttributeNew": "New", "Audio": "Audio", @@ -1032,6 +1033,7 @@ "Next": "Next", "NextUp": "Next Up", "No": "No", + "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoNextUpItemsMessage": "None found. Start watching your shows!", "NoPluginConfigurationMessage": "This plugin has no settings to configure.", From 80c2fe2318077b6663e4631a9ef368f36f4f5b95 Mon Sep 17 00:00:00 2001 From: Philmo67 Date: Wed, 19 Feb 2020 09:34:35 +0000 Subject: [PATCH 089/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 97e2692387..3a1b280d24 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1456,7 +1456,7 @@ "ButtonSplit": "Séparer", "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", "HeaderNavigation": "Navigation", - "OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)", + "OptionForceRemoteSourceTranscoding": "Transcodage forcé pour sources de media à distance (ex: TV en direct)", "MessageConfirmAppExit": "Sortir?", "LabelVideoResolution": "Résolution vidéo", "LabelStreamType": "Type de flux", From af80b62376a898e2fda775b66389ab1c6c607a7a Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Wed, 19 Feb 2020 12:40:52 +0000 Subject: [PATCH 090/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 3a1b280d24..0946d7d6e1 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -605,7 +605,7 @@ "LabelH264Crf": "CRF d'encodage H264 :", "LabelEncoderPreset": "Profil d'encodage H264 :", "LabelHardwareAccelerationType": "Accélération matérielle :", - "LabelHardwareAccelerationTypeHelp": "Fonctionnalité expérimentale disponible sur les systèmes supportés.", + "LabelHardwareAccelerationTypeHelp": "L'accélération matérielle nécessite une configuration supplémentaire.", "LabelHomeNetworkQuality": "Qualité du réseau local :", "LabelHomeScreenSectionValue": "Section {0} de l'accueil :", "LabelHttpsPort": "Numéro de port HTTPS local :", From fb29a45087af339726ca3e2f6401e8450f1501a1 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Wed, 19 Feb 2020 08:04:48 +0000 Subject: [PATCH 091/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 0390eb9073..a6fce31503 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -380,7 +380,7 @@ "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií", "LabelGroupMoviesIntoCollectionsHelp": "Pri zobrazení zoznamu filmov budú filmy patriace do kolekcie zobrazené ako jedna zoskupená položka.", "LabelHardwareAccelerationType": "Hardvérová akcelerácia:", - "LabelHardwareAccelerationTypeHelp": "Toto je experimentálna funkcia a je dostupná len na podporovaných systémoch.", + "LabelHardwareAccelerationTypeHelp": "Hardvérová akcelerácia vyžaduje dodatočnú konfiguráciu.", "LabelHomeScreenSectionValue": "Sekcia domácej obrazovky {0}:", "LabelHttpsPort": "Lokálny HTTPS port:", "LabelIconMaxHeight": "Maximálna výška ikony:", @@ -609,7 +609,7 @@ "OptionBlockBooks": "Knihy", "OptionBlockMovies": "Filmy", "OptionBlockMusic": "Hudba", - "OptionBlockTrailers": "Ukážky", + "OptionBlockTrailers": "Trailery", "OptionCommunityRating": "Hodnotenie komunity", "OptionContinuing": "Pokračuje", "OptionCriticRating": "Hodnotenie kritikov", @@ -812,7 +812,7 @@ "TabShows": "Seriály", "TabSongs": "Skladby", "TabSuggestions": "Návrhy", - "TabTrailers": "Ukážky", + "TabTrailers": "Trailery", "TabTranscoding": "Transkódovanie", "TabUpcoming": "Nadchádzajúce", "TabUsers": "Užívatelia", @@ -821,7 +821,7 @@ "Thursday": "Štvrtok", "TitleHardwareAcceleration": "Hardvérová akcelerácia", "TrackCount": "{0} stôp", - "Trailers": "Ukážky", + "Trailers": "Trailery", "Tuesday": "Utorok", "UninstallPluginConfirmation": "Ste si istý, že chcete odinštalovať {0}?", "UninstallPluginHeader": "Odinštalovať rozšírenie", @@ -1258,7 +1258,7 @@ "OptionIgnoreTranscodeByteRangeRequests": "Ignorovať požiadavky na transkódovanie bajtového rozsahu", "OptionHlsSegmentedSubtitles": "HLS segmentované titulky", "OptionExternallyDownloaded": "Externé sťahovanie", - "OptionEnableExternalContentInSuggestionsHelp": "Povoliť zahrnutie internetových ukážok a živých TV programov do navrhovaného obsahu.", + "OptionEnableExternalContentInSuggestionsHelp": "Povoliť zahrnutie internetových trailerov a živých TV programov do navrhovaného obsahu.", "OptionDownloadImagesInAdvanceHelp": "Vo východzom stave sa väčšina obrázkov sťahuje až po vyžiadaní Jellyfin aplikáciou. Povolením tejto možnosti sa budú všetky obrázky sťahovať popredu, keď sa budú importovať nové médiá. Toto môže spôsobiť výrazne dlhšie skenovanie knižnice.", "OptionDownloadBoxImage": "Krabica", "OptionDownloadBannerImage": "Banner", From 5159d851caf6f2c5fae082a382b4e95aa45f7e6f Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 12:28:53 +0000 Subject: [PATCH 092/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index cdc96cf6ef..4274d4efd7 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -583,7 +583,7 @@ "LabelH264Crf": "H264 CRF 编码质量等级:", "LabelEncoderPreset": "H264 和 H265 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", - "LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。", + "LabelHardwareAccelerationTypeHelp": "硬件加速需要额外配置。", "LabelHomeNetworkQuality": "家庭网络质量:", "LabelHomeScreenSectionValue": "主屏幕模块{0}:", "LabelHttpsPort": "本地 HTTPS 端口号:", @@ -802,7 +802,7 @@ "LabelZipCode": "邮编:", "LabelffmpegPath": "FFmpeg 路径:", "LabelffmpegPathHelp": "FFmpeg 应用程序的文件,或者包含了 FFmpeg 的文件夹的路径。", - "LanNetworksHelp": "在强制带宽限制时, 将在本地网络上考虑的网络的 ip 地址或 ip/网络掩码条目的逗号分隔列表。如果设置, 所有其他 IP 地址将被视为在外部网络上, 并且将受到外部带宽限制。如果保留为空, 则只将服务器的子网视为本地网络。", + "LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。", "Large": "大", "LatestFromLibrary": "最新的{0}", "LearnHowYouCanContribute": "学习如何构建。", @@ -1049,7 +1049,7 @@ "OptionRuntime": "播放时长", "OptionSaturday": "星期六", "OptionSaveMetadataAsHidden": "保存媒体资料和图像为隐藏文件", - "OptionSaveMetadataAsHiddenHelp": "更改此项将适用于保存向前的新元数据。在下次 Jellyfin 服务器保存时, 现有元数据文件将被更新。", + "OptionSaveMetadataAsHiddenHelp": "更改此项将应用于以后保存的元数据。现有元数据文件将在下一次 Jellyfin 服务器保存它们时被更新。", "OptionSpecialEpisode": "特集", "OptionSubstring": "子串", "OptionSunday": "星期天", @@ -1422,7 +1422,7 @@ "DashboardArchitecture": "架构:{0}", "GroupVersions": "按版本分组", "LaunchWebAppOnStartup": "当启动服务器时,打开Web界面", - "LaunchWebAppOnStartupHelp": "这个插件已经被成功安装。 服务器需要重启以使该插件生效。", + "LaunchWebAppOnStartupHelp": "服务器启动时在默认浏览器中打开网页端。使用重启服务器功能时此项不生效。", "MusicAlbum": "音乐专辑", "MusicArtist": "音乐艺术家", "MusicVideo": "音乐视频", @@ -1468,5 +1468,6 @@ "CopyStreamURLError": "复制URL地址时发生错误。", "MessageConfirmAppExit": "你要退出吗?", "EnableFastImageFadeIn": "快速图片淡入", - "EnableFastImageFadeInHelp": "为加载图片启用更快的图片淡入" + "EnableFastImageFadeInHelp": "为已加载的图片启用更快的图片淡入动画", + "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)" } From ac46dbe3ace893d356670814357619c27d1a2971 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 13:00:40 +0000 Subject: [PATCH 093/449] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index b83aaf0330..2d9634d333 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -347,5 +347,27 @@ "AllLanguages": "全部語言", "All": "全部", "AddedOnValue": "已添加 {0}", - "AddToPlaylist": "添加至播放清單" + "AddToPlaylist": "添加至播放清單", + "ValueSpecialEpisodeName": "特典 - {0}", + "Sync": "同步", + "Songs": "歌曲", + "Shows": "節目", + "Playlists": "播放清單", + "Photos": "相片", + "Movies": "電影", + "HeaderLiveTV": "電視直播", + "HeaderFavoriteSongs": "最愛的歌曲", + "HeaderFavoriteShows": "最愛的節目", + "HeaderFavoriteEpisodes": "最愛的劇集", + "HeaderFavoriteArtists": "最愛藝術家", + "HeaderFavoriteAlbums": "最愛專輯", + "HeaderContinueWatching": "繼續觀看", + "HeaderAlbumArtists": "專輯藝術家", + "Genres": "風格", + "Folders": "檔案夾", + "Favorites": "我的最愛", + "Collections": "合輯", + "Channels": "頻道", + "Books": "圖書", + "Albums": "專輯" } From 17d931035e2b4ae611ef32bd8f8488eedab7a743 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 12:31:01 +0000 Subject: [PATCH 094/449] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 6d18c646b9..756a759068 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -499,7 +499,7 @@ "EnterFFmpegLocation": "輸入 FFmpeg 路徑", "Episodes": "劇集", "Error": "錯誤", - "ErrorAddingListingsToSchedulesDirect": "", + "ErrorAddingListingsToSchedulesDirect": "在將電視節目時間表添加到您的Schedules Direct賬號時出現錯誤。每個Schedules Direct賬號只允許有限的時間表。您在繼續前可能需要登入Schedules Direct網站并刪除賬號中的其它列表。", "ErrorAddingGuestAccount1": "新增Jellyfin Connect時發生錯誤。你的賓客有建立Jellyfin帳號嗎?他們可以在 {0} 創建帳號。", "ErrorAddingGuestAccount2": "若你還是遇到問題,請發送email至 {0} 並附上你和他們的email帳號。", "ErrorAddingJellyfinConnectAccount1": "新增Jellyfin Connect時發生錯誤。您有建立Jellyfin帳號嗎?您可以在 {0} 創建帳號。", @@ -1299,7 +1299,7 @@ "Writer": "編劇", "XmlTvMovieCategoriesHelp": "有這些類別的節目會被當作電影。用「|」分隔多個。", "ValueSeriesCount": "{0} 劇集", - "LabelHardwareAccelerationTypeHelp": "這個功能只能在支援的系統上使用。", + "LabelHardwareAccelerationTypeHelp": "硬件加速需要額外的配置。", "LabelHomeNetworkQuality": "區域網路畫質:", "LabelHomeScreenSectionValue": "主畫面模塊 {0}:", "LabelMetadataDownloadersHelp": "啟用媒體屬性下載器的優先次序,愈下次序只會用來填補缺少的信息。", @@ -1484,7 +1484,7 @@ "LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的家庭網路中使用你的簡易 PIN 碼登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN 碼留空,那麼在你的區域網路中便不需輸入密碼。", "LabelReleaseDate": "釋出日期:", "LabelRemoteClientBitrateLimit": "網際網路串流傳輸位元率限制(Mbps):", - "LanNetworksHelp": "", + "LanNetworksHelp": "在强制頻寬限制時,認作本地網路上的 IP 地址或 IP/網路掩碼條目的逗號分隔列表。如果設置此項,所有其它 IP 地址將被視作在外部網路上,并且將受到外部頻寬限制。如果保留爲空,則只將服務器的子網視作本地網路。", "OptionIgnoreTranscodeByteRangeRequests": "忽略轉檔位元組範圍請求", "OptionIgnoreTranscodeByteRangeRequestsHelp": "如果啟用,這些請求會被兌現,但會忽略的位元組範圍標頭。", "OptionLoginAttemptsBeforeLockoutHelp": "若值為 0,則表示將允許普通使用者嘗試三次、管理員嘗試五次的預設值,設定為 -1 來停用此功能。", @@ -1628,5 +1628,18 @@ "XmlDocumentAttributeListHelp": "這些屬性會在每一個XML回應的根元素上應用。", "SkipEpisodesAlreadyInMyLibraryHelp": "劇集將使用季和劇集編號進行比較。", "SelectAdminUsername": "請為管理員賬戶選擇一個用戶名。", - "CopyStreamURLError": "複製網址的時候發生錯誤." + "CopyStreamURLError": "複製網址的時候發生錯誤.", + "OptionSaveMetadataAsHiddenHelp": "更改此項將應用於以後保存的元數據。現有元數據文件將在下一次 Jellyfin 伺服器保存它們時被更新。", + "OptionAllowRemoteSharedDevicesHelp": "DLNA 設備在用戶對它們進行控制前都被視作共享的。", + "OptionForceRemoteSourceTranscoding": "强制遠端轉碼(像電視直播一樣)", + "MessageConfirmAppExit": "您要退出嗎?", + "LaunchWebAppOnStartupHelp": "伺服器啓動時在默認游覽器中打開網頁端。使用重啓伺服器功能時此項不生效。", + "LabelVideoResolution": "視頻解析度:", + "LabelStreamType": "串流類型:", + "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", + "EnableFastImageFadeIn": "快速圖片淡入", + "LabelPlayerDimensions": "播放器尺寸:", + "LabelDroppedFrames": "丟棄的幀:", + "LabelCorruptedFrames": "損壞的幀:", + "ButtonSplit": "拆分" } From c3f518a4c4ec639c3755ec476524f7a12ad9039f Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Wed, 19 Feb 2020 02:57:19 +0000 Subject: [PATCH 095/449] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 0967ef424b..70f9f52d46 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -1 +1,6 @@ -{} +{ + "Add": "Añadir", + "Actor": "Actor", + "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Inténtelo de nuevo más tarde.", + "Absolute": "Absoluto" +} From 41ea428237a36b4b351aa8387f932d363fcfe6dd Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:07:06 +0100 Subject: [PATCH 096/449] Rename and move declaration of playerPauseClickTimeout --- src/controllers/playback/videoosd.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index eccf065487..754a214149 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,15 +1223,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); + + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -1372,7 +1373,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; - let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1392,14 +1392,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); + playPauseClickTimeout = 0; } else { - playerPauseClickTimeout = setTimeout(() => { + playPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); showOsd(); - playerPauseClickTimeout = 0; + playPauseClickTimeout = 0; }, 300); } } From f52075eb261d542b3c81022d6eecfb98b7b93757 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:09:00 +0100 Subject: [PATCH 097/449] Remove unnecessary check when clearing playPauseClickTimeout --- src/controllers/playback/videoosd.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 754a214149..7624724fba 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1231,9 +1231,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if (playPauseClickTimeout) { - clearTimeout(playPauseClickTimeout); - } + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); From 6b2faaed8df0c1d127f1895354bf91776f103287 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:54:55 +0100 Subject: [PATCH 098/449] fix linting errors --- src/controllers/playback/videoosd.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 7624724fba..daab8cc9ae 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,14 +1223,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); From c85e5ec48b69d64280021e765891a62d09846142 Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Wed, 19 Feb 2020 17:00:17 +0000 Subject: [PATCH 099/449] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index a952175d80..fb5d6a900c 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -489,7 +489,7 @@ "LabelH264Crf": "CRF-verdi for H264-koding:", "LabelEncoderPreset": "Forhåndsinnstilling for H264-koding:", "LabelHardwareAccelerationType": "Maskinvareakselerasjon:", - "LabelHardwareAccelerationTypeHelp": "Dette er en eksperimentell funksjon som bare er tilgjengelig på støttede systemer.", + "LabelHardwareAccelerationTypeHelp": "Maskinvareakselerasjon krever ytterligere konfigurasjon.", "LabelHomeScreenSectionValue": "Hjemskjermseksjon {0}:", "LabelHttpsPort": "Lokal HTTPS-port:", "LabelHttpsPortHelp": "TCP-portnummeret som Jellyfin sin HTTPS-server skal benytte.", @@ -783,7 +783,7 @@ "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", "OptionAllowRemoteSharedDevices": "Tillat fjernstyring av delte enheter", "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner å styre dem.", - "OptionAllowUserToManageServer": "TIllatt denne brukeren å administrere serveren", + "OptionAllowUserToManageServer": "Tillatt denne brukeren å administrere serveren", "OptionAllowVideoPlaybackRemuxing": "Tillat avspilling av video som krever konvertering uten omkoding", "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever omkoding", "OptionAscending": "Økende", @@ -1464,5 +1464,7 @@ "LabelCorruptedFrames": "Korrupte bilder:", "LabelStreamType": "Type strøm:", "LabelDroppedFrames": "Fortapte bilder:", - "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)" + "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)", + "NoCreatedLibraries": "Det virker som at du ikke har opprettet noen biblioteker ennå. {0}Vil du opprette et nå?{1}", + "AskAdminToCreateLibrary": "Spør en administrator om å lage et bibliotek." } From a1f6db48b15ec3626246427ad9fed0d5c66500d3 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Thu, 20 Feb 2020 17:38:22 +0800 Subject: [PATCH 100/449] h264 high10 is not supported on mobile browsers --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 9d91a691d0..b9fb5f4223 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -761,7 +761,7 @@ define(['browser'], function (browser) { videoTestElement.canPlayType('video/mp4; codecs="avc1.6e0033"').replace(/no/, '')) { // These tests are passing in safari, but playback is failing - if (!browser.safari && !browser.iOS && !browser.web0s && !browser.edge) { + if (!browser.safari && !browser.iOS && !browser.web0s && !browser.edge && !browser.mobile) { h264Profiles += '|high 10'; } } From 87a4f39844f3a2bac2642701eb3165a11b18dd90 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Thu, 20 Feb 2020 11:23:08 +0100 Subject: [PATCH 101/449] Fix webOS support in videoosd.js and homesection.js --- src/components/homesections/homesections.js | 2 +- src/controllers/playback/videoosd.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 21373a1796..87be8c7c33 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -77,7 +77,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var createNowLink = elem.querySelector("#button-createLibrary") if (createNowLink) { - createNowLink.addEventListener("click", () => { + createNowLink.addEventListener("click", function () { Dashboard.navigate("library.html"); }); } diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 27652958d0..27fe6bae75 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1218,7 +1218,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - let playPauseClickTimeout; + var playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { @@ -1388,7 +1388,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med clearTimeout(playPauseClickTimeout); playPauseClickTimeout = 0; } else { - playPauseClickTimeout = setTimeout(() => { + playPauseClickTimeout = setTimeout(function() { playbackManager.playPause(currentPlayer); showOsd(); playPauseClickTimeout = 0; From a12da2309ff6d33ac415f1b4da1f5e0e6c84d1a2 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Thu, 20 Feb 2020 19:46:34 +0300 Subject: [PATCH 102/449] apply suggustion change --- src/scripts/librarymenu.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 7d86dec42e..9e5748f449 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -12,7 +12,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += "
"; html += '
'; html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -84,7 +84,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (!layoutManager.tv) { headerCastButton.classList.remove("hide"); } - } else { headerHomeButton.classList.add("hide"); headerCastButton.classList.add("hide"); @@ -157,7 +156,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function onPlaybackStart(e) { - if (playbackManager.isPlayingAudio() && layoutManager.tv) { headerAudioPlayerButton.classList.remove("hide"); } else { @@ -166,7 +164,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function onPlaybackStop(e, stopInfo) { - if (stopInfo.nextMediaType != 'Audio') { headerAudioPlayerButton.classList.add("hide"); } From 852175e1391192cdf9abcac2a2d9e8d62eb4484b Mon Sep 17 00:00:00 2001 From: h1nk <12993584+h1nk@users.noreply.github.com> Date: Fri, 21 Feb 2020 17:11:08 -0500 Subject: [PATCH 103/449] Add missing final newlines Used this one-liner: https://unix.stackexchange.com/a/161853 --- src/components/dialogHelper/dialogHelper.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..05c503fe06 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -169,6 +169,15 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', }, { passive: true }); + + dom.addEventListener((dlg.dialogContainer || backdrop), 'contextmenu', function (e) { + if (e.target === dlg.dialogContainer) { + // Close the application dialog menu + close(dlg); + // Prevent the default browser context menu from appearing + e.preventDefault(); + } + }); } function isHistoryEnabled(dlg) { @@ -481,4 +490,4 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', globalOnOpenCallback = val; } }; -}); \ No newline at end of file +}); From f7d383f76a7493b65d27eb096551e32c614272bb Mon Sep 17 00:00:00 2001 From: S1ckn3z Date: Fri, 21 Feb 2020 17:54:13 +0000 Subject: [PATCH 104/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index ac5b84ae76..e8a73eda00 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1486,5 +1486,6 @@ "LabelPlayerDimensions": "Playerabmessungen:", "LabelDroppedFrames": "Verlorene Frames:", "LabelCorruptedFrames": "Fehlerhafte Frames:", - "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)" + "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)", + "AskAdminToCreateLibrary": "Bitten Sie einen Administrator, eine Bibliothek zu erstellen." } From 99f5818a6ccb9a65dc4251335ffb4ef9ed1c7411 Mon Sep 17 00:00:00 2001 From: Saksol Date: Fri, 21 Feb 2020 03:08:03 +0000 Subject: [PATCH 105/449] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 66 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 36eba8ff7a..70fc891193 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -232,24 +232,66 @@ "ButtonResetPassword": "Endurstilla lykilorð", "ButtonOpen": "Opna", "Songs": "Lög", - "ButtonProfile": "", - "ButtonPreviousTrack": "", - "ButtonPause": "", - "ButtonRemove": "", - "ButtonResume": "", - "ButtonQuickStartGuide": "", - "ConfirmDeleteImage": "", - "ButtonRename": "", + "ButtonProfile": "Prófíll", + "ButtonPreviousTrack": "Fyrra lag", + "ButtonPause": "Pása", + "ButtonRemove": "Fjarlægja", + "ButtonResume": "Halda áfram", + "ButtonQuickStartGuide": "Byrjunar leiðarvísir", + "ConfirmDeleteImage": "Eyða mynd?", + "ButtonRename": "Endurnefna", "Sync": "Samstilla", "Never": "", "News": "", - "ButtonRevoke": "", - "ButtonRepeat": "", + "ButtonRevoke": "Afturkalla", + "ButtonRepeat": "Endurtaka", "MusicArtist": "", "MusicAlbum": "", "No": "", - "Monday": "", + "Monday": "Mánudagur", "Name": "", "Mute": "", - "MusicVideo": "" + "MusicVideo": "", + "ButtonRefresh": "Endurhlaða", + "ButtonParentalControl": "Foreldraeftirlit", + "ButtonOff": "Af", + "ButtonNextTrack": "Næsta lag", + "ButtonNetwork": "Net", + "ButtonMore": "Meira", + "ButtonManualLogin": "Handvirkt Auðkenni", + "ButtonLibraryAccess": "Aðgangur að safni", + "ButtonLearnMore": "Læra meira", + "ButtonInfo": "Upplýsingar", + "ButtonHome": "Heim", + "ButtonHelp": "Hjálp", + "ButtonGuide": "Sjónvarpsvísir", + "ButtonGotIt": "Skilið", + "ButtonFullscreen": "Fylla upp í skjá", + "ButtonForgotPassword": "Gleymt Lykilorð", + "ButtonFilter": "Sía", + "ButtonEditOtherUserPreferences": "Breyta stillingum notanda, mynd og persónulegum stillingum.", + "ButtonEditImages": "Breyta myndum", + "ButtonEdit": "Breyta", + "ButtonDownload": "Sækja", + "ButtonDown": "Niður", + "ButtonDeleteImage": "Eyða Mynd", + "ButtonDelete": "Eyða", + "ButtonConnect": "Tengjast", + "ButtonChangeServer": "Skipta um þjón", + "ButtonBack": "Til baka", + "ButtonAudioTracks": "Hljóðspor", + "BookLibraryHelp": "Hljóð og texta bækur eru stuttar. Lesið {0}book naming guide{1}.", + "Backdrops": "Bakgrunnar", + "Backdrop": "Bakgrunnur", + "AuthProviderHelp": "Veljið vottunaraðila til þess að sannvotta lykilorð notanta.", + "AskAdminToCreateLibrary": "Biðjið stjórnanda að gera nýtt gagnasafn.", + "MoreFromValue": "Meira frá {0}", + "AlwaysPlaySubtitlesHelp": "Allir textar sem samsvara við túngumáli valið verða alltaf hlaðnir óháð hljóðmáls túngumáli.", + "AllowedRemoteAddressesHelp": "Kommu aðskilinn listi yfir ip tölur eða ip-númeramát fyrir net sem mega fjartengjas. Ef þetta er autt eru allar fjartengingar leyfðar.", + "AllowHWTranscodingHelp": "Leyfa viðtæki að umbreyta straumi í rauntíma.Þetta getur minnkað álag á þjón.", + "ValueSpecialEpisodeName": "Sérstakt - {0}", + "Shows": "Þættir", + "Playlists": "Spilunarlisti", + "ButtonScanAllLibraries": "Skanna Öll Gagnasöfn", + "AllLibraries": "Öll gagnasöfn" } From 813693fd89b26663b7d99aacb15e82742850a7ae Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 20 Feb 2020 14:53:53 +0000 Subject: [PATCH 106/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index a6fce31503..2553dcb622 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1465,5 +1465,7 @@ "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškodené snímky:", "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", - "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)" + "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)", + "NoCreatedLibraries": "Vyzerá to tak, že ste zatiaľ nevytvorili žiadnu knižnicu. {0}Chceli by ste nejakú vytvoriť teraz?{1}", + "AskAdminToCreateLibrary": "Pokiaľ chcete vytvoriť knižnicu, musíte sa spýtať administrátora." } From b4886568144542b226267a873261a34748ced2bf Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Fri, 21 Feb 2020 07:55:14 +0000 Subject: [PATCH 107/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 48 +++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 17556a0f6d..74792b679e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Aktivera för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", + "AllowHWTranscodingHelp": "Tillåt för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}Jellyfins boknamngivningsguide{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0} boknamngivningsguide{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) på vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -69,7 +69,7 @@ "ButtonEditImages": "Ändra bilder", "ButtonEditOtherUserPreferences": "Ändra den här användarens profil, bild och personliga inställningar.", "ButtonFilter": "Filtrera", - "ButtonForgotPassword": "Glömt lösenord", + "ButtonForgotPassword": "Glömt Lösenord", "ButtonFullscreen": "Fullskärm", "ButtonGotIt": "Ok", "ButtonHelp": "Hjälp", @@ -180,7 +180,7 @@ "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras", - "DropShadow": "Visa skugga", + "DropShadow": "Visa Skugga", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", @@ -198,9 +198,9 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Aktivera ledmotiv", + "EnableThemeSongs": "Ledmotiv", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", - "EnableThemeVideos": "Aktivera tema-videos", + "EnableThemeVideos": "Tema-videos", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", @@ -214,7 +214,7 @@ "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", "EveryNDays": "Var {0}:e dag", "ExitFullscreen": "Avsluta fullskärm", - "ExtraLarge": "Extra stor", + "ExtraLarge": "Extra Stor", "ExtractChapterImagesHelp": "Att extrahera kapitelrutor möjliggör för klienter att visa grafiska menyer för kapitelval. Aktiviteten kan vara långsam, resurs-intensiv och kan kräva flera gigabyte i utrymme. Aktiviteten körs när nya videofiler upptäcks, och är även schemalagd under nattetid. Schemat går att konfigurera under schemalagda aktiviteter. Det är inte rekommenderat att köra den här aktiviteten vid tider med hög belastning.", "FFmpegSavePathNotFound": "Det gick inte att hitta FFmpeg med den angivna sökvägen. FFprobe måste även finnas i samma mapp. Dessa komponenter inkluderas normalt i samma nedladdning. Var god undersök sökvägen och försök igen.", "Favorite": "Favorit", @@ -320,7 +320,7 @@ "HeaderFrequentlyPlayed": "Ofta spelade", "HeaderGenres": "Genrer", "HeaderGuideProviders": "Källor för programguide", - "HeaderHttpHeaders": "Http-rubriker", + "HeaderHttpHeaders": "HTTP-rubriker", "HeaderIdentification": "Identifiering", "HeaderIdentificationCriteriaHelp": "Var god skriv in minst ett identifieringskriterium", "HeaderIdentificationHeader": "ID-rubrik", @@ -331,7 +331,7 @@ "HeaderItems": "Objekt", "HeaderKeepRecording": "Fortsätt spela in", "HeaderKeepSeries": "Behåll serie", - "HeaderKodiMetadataHelp": "Jellyfin har stöd för Nfo-metadatafiler. För att aktivera eller inaktivera Nfo-metadata, använd Metadata-fliken för att konfigurera Nfo-stöd för dina mediatyper.", + "HeaderKodiMetadataHelp": "Jellyfin har stöd för NFO-metadatafiler. För att aktivera eller inaktivera NFO-metadata, använd Metadata-fliken för att konfigurera NFO-stöd för dina mediatyper.", "HeaderLatestEpisodes": "Senaste avsnitten", "HeaderLatestMedia": "Nytillkommet", "HeaderLatestMovies": "Nytillkomna filmer", @@ -1277,7 +1277,7 @@ "General": "Allmänt", "FastForward": "Snabbspola", "Extras": "Mer", - "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.", + "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av MLTV filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLooping": "Loopa direktsändningar", @@ -1339,5 +1339,29 @@ "ButtonSplit": "Dela upp", "LabelCache": "Cache:", "LabelAlbum": "Album:", - "HeaderVideos": "Videor" + "HeaderVideos": "Videor", + "LabelBitrate": "Bithastighet:", + "LabelStreamType": "Stream typ:", + "LabelStatus": "Status:", + "LabelSize": "Storlek:", + "LabelServerName": "Server namn:", + "LabelSecureConnectionsMode": "Säker uppkopplings läge:", + "EnableFastImageFadeInHelp": "Aktivera snabbare fade-in animationer för laddade bilder", + "EnableFastImageFadeIn": "Snabb bild fade-in", + "LabelPostProcessorArgumentsHelp": "Använd {path} som sökväg till inspelade filen.", + "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", + "LabelDroppedFrames": "Tappade ramar:", + "LabelAudioSampleRate": "Ljudprovfrekvens:", + "LabelAudioBitrate": "Ljudbithastighet", + "LabelAudioBitDepth": "Ljudbitdjup", + "LabelPlayMethod": "Uppspelningsmetod:", + "LabelPlayerDimensions": "Spelare dimensioner:", + "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", + "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", + "LabelCorruptedFrames": "Skadade ramar:", + "HeaderParentalRatings": "Föräldrarbetyg", + "HeaderNavigation": "Navigering", + "HeaderBranding": "Märke", + "CopyStreamURLError": "Det vart ett fel vid kopiering av URL.", + "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek." } From b1065db0af95aa0b984ad7c8b098842de8f5edf1 Mon Sep 17 00:00:00 2001 From: Vincent Phan Date: Thu, 20 Feb 2020 05:54:06 +0000 Subject: [PATCH 108/449] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 99 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 9cb4b48495..99ab29d68b 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -118,5 +118,102 @@ "UninstallPluginHeader": "Gỡ bỏ Plugin", "AccessRestrictedTryAgainLater": "Truy cập hiện đang hạn chế. Hãy thử lại sau.", "AddToCollection": "Thêm vào bộ sưu tập", - "Actor": "Diễn viên" + "Actor": "Diễn viên", + "ButtonRevoke": "Thu hồi", + "ButtonResume": "Tiếp tục", + "ButtonRestart": "Khởi động lại", + "ButtonResetEasyPassword": "Đặt lại mã pin nhanh", + "ButtonRepeat": "Lặp lại", + "ButtonRename": "Đổi tên", + "ButtonRefreshGuideData": "Làm mới dữ liệu hướng dẫn", + "ButtonRefresh": "Làm mới", + "ButtonQuickStartGuide": "Hướng dẫn nhanh", + "ButtonProfile": "Hồ sơ", + "ButtonPreviousTrack": "Bài trước", + "ButtonPlay": "Chơi", + "ButtonPause": "Tạm dừng", + "ButtonParentalControl": "Kiểm soát của cha mẹ", + "ButtonOpen": "Mở", + "ButtonOff": "Tắt", + "ButtonNextTrack": "Tiếp theo", + "ButtonNetwork": "Mạng", + "ButtonMore": "Thêm", + "ButtonManualLogin": "Đăng nhập thủ công", + "ButtonLibraryAccess": "Truy cập thư viện", + "ButtonLearnMore": "Tìm hiểu thêm", + "ButtonInfo": "Thông tin", + "ButtonHome": "Trang chủ", + "ButtonHelp": "Giúp đỡ", + "ButtonGuide": "Hướng dẫn", + "ButtonGotIt": "Hiểu rồi", + "ButtonFullscreen": "Toàn màn hình", + "ButtonForgotPassword": "Quên mật khẩu", + "ButtonFilter": "Lọc", + "ButtonEditOtherUserPreferences": "Chỉnh sửa hồ sơ, hình ảnh và sở thích cá nhân.", + "ButtonEditImages": "Sửa hình ảnh", + "ButtonEdit": "Sửa", + "ButtonDownload": "Tải", + "ButtonDown": "Xuống", + "ButtonDelete": "Xoá", + "ButtonConnect": "Kết nối", + "ButtonChangeServer": "Đổi máy chủ", + "ButtonBack": "Lùi", + "ButtonAudioTracks": "Track âm thanh", + "ButtonArrowUp": "Lên", + "ButtonArrowRight": "Phải", + "ButtonArrowLeft": "Trái", + "ButtonArrowDown": "Xuống", + "ButtonAddServer": "Thêm máy chủ", + "ButtonAddScheduledTaskTrigger": "Thêm kích hoạt", + "ButtonAddMediaLibrary": "Thêm thư viện Media", + "ButtonAddImage": "Thêm hình ảnh", + "BurnSubtitlesHelp": "Xác định xem máy chủ có ghi phụ đề khi chuyển đổi video hay không tùy thuộc vào định dạng phụ đề. Tránh ghi trong phụ đề sẽ cải thiện hiệu suất máy chủ. Chọn Tự động để ghi hình ảnh dựa trên các định dạng (VOBSUB, PGS, SUB / IDX, v.v.) và phụ đề ASS/SSA nhất định.", + "Browse": "Duyệt", + "BoxRear": "Hộp (mặt sau)", + "Books": "Sách", + "BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0}hướng dẫn đặt tên sách{1}.", + "Blacklist": "Danh sách đen", + "BirthPlaceValue": "Nơi sinh: {0}", + "BirthLocation": "Nơi sinh", + "BirthDateValue": "Sinh năm: {0}", + "Backdrops": "Phông nền", + "Backdrop": "Phông nền", + "AutoBasedOnLanguageSetting": "Tự động (dựa trên cài đặt ngôn ngữ)", + "Auto": "Tự động", + "AuthProviderHelp": "Chọn Nhà cung cấp xác thực sẽ được sử dụng để xác thực mật khẩu người dùng này.", + "Audio": "Âm thanh", + "AttributeNew": "Tạo mới", + "AspectRatio": "Tỷ lệ khung hình", + "AskAdminToCreateLibrary": "Yêu cầu quản trị viên tạo thư viện.", + "Ascending": "Tăng dần", + "AsManyAsPossible": "Càng nhiều càng tốt", + "Artists": "Nghệ Sĩ", + "AroundTime": "Xunh quanh {0}", + "Anytime": "Bất cứ lúc nào", + "AnyLanguage": "Bất kỳ ngôn ngữ", + "AlwaysPlaySubtitlesHelp": "Phụ đề phù hợp với sở thích ngôn ngữ sẽ được tải bất kể ngôn ngữ âm thanh.", + "AlwaysPlaySubtitles": "Luôn hiển thị phụ đề", + "AllowedRemoteAddressesHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc các mục IP/netmask cho các mạng sẽ được phép kết nối từ xa. Nếu để trống, tất cả các địa chỉ sẽ được cho phép.", + "AllowRemoteAccessHelp": "Nếu không được chọn, tất cả các kết nối từ xa sẽ bị chặn.", + "AllowRemoteAccess": "Cho phép kết nối từ xa đến Máy chủ Jellyfin.", + "AllowOnTheFlySubtitleExtractionHelp": "Phụ đề nhúng có thể được trích xuất từ video và dùng như văn bản thuần túy để giúp ngăn chặn chuyển mã video. Trên một số hệ thống, việc này có thể mất nhiều thời gian và khiến quá trình phát video bị đình trệ trong quá trình trích xuất. Vô hiệu hóa điều này để có phụ đề nhúng được ghi trong chuyển mã video khi chúng không được thiết bị khách hỗ trợ.", + "AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề trực tiếp", + "AllowMediaConversionHelp": "Cấp hoặc từ chối truy cập vào tính năng chuyển đổi media.", + "AllowMediaConversion": "Cho phép chuyển đổi media", + "AllowHWTranscodingHelp": "Cho phép bộ chỉnh chuyển mã stream khi đang chơi. Điều này có thể giúp giảm tải của máy chủ khi chuyển mã.", + "AllLibraries": "Tất cả các thư viện", + "AllLanguages": "Tất cả các ngôn ngữ", + "AllEpisodes": "Tất cả các tập phim", + "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB / IDX, v.v.)", + "AllChannels": "Tất cả các kênh", + "Alerts": "Cảnh Báo", + "Albums": "Albums", + "Aired": "Đã phát sóng", + "AirDate": "Ngày phát sóng", + "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", + "AddedOnValue": "Đã thêm {0}", + "AddToPlaylist": "Thêm vào danh sách phát", + "AddToPlayQueue": "Thêm vào hàng đợi", + "AddItemToCollectionHelp": "Thêm các mục vào bộ sưu tập bằng cách tìm kiếm và nhấp chuột phải hoặc nhấn vào menu để thêm chúng vào bộ sưu tập.", + "Absolute": "Tuyệt Đối" } From 78a276009275b337c2b6873f7be6794740602286 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Fri, 21 Feb 2020 06:41:43 +0000 Subject: [PATCH 109/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 4274d4efd7..06104cfc28 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1469,5 +1469,7 @@ "MessageConfirmAppExit": "你要退出吗?", "EnableFastImageFadeIn": "快速图片淡入", "EnableFastImageFadeInHelp": "为已加载的图片启用更快的图片淡入动画", - "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)" + "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)", + "NoCreatedLibraries": "看上去您还未创建任何资料库。{0} 您想现在创建一个吗? {1}", + "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。" } From cfafd519e83d90cfc1aa05dafab5d3df8247a0f5 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:06:33 +0000 Subject: [PATCH 110/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 209 +++++++++++++++++++++++++++++++++----------- 1 file changed, 156 insertions(+), 53 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 74792b679e..1870fad272 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -80,14 +80,14 @@ "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", "ButtonNew": "Nytillkommet", - "ButtonNextTrack": "Nästa spår:", + "ButtonNextTrack": "Nästa spår", "ButtonOff": "Av", "ButtonOk": "OK", "ButtonOpen": "Öppna", "ButtonParentalControl": "Föräldralås", "ButtonPause": "Paus", "ButtonPlay": "Spela upp", - "ButtonPreviousTrack": "Föregående spår:", + "ButtonPreviousTrack": "Föregående spår", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Snabbstartguide", "ButtonRefresh": "Uppdatera", @@ -179,14 +179,14 @@ "Down": "Ner", "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", - "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras", + "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras.", "DropShadow": "Visa Skugga", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", "EditMetadata": "Redigera metadata", "EditSubtitles": "Ändra undertexter", - "EnableBackdrops": "Aktivera fondbilder", + "EnableBackdrops": "Fondbilder", "EnableBackdropsHelp": "Visar fondbilder i bakgrunden av vissa sidor vid bläddring i biblioteket.", "EnableCinemaMode": "Bioläge", "EnableColorCodedBackgrounds": "Färgkodade bakgrundsbilder", @@ -198,7 +198,7 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Ledmotiv", + "EnableThemeSongs": "Signaturmelodier", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", "EnableThemeVideos": "Tema-videos", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", @@ -229,7 +229,7 @@ "FolderTypeMovies": "Filmer", "FolderTypeMusic": "Musik", "FolderTypeMusicVideos": "Musikvideor", - "FolderTypeTvShows": "Serier", + "FolderTypeTvShows": "TV Serier", "FolderTypeUnset": "Blandat Innehåll", "Folders": "Mappar", "Friday": "Fredag", @@ -287,7 +287,7 @@ "HeaderContainerProfile": "Behållareprofil", "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", "HeaderContinueListening": "Fortsätt lyssna på", - "HeaderContinueWatching": "Fortsätt kolla på", + "HeaderContinueWatching": "Fortsätt titta", "HeaderCustomDlnaProfiles": "Anpassade profiler", "HeaderDateIssued": "Utgivningsdatum", "HeaderDefaultRecordingSettings": "Standard inspelningsinställningar", @@ -322,7 +322,7 @@ "HeaderGuideProviders": "Källor för programguide", "HeaderHttpHeaders": "HTTP-rubriker", "HeaderIdentification": "Identifiering", - "HeaderIdentificationCriteriaHelp": "Var god skriv in minst ett identifieringskriterium", + "HeaderIdentificationCriteriaHelp": "Skriv in minst ett kriterie för identifiering.", "HeaderIdentificationHeader": "ID-rubrik", "HeaderIdentifyItemHelp": "Ange ett eller flera sökkriterier. Ta bort kriterier för att få fler träffar.", "HeaderImageSettings": "Bildinställningar", @@ -350,7 +350,7 @@ "HeaderMetadataSettings": "Metadatainställningar", "HeaderMoreLikeThis": "Mer som denna", "HeaderMovies": "Filmer", - "HeaderMusicQuality": "Musikkvalitet:", + "HeaderMusicQuality": "Musikkvalitet", "HeaderMusicVideos": "Musikvideor", "HeaderMyDevice": "Min enhet", "HeaderMyMedia": "Min Media", @@ -358,7 +358,7 @@ "HeaderNewApiKey": "Ny API-nyckel", "HeaderNewDevices": "Nya enheter", "HeaderNextEpisodePlayingInValue": "Nästa avsnitt börjar om {0}", - "HeaderNextUp": "Nästa på tur", + "HeaderNextUp": "Nästa", "HeaderNextVideoPlayingInValue": "Nästa video börjar om {0}", "HeaderOnNow": "Visas nu", "HeaderOtherItems": "Övriga objekt", @@ -375,7 +375,7 @@ "HeaderPlaybackError": "Uppspelningsfel", "HeaderPleaseSignIn": "Var god logga in", "HeaderPluginInstallation": "Installation av tillägg", - "HeaderPreferredMetadataLanguage": "Önskat språk för metadata:", + "HeaderPreferredMetadataLanguage": "Önskat språk för metadata", "HeaderProfile": "Profil", "HeaderProfileInformation": "Profilinformation", "HeaderProfileServerSettingsHelp": "Dessa inställningar kontrollerar hur Jellyfin Server presenterar sig för enheten.", @@ -479,7 +479,7 @@ "LabelAllowServerAutoRestart": "Tillåt att servern startas om automatiskt efter uppdateringar", "LabelAllowServerAutoRestartHelp": "Servern startas om endast då inga användare är inloggade.", "LabelAppName": "Appens namn", - "LabelAppNameExample": "Exempel: Sickbeard, NzbDrone", + "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med vid flera ;", "LabelAudio": "Ljud:", @@ -507,7 +507,7 @@ "LabelCurrentPassword": "Nuvarande lösenord:", "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format", - "LabelCustomCss": "Egen css:", + "LabelCustomCss": "Egen CSS:", "LabelCustomCssHelp": "Applicera din egen css till webbgränssnittet.", "LabelCustomDeviceDisplayName": "Visningsnamn:", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", @@ -550,9 +550,9 @@ "LabelEnableDlnaDebugLogging": "Aktivera DLNA felsökningsloggning", "LabelEnableDlnaDebugLoggingHelp": "Detta resulterar i mycket stora loggfiler och rekommenderas bara vid felsökning.", "LabelEnableDlnaPlayTo": "Använd DLNA spela-upp-på", - "LabelEnableDlnaPlayToHelp": "Jellyfin kan hitta enheter på ditt nätverk och ge dig möjlighet att fjärrstyra dem.", + "LabelEnableDlnaPlayToHelp": "Hitta enheter på ditt nätverk och ge dig möjlighet att fjärrstyra dem.", "LabelEnableDlnaServer": "Aktivera DLNA-server", - "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll från din Jellyfin Server.", + "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll.", "LabelEnableHardwareDecodingFor": "Aktivera hårdvaruomkodning för:", "LabelEnableRealtimeMonitor": "Aktivera bevakning av mappar i realtid", "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta)", @@ -565,7 +565,7 @@ "LabelExtractChaptersDuringLibraryScan": "Extrahera kapitelbildrutor vid genomsökning av biblioteket", "LabelExtractChaptersDuringLibraryScanHelp": "Om aktiverat extraheras kapitelbildrutor när videor importeras vid genomsökning av biblioteket. Om avaktiverat kommer extrahering att ske vid schemalagd kapitelbildrutebehandling, för att snabba upp den regelbundna genomsökningen av biblioteket.", "LabelFailed": "Misslyckades", - "LabelFileOrUrl": "Fil eller url:", + "LabelFileOrUrl": "Fil eller URL:", "LabelFinish": "Klart", "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", @@ -579,7 +579,7 @@ "LabelHardwareAccelerationTypeHelp": "Endast tillgängligt på hårdvara med stöd.", "LabelHomeNetworkQuality": "Hemnätverkskvalitet:", "LabelHomeScreenSectionValue": "Hemskärmsdel {0}:", - "LabelHttpsPort": "Lokalt portnummer för https:", + "LabelHttpsPort": "Lokalt portnummer för HTTPS:", "LabelHttpsPortHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på https.", "LabelIconMaxHeight": "Maxhöjd på ikoner:", "LabelIconMaxHeightHelp": "Högsta upplösning hos ikoner som visas via upnp:icon.", @@ -607,20 +607,20 @@ "LabelLanNetworks": "LAN nätverk:", "LabelLanguage": "Språk:", "LabelLineup": "Uppsättning:", - "LabelLocalHttpServerPortNumber": "Lokalt portnummer för http:", + "LabelLocalHttpServerPortNumber": "Lokalt portnummer för HTTP:", "LabelLocalHttpServerPortNumberHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på http.", "LabelLockItemToPreventChanges": "Lås det här objektet för att förhindra ändringar", "LabelLoginDisclaimer": "Ansvarsbegränsning vid inloggning:", "LabelLoginDisclaimerHelp": "Detta visas längst ned på inloggningssidan.", "LabelLogs": "Loggfiler:", - "LabelManufacturer": "Tillverkare", + "LabelManufacturer": "Tillverkare:", "LabelManufacturerUrl": "Tillverkarens webaddress", "LabelMatchType": "Matchningstyp:", "LabelMaxBackdropsPerItem": "Högsta antal fondbilder per objekt:", "LabelMaxChromecastBitrate": "Strömningskvalitet för Chromecast:", "LabelMaxParentalRating": "Högsta tillåtna åldersgräns", - "LabelMaxResumePercentage": "Högsta gräns för återupptagande (%)", - "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt", + "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent", + "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt.", "LabelMaxScreenshotsPerItem": "Högsta antal skärmdumpar per objekt:", "LabelMaxStreamingBitrate": "Maximal strömningskvalite:", "LabelMaxStreamingBitrateHelp": "Ange högsta bithastighet för strömning.", @@ -636,10 +636,10 @@ "LabelMetadataSaversHelp": "Välj de filformat du vill använda för att spara dina metadata.", "LabelMethod": "Metod:", "LabelMinBackdropDownloadWidth": "Hämta enbart fondbilder bredare än:", - "LabelMinResumeDuration": "Minsta tid för återupptagande (s)", - "LabelMinResumeDurationHelp": "Objekt med speltid kortare än så här kan ej återupptas", - "LabelMinResumePercentage": "Lägsta gräns för återupptagande (%)", - "LabelMinResumePercentageHelp": "Objekt betraktas som ej spelade om uppspelningen stoppas före denna tidpunkt", + "LabelMinResumeDuration": "Minsta tid för återupptagande:", + "LabelMinResumeDurationHelp": "Objekt med speltid kortare än så här kan ej återupptas.", + "LabelMinResumePercentage": "Lägsta gräns för återupptagande i procent:", + "LabelMinResumePercentageHelp": "Objekt betraktas som ej spelade om uppspelningen stoppas före denna tidpunkt.", "LabelMinScreenshotDownloadWidth": "Hämta enbart skärmdumpar bredare än:", "LabelModelDescription": "Modellbeskrivning", "LabelModelName": "Modellnamn", @@ -648,10 +648,10 @@ "LabelMonitorUsers": "Övervaka aktivitet från:", "LabelMovieCategories": "Filmkategorier:", "LabelMoviePrefix": "Film prefix:", - "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att Jellyfin kan hantera dessa korrekt.", + "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att servern kan hantera dessa korrekt.", "LabelMovieRecordingPath": "Inspelningssökväg för film (valfri):", "LabelMusicStreamingTranscodingBitrate": "Bithastighet vid omkodning av musik:", - "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik", + "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik.", "LabelName": "Namn:", "LabelNewName": "Nytt namn:", "LabelNewPassword": "Nytt lösenord:", @@ -691,10 +691,10 @@ "LabelProtocol": "Protokoll:", "LabelProtocolInfo": "Protokollinfo:", "LabelProtocolInfoHelp": "Värde att använda vid svar på GetProtocolInfo-begäran från enheter.", - "LabelPublicHttpPort": "Publikt portnummer för http:", - "LabelPublicHttpPortHelp": "Det publika portnumret som ska mappas till den lokala porten för http.", - "LabelPublicHttpsPort": "Publikt portnummer för https:", - "LabelPublicHttpsPortHelp": "Det publika portnumret som ska mappas till den lokala porten för https.", + "LabelPublicHttpPort": "Publikt portnummer för HTTP:", + "LabelPublicHttpPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTP.", + "LabelPublicHttpsPort": "Publikt portnummer för HTTPS:", + "LabelPublicHttpsPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTPS.", "LabelReadHowYouCanContribute": "Se hur du kan hjälpa till.", "LabelReasonForTranscoding": "Orsak för omkodning:", "LabelRecord": "Spela in:", @@ -718,7 +718,7 @@ "LabelSerialNumber": "Serienummer", "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier (valfri):", "LabelServerHost": "Värd:", - "LabelServerHostHelp": "192.168.1.100 eller https://min.server.com", + "LabelServerHostHelp": "192.168.1.100:8096 eller https://min.server.com", "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar", "LabelSkin": "Skal:", "LabelSkipBackLength": "'Hoppa bakåt'-längd:", @@ -757,7 +757,7 @@ "LabelTrackNumber": "Spår nr", "LabelTranscodingAudioCodec": "Ljudkodning:", "LabelTranscodingContainer": "Behållare:", - "LabelTranscodingTempPathHelp": "Denna mapp innehåller tillfälliga filer som används vid omkodning. Ange en plats för dessa, eller lämna blankt för att använda förvald plats.", + "LabelTranscodingTempPathHelp": "Ange en egen sökväg där omkodningar skall sparas för klienter. Lämna blankt för att använda förvald plats.", "LabelTranscodingThreadCount": "Trådar för omkodning:", "LabelTranscodingThreadCountHelp": "Välj maximala antalet trådar som ska användas vid omkodning. Att minska antalet trådar sänker cpu-belastningan men ökar även risken att omkodning inte kan ske snabbt nog för felfri uppspelning.", "LabelTranscodingVideoCodec": "Videokodning:", @@ -832,7 +832,7 @@ "MessageConfirmRemoveMediaLocation": "Är du säker på att du vill ta bort den här platsen?", "MessageConfirmRestart": "Är du säker på att du vill starta om Jellyfin server?", "MessageConfirmRevokeApiKey": "Är du säker på att du vill återkalla den här api-nyckeln? Applikationens koppling till Jellyfin Server kommer avslutas abrupt.", - "MessageConfirmShutdown": "Är du säker på att du vill stänga av Jellyfin server?", + "MessageConfirmShutdown": "Är du säker på att du vill stänga av servern?", "MessageContactAdminToResetPassword": "Vänligen kontakta din systemadministratör för att återställa ditt lösenord.", "MessageCreateAccountAt": "Skapa ett konto på {0}", "MessageDeleteTaskTrigger": "Vill du ta bort denna aktivitetsutlösare?", @@ -856,27 +856,27 @@ "MessageNoTrailersFound": "Hittade inga trailers. Installera Trailer-kanalen och öka biokänslan genom att lägga till ett bibliotek av trailers.", "MessageNothingHere": "Ingenting här.", "MessagePasswordResetForUsers": "Lösenord har tagots bort från följande användare. För att logga in, använd ett blankt lösenord.", - "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din Jellyfin Server administratör för mer information.", + "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din server administratör för mer information.", "MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.", "MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.", "MessagePluginConfigurationRequiresLocalAccess": "Logga in på din din lokala Jellyfin Server för att konfigurera det här tillägget.", "MessagePluginInstallDisclaimer": "Tillägg skapade av Jellyfin-användare är ett bra sätt att förbättra din Jellyfin-upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din Jellyfin-server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", "MessageReenableUser": "Se nedan för att aktivera igen", "MessageSettingsSaved": "Inställningarna har sparats.", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt Jellyfin bibliotek:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek:", "MessageUnableToConnectToServer": "Vi kunde inte upprätta anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.", "MessageUnsetContentHelp": "Innehåll kommer visas som enkla mappar. För bästa resultat, använd en metadata-hanterare för att ställa in typ av innehåll för undermapparna.", "MessageYouHaveVersionInstalled": "Version {0} är installerad.", "MetadataManager": "Metadata-hanteraren", "MinutesAfter": "minuter efter", "MinutesBefore": "minuter före", - "Mobile": "Mobil / Platta", + "Mobile": "Mobil", "Monday": "Måndag", "MoreFromValue": "Mer från {0}", "MoreUsersCanBeAddedLater": "Flera användare kan skapas senare i Kontrollpanelen.", "MoveLeft": "Vänster", "MoveRight": "Höger", - "MovieLibraryHelp": "Läs om {0}Jellyfins namngivningsguide för filmer{1}.", + "MovieLibraryHelp": "Läs om {0} namngivningsguide för filmer{1}.", "Movies": "Filmer", "Mute": "Tyst", "MySubtitles": "Mina undertexter", @@ -902,7 +902,7 @@ "OneChannel": "En kanal", "OnlyForcedSubtitles": "Endast tvingande undertexter", "OnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.", - "OnlyImageFormats": "Endast image-format (VOBSUB, PGS, SUB/IDX, etc.)", + "OnlyImageFormats": "Endast image-format (VOBSUB, PGS, SUB, etc)", "OptionAdminUsers": "Administratörer", "OptionAlbumArtist": "Albumartist", "OptionAllUsers": "Alla användare", @@ -945,7 +945,7 @@ "OptionDisableUserHelp": "Spärrade användare tillåts ej kontakta servern. Eventuella pågående anslutningar avbryts omedelbart.", "OptionDislikes": "Ogillar", "OptionDisplayFolderView": "Visa en mappvy för att visa enkla mediamappar", - "OptionDisplayFolderViewHelp": "Vid aktivering kommer Jellyfinappar att visa en Mappkategori intill ditt mediabibliotek. Detta är användbart om du har enkla mappvyer.", + "OptionDisplayFolderViewHelp": "Visa mappar jämsides med dina andra media bibliotek. Detta kan vara bra om du vill ha en enkel mapp visning.", "OptionDownloadArtImage": "Grafik", "OptionDownloadBackImage": "Baksida", "OptionDownloadBannerImage": "Banderoll", @@ -982,7 +982,7 @@ "OptionHideUser": "Visa inte den här användaren på inloggningssidorna", "OptionHideUserFromLoginHelp": "Användbart för privata konton eller gömda administratörskonton. Användaren beöver logga in manuellt genom att skriva sitt användarnamn och lösenord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterade undertexter", - "OptionHomeVideos": "Hemvideos & foton", + "OptionHomeVideos": "Foton", "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om \"byte range\" vid omkodning", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Om aktiverad kommer begäran att uppfyllas, men \"byte range\"-rubriken ignoreras.", "OptionImdbRating": "Betyg på IMDB", @@ -1182,7 +1182,7 @@ "TabMusicVideos": "Musikvideor", "TabMyPlugins": "Mina tillägg", "TabNetworks": "TV-bolag", - "TabNfoSettings": "nfo-inställingar", + "TabNfoSettings": "NFO-inställingar", "TabNotifications": "Meddelanden", "TabOther": "Övrigt", "TabParentalControl": "Föräldralås", @@ -1195,7 +1195,7 @@ "TabProfiles": "Profiler", "TabRecordings": "Inspelningar", "TabResponses": "Svar", - "TabResumeSettings": "Återuppta-inställningar", + "TabResumeSettings": "Återuppta", "TabScheduledTasks": "Schemalagda aktiviteter", "TabSeries": "Serie", "TabSettings": "Inställningar", @@ -1221,7 +1221,7 @@ "TrackCount": "{0} spår", "Transcoding": "Omkodning", "Tuesday": "Tisdag", - "TvLibraryHelp": "Läs om {0}Jellyfins namngivningsguide för TV-serier{1}.", + "TvLibraryHelp": "Läs om {0} namngivningsguide för TV-serier{1}.", "UninstallPluginConfirmation": "Är du säker på att du vill avinstallera {0}?", "UninstallPluginHeader": "Avinstallera tillägg", "Unmute": "Muting av", @@ -1259,11 +1259,11 @@ "WelcomeToProject": "Välkommen till Jellyfin!", "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin Server har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", "Writer": "Manusförfattare", - "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla xml-svar.", + "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla XML-svar.", "XmlTvKidsCategoriesHelp": "Program med dessa kategorier kommer visas som program för barn. Separerade med '|'.", "XmlTvMovieCategoriesHelp": "Program med dessa kategorier kommer visas som filmer. Separerade med '|'.", "XmlTvNewsCategoriesHelp": "Program med dessa kategorier kommer visas som nyhetsprogram. Separerade med '|'.", - "XmlTvPathHelp": "En sökväg till en xml-fil för tv. Jellyfin kommer läsa in den här filen och regelbundet leta efter uppdateringar. Du är själv ansvarig för att skapa och uppdatera filen.", + "XmlTvPathHelp": "En sökväg till en XML-fil för tv. Jellyfin kommer läsa in den här filen och regelbundet leta efter uppdateringar. Du är själv ansvarig för att skapa och uppdatera filen.", "XmlTvSportsCategoriesHelp": "Program med dessa kategorier kommer visas som sportprogram. Separerade med '|'.", "Yes": "Ja", "Yesterday": "Igår", @@ -1276,8 +1276,8 @@ "GenreValue": "Genre: {0}", "General": "Allmänt", "FastForward": "Snabbspola", - "Extras": "Mer", - "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av MLTV filen. Kontrollera att filen är tillgänglig och försök igen.", + "Extras": "Extramaterial", + "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XMLTV filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLooping": "Loopa direktsändningar", @@ -1313,12 +1313,12 @@ "CopyStreamURLSuccess": "URL har kopierats.", "CopyStreamURL": "Kopiera Stream URL", "FetchingData": "Hämtar ytterligare data", - "HeaderFetcherSettings": "Hämtarinställningar", + "HeaderFetcherSettings": "Hämtningsinställningar", "ButtonAddImage": "Lägg till bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildinställningar", "Absolute": "Absolut", - "HeaderFavoritePeople": "Favoritpersoner", + "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", "LabelPostProcessor": "Program för efterbehandling:", @@ -1334,7 +1334,7 @@ "LabelAllowedRemoteAddressesMode": "Fjärr-IP-adressfilterläge:", "LabelAllowedRemoteAddresses": "Fjärr-IP-adressfilter:", "HttpsRequiresCert": "För att aktivera säkra anslutningar måste du tillhandahålla ett pålitligt SSL-certifikat, till exempel \"Let's Encrypt\". Vänligen ange ett certifikat eller inaktivera säkra anslutningar.", - "HeaderTypeImageFetchers": "{0} Bildhämtare", + "HeaderTypeImageFetchers": "Bildhämtare", "HeaderLiveTvTunerSetup": "Ställ in Live-TV-mottagare", "ButtonSplit": "Dela upp", "LabelCache": "Cache:", @@ -1359,9 +1359,112 @@ "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", "LabelCorruptedFrames": "Skadade ramar:", - "HeaderParentalRatings": "Föräldrarbetyg", + "HeaderParentalRatings": "Föräldrabetyg", "HeaderNavigation": "Navigering", "HeaderBranding": "Märke", "CopyStreamURLError": "Det vart ett fel vid kopiering av URL.", - "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek." + "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek.", + "Whitelist": "Vitlista", + "VideoRange": "Video räckvidd", + "ValueOneAlbum": "1 album", + "ValueMinutes": "{0} min", + "ValueContainer": "Behållare: {0}", + "UserAgentHelp": "Stöd en egen user-agent HTTP rubrik.", + "Uniform": "Enhetlig", + "Trailers": "Trailers", + "TabTrailers": "Trailers", + "TabServer": "Server", + "TabNetworking": "Nätverk", + "TabMetadata": "Metadata", + "TabInfo": "Info", + "TabAccess": "Tillgång", + "TV": "TV", + "SubtitleOffset": "Undertext justering", + "Smart": "Smart", + "Smaller": "Mindre", + "ShowAdvancedSettings": "Visa avancerade inställningar", + "SeriesDisplayOrderHelp": "Ordna avsnitt via sändnings datum, DVD ordning, eller absolut numrering.", + "SelectAdminUsername": "Vänligen välj ett användarnamn för admin kontot.", + "SaveSubtitlesIntoMediaFoldersHelp": "Spara undertexter vid video filer kommer göra det mer enklare att hantera.", + "Rewind": "Spola tillbaka", + "RequiredForAllRemoteConnections": "Krävs för alla fjärr kopplingar", + "RecordingPathChangeMessage": "Ändring av din inspelnings mapp kommer inte migrera existerande inspelningar från gamla platsen till den nya. Du behöver flytta dom manuellt om så önskas.", + "PreferredNotRequired": "Föredragen, men inte krävande", + "PlaybackData": "Uppspelnings Data", + "PasswordResetProviderHelp": "Välj en Lösenords Återställnings Provider att använda när denna användare begär att återställa lösenordet", + "OptionThumbCard": "Miniatyr kort", + "OptionThumb": "Miniatyr", + "OptionSaveMetadataAsHiddenHelp": "Ändring av detta kommer att tilldelas till ny metadata som sparas. Existerande metadata filer kommer att uppdateras nästa gång dom sparas av Jellyfin Server.", + "OptionResElement": "res element", + "OptionRegex": "Regex", + "OptionRandom": "Slumpmässig", + "OptionProtocolHttp": "HTTP", + "OptionProfileVideo": "Video", + "OptionPosterCard": "Omslags kort", + "OptionPoster": "Omslag", + "OptionMax": "Max", + "OptionLoginAttemptsBeforeLockoutHelp": "Ett värde av noll menas att använda standard av tre försök för normala användare och fem för administratörer. -1 kommer att stänga av denna funktion.", + "OptionLoginAttemptsBeforeLockout": "Avgör hur många felaktiga inloggnings försök som kan utföras innan kontot låses.", + "OptionList": "List", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionHasTrailer": "Trailer", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionBlockTrailers": "Trailers", + "OptionBanner": "Banner", + "OptionAutomatic": "Auto", + "OptionAuto": "Auto", + "OptionArtist": "Artist", + "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på fjärr media källor (som LiveTV)", + "OptionAlbum": "Album", + "Option3D": "3D", + "Normal": "Normal", + "NoCreatedLibraries": "Ser ut som du inte har skapat några bibliotek än. {0}Vill du skapa ett nu?{1}", + "NextUp": "Nästa på tur", + "MusicVideo": "Musik Video", + "MusicLibraryHelp": "Granska {0}musik döpnings guiden{1}.", + "MusicArtist": "Musik Artist", + "MusicAlbum": "Musik Album", + "MoreMediaInfo": "Media Info", + "MetadataSettingChangeHelp": "Ändring av metadata inställningar kommer att ske på nytt innehåll som är tillagt framledes. För att uppdatera existerat innehåll, öppna detalj skärmen och tryck på uppdatera knappen, eller utför bulk uppdateringar med metadata hanteraren.", + "Metadata": "Metadata", + "MessageNoServersAvailable": "Inga servrar har hittats med automatiska server sökningen.", + "MessageNoCollectionsAvailable": "Samlingar tillåter dig att njuta av personlig gruppering av Filmer, Serier och Albums. Tryck på + knapen för att skapa samlingar.", + "MessageImageTypeNotSelected": "Vänligen välj en bild typ från rullningslisten.", + "MessageImageFileTypeAllowed": "Endast JPEG och PNG filer stöds.", + "MessageConfirmAppExit": "Vill du avsluta?", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Undertext", + "MediaInfoStreamTypeEmbeddedImage": "Inbäddad Bild", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeAudio": "Ljud", + "MediaInfoSoftware": "Mjukvara", + "MediaInfoLayout": "Design", + "MediaInfoContainer": "Behållare", + "ManageLibrary": "Hantera bibliotek", + "Live": "Live", + "LeaveBlankToNotSetAPassword": "Du kan lämna detta fält tomt för att inte ange lösenord.", + "LaunchWebAppOnStartupHelp": "Öppna webb klient i din standard webbläsare när servern startas. Detta kommer inte ske när du använder starta om servern funktionen.", + "LaunchWebAppOnStartup": "Starta webb gränssnitt när servern startas", + "LanNetworksHelp": "Kommatecken separerad lista på IP adresser eller IP/nätmask inlägg för nätverk som anses vara på lokala nätverket för att tvinga fram bandbredd begränsningar. Om angett, alla andra IP adresser kommer att anses vara på ett externt nätverk och kommer tilldelas till det externa bandbredd begränsningarna. Om lämnat tomt, endast serverns subnet anses vara på det lokala nätverket.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelWeb": "Webb:", + "LabelVideoResolution": "Video upplösning:", + "LabelVideoCodec": "Video codec:", + "LabelVideoBitrate": "Video bitrate:", + "LabelVideo": "Video:", + "DashboardArchitecture": "Arkitektur: {0}", + "DashboardOperatingSystem": "Operativsystem: {0}", + "DashboardServerName": "Server: {0}", + "DashboardVersionNumber": "Version: {0}", + "LabelVersion": "Version:", + "LabelUserLoginAttemptsBeforeLockout": "Felaktiga inloggnings försök innan användare blir utelåst:", + "LabelUserAgent": "Användar agent:", + "LabelTypeText": "Text", + "LabelTypeMetadataDownloaders": "{0} metadata nerladdare:", + "LabelTranscodingProgress": "Omkodning progress:", + "LabelTranscodingFramerate": "Omkodning framerate:", + "LabelTranscodes": "Omkodningar:", + "LabelTranscodePath": "Omkodning sökväg:" } From 73f625ee0234e91c214b8d6c399cb7a1c1c570de Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:55:07 +0000 Subject: [PATCH 111/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1870fad272..5f3929da7c 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -200,7 +200,7 @@ "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", "EnableThemeSongs": "Signaturmelodier", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", - "EnableThemeVideos": "Tema-videos", + "EnableThemeVideos": "Tema-videor", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", @@ -208,7 +208,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Det gick inte att lägga till sökvägen. Kontrollera att sökvägen är korrekt och att Jellyfin Server har rättigheter till sökvägen.", "ErrorAddingTunerDevice": "Det gick inte att lågga till den här TV-mottagaren. Säkerställ att den går att nå och försök igen.", "ErrorDeletingItem": "Det gick inte att ta bort det här objektet från Jellyfin-servern. Kontrollera att Jellyfin-servern har skrivrättigheter till media-mappen och försök igen.", - "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav tv-sortimentet. Se till så att uppgifterna stämmer och försök igen.", + "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav TV-sortimentet. Se till så att uppgifterna stämmer och försök igen.", "ErrorMessageStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Om inga lineups finns tillgängliga, kolla så att användarnamn, lösenord och postnummer stämmer.", "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", From 10891bf6e251a4019204da184919f8502719b76c Mon Sep 17 00:00:00 2001 From: Jonas Lundberg Date: Sat, 22 Feb 2020 09:55:33 +0000 Subject: [PATCH 112/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 5f3929da7c..a866a75775 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -320,7 +320,7 @@ "HeaderFrequentlyPlayed": "Ofta spelade", "HeaderGenres": "Genrer", "HeaderGuideProviders": "Källor för programguide", - "HeaderHttpHeaders": "HTTP-rubriker", + "HeaderHttpHeaders": "HTTP headers", "HeaderIdentification": "Identifiering", "HeaderIdentificationCriteriaHelp": "Skriv in minst ett kriterie för identifiering.", "HeaderIdentificationHeader": "ID-rubrik", @@ -1316,7 +1316,7 @@ "HeaderFetcherSettings": "Hämtningsinställningar", "ButtonAddImage": "Lägg till bild", "HeaderStopRecording": "Stoppa inspelning", - "HeaderImageOptions": "Bildinställningar", + "HeaderImageOptions": "Bildalternativ", "Absolute": "Absolut", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", From ff914d715e89a44118380af5963a7efed518d0b4 Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:56:20 +0000 Subject: [PATCH 113/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index a866a75775..50fb828018 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -523,7 +523,7 @@ "LabelDefaultUser": "Förvald användare:", "LabelDefaultUserHelp": "Anger vilket användarbibliotek som skall visas på anslutna enheter. Denna inställning kan ändras på enhetsbasis med hjälp av en enhetsprofiler.", "LabelDeviceDescription": "Enhetsbeskrivning", - "LabelDidlMode": "Didl-läge:", + "LabelDidlMode": "DIDL-läge:", "LabelDiscNumber": "Skivnummer:", "LabelDisplayLanguage": "Visningsspråk:", "LabelDisplayLanguageHelp": "Att översätta Jellyfin är ett pågående projekt.", @@ -936,7 +936,7 @@ "OptionCriticRating": "Kritikerbetyg", "OptionCustomUsers": "Anpassad", "OptionDaily": "Dagligen", - "OptionDateAdded": "Inlagd den", + "OptionDateAdded": "Tillagd den", "OptionDateAddedFileTime": "Använd datum då filen skapades", "OptionDateAddedImportTime": "Använd datum för inläsning i biblioteket", "OptionDatePlayed": "Senast visad", From bfb2b618ef0a03c585e5b08bbce3e186f64ff199 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:56:30 +0000 Subject: [PATCH 114/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 50fb828018..33e8a5d293 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1,5 +1,5 @@ { - "AccessRestrictedTryAgainLater": "Åtkomst är begränsad. Försök igen senare.", + "AccessRestrictedTryAgainLater": "För närvarande är åtkomst begränsad. Försök igen senare.", "Actor": "Skådespelare", "Add": "Lägg till", "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dom och sen högerklicka eller tappa upp menyn för att lägga till dom.", @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0} boknamngivningsguide{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguiden{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) på vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -76,7 +76,7 @@ "ButtonHome": "Hem", "ButtonLearnMore": "Läs mer", "ButtonLibraryAccess": "Biblioteksåtkomst", - "ButtonManualLogin": "Manuell inloggning:", + "ButtonManualLogin": "Manuell inloggning", "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", "ButtonNew": "Nytillkommet", @@ -198,7 +198,7 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Signaturmelodier", + "EnableThemeSongs": "Signaturmelodi", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", "EnableThemeVideos": "Tema-videor", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", @@ -287,7 +287,7 @@ "HeaderContainerProfile": "Behållareprofil", "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", "HeaderContinueListening": "Fortsätt lyssna på", - "HeaderContinueWatching": "Fortsätt titta", + "HeaderContinueWatching": "Fortsätt kolla", "HeaderCustomDlnaProfiles": "Anpassade profiler", "HeaderDateIssued": "Utgivningsdatum", "HeaderDefaultRecordingSettings": "Standard inspelningsinställningar", @@ -1209,7 +1209,7 @@ "Tags": "Etiketter", "TagsValue": "Etiketter: {0}", "TellUsAboutYourself": "Berätta om dig själv", - "ThemeSongs": "Vinjetter", + "ThemeSongs": "Signaturmelodier", "ThemeVideos": "Temavideos", "TheseSettingsAffectSubtitlesOnThisDevice": "Dessa inställningar påverkar undertexter på den här enheten", "ThisWizardWillGuideYou": "Den här guiden hjälper dig att göra de första inställningarna. För att börja var vänlig välj önskat språk.", @@ -1257,7 +1257,7 @@ "Watched": "Sedd", "Wednesday": "Onsdag", "WelcomeToProject": "Välkommen till Jellyfin!", - "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin Server har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", + "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", "Writer": "Manusförfattare", "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla XML-svar.", "XmlTvKidsCategoriesHelp": "Program med dessa kategorier kommer visas som program för barn. Separerade med '|'.", @@ -1294,12 +1294,12 @@ "ButtonGuide": "Guide", "Blacklist": "Svartlista", "Auto": "Automatisk", - "AuthProviderHelp": "Välj en autentiseringsleverantör för att autentisera denna användares lösenord.", + "AuthProviderHelp": "Välj en autentiserings leverantör som ska användas för att autentisera denna användarens lösenord.", "Ascending": "Stigande", "AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.", "AllowMediaConversionHelp": "Tillåt eller neka tillgång till media konvertings funktionen.", "AllowMediaConversion": "Tillåt media konvertering", - "Alerts": "Notiser", + "Alerts": "Alarm", "HeaderMedia": "Media", "HeaderHome": "Hem", "HeaderFavoriteVideos": "Favoritvideor", @@ -1313,8 +1313,8 @@ "CopyStreamURLSuccess": "URL har kopierats.", "CopyStreamURL": "Kopiera Stream URL", "FetchingData": "Hämtar ytterligare data", - "HeaderFetcherSettings": "Hämtningsinställningar", - "ButtonAddImage": "Lägg till bild", + "HeaderFetcherSettings": "Hämtar inställningar", + "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", "Absolute": "Absolut", @@ -1327,7 +1327,7 @@ "LabelMetadata": "Metadata:", "LabelFormat": "Format:", "LabelFolder": "Mapp:", - "LabelBaseUrl": "Grund URL:", + "LabelBaseUrl": "Bas-RL:", "LabelAuthProvider": "Autentiseringsleverantör:", "LabelAudioCodec": "Ljudkodek:", "LabelAudioChannels": "Ljudkanaler:", From 5ff1eb98012ac411161142fed55715c5e06a3343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85skar=20Andersson?= Date: Sat, 22 Feb 2020 09:56:43 +0000 Subject: [PATCH 115/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 33e8a5d293..0b5c464f82 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -2,13 +2,13 @@ "AccessRestrictedTryAgainLater": "För närvarande är åtkomst begränsad. Försök igen senare.", "Actor": "Skådespelare", "Add": "Lägg till", - "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dom och sen högerklicka eller tappa upp menyn för att lägga till dom.", + "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dem och sen högerklicka eller tappa upp menyn för att lägga till dem.", "AddToCollection": "Lägg till samling", "AddToPlayQueue": "Lägg till i spelkö", "AddToPlaylist": "Lägg till i spellista", "AddedOnValue": "Tillagd {0}", "AdditionalNotificationServices": "Sök efter fler meddelandetillägg i tilläggskatalogen.", - "AirDate": "Sändningstid", + "AirDate": "Sändningsdatum", "Aired": "Sändes", "Albums": "Album", "All": "Alla", @@ -1354,7 +1354,7 @@ "LabelAudioSampleRate": "Ljudprovfrekvens:", "LabelAudioBitrate": "Ljudbithastighet", "LabelAudioBitDepth": "Ljudbitdjup", - "LabelPlayMethod": "Uppspelningsmetod:", + "LabelPlayMethod": "Spelningsmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", From 6de77f364b22898e0874a00c2c1923f99d6647a4 Mon Sep 17 00:00:00 2001 From: Grasfer Date: Sat, 22 Feb 2020 09:57:25 +0000 Subject: [PATCH 116/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 0b5c464f82..b290023005 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1317,7 +1317,7 @@ "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", - "Absolute": "Absolut", + "Absolute": "Total", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", From c762d32040ac214015ec73535f6d4a3947894e3a Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:58:26 +0000 Subject: [PATCH 117/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index b290023005..1a2d034104 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguiden{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguide{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc) och vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -1317,7 +1317,7 @@ "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", - "Absolute": "Total", + "Absolute": "komplett", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", @@ -1354,7 +1354,7 @@ "LabelAudioSampleRate": "Ljudprovfrekvens:", "LabelAudioBitrate": "Ljudbithastighet", "LabelAudioBitDepth": "Ljudbitdjup", - "LabelPlayMethod": "Spelningsmetod:", + "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", From a897460d8b567322d0db7bf2d94843594d3a4162 Mon Sep 17 00:00:00 2001 From: Jonas Lundberg Date: Sat, 22 Feb 2020 09:59:06 +0000 Subject: [PATCH 118/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1a2d034104..2efe8d0fc0 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -46,7 +46,7 @@ "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc) och vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) och vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", From a57e9c4f40728a75454c26972cf0925c24213cbd Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:59:16 +0000 Subject: [PATCH 119/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 2efe8d0fc0..74830694d0 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", + "AllowHWTranscodingHelp": "Tillåt mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From ac02fb2d239b2a732303abf89e2f9011aa2ac448 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 10:00:00 +0000 Subject: [PATCH 120/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 74830694d0..cc6bc757fa 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -404,7 +404,7 @@ "HeaderSelectTranscodingPath": "Välj plats för mellanlagring vid omkodning", "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för omkodarens mellanlagring. Katalogen måste vara tillgänglig för skrivning.", "HeaderSendMessage": "Skicka meddelande", - "HeaderSeries": "Serie:", + "HeaderSeries": "Serier", "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Serverinställningar", @@ -506,7 +506,7 @@ "LabelCriticRating": "Kritikerbetyg:", "LabelCurrentPassword": "Nuvarande lösenord:", "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", - "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format", + "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", "LabelCustomCss": "Egen CSS:", "LabelCustomCssHelp": "Applicera din egen css till webbgränssnittet.", "LabelCustomDeviceDisplayName": "Visningsnamn:", @@ -532,7 +532,7 @@ "LabelDisplayName": "Visningsnamn:", "LabelDisplayOrder": "Visningsordning:", "LabelDisplaySpecialsWithinSeasons": "Visa specialavsnitt i de säsonger de sändes i", - "LabelDownMixAudioScale": "Höj nivån vid nedmixning av ljud", + "LabelDownMixAudioScale": "Höj nivån vid nedmixning av ljud:", "LabelDownMixAudioScaleHelp": "Höj nivån vid nedmixning. Sätt värdet till 1 för att behålla den ursprungliga nivån.", "LabelDownloadLanguages": "Språk att hämta:", "LabelDropImageHere": "Släpp en bild här, eller klicka för att bläddra.", @@ -555,7 +555,7 @@ "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll.", "LabelEnableHardwareDecodingFor": "Aktivera hårdvaruomkodning för:", "LabelEnableRealtimeMonitor": "Aktivera bevakning av mappar i realtid", - "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta)", + "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta).", "LabelEnableSingleImageInDidlLimit": "Begränsa till en inbäddad bild", "LabelEnableSingleImageInDidlLimitHelp": "Visa enheter kommer inte renderas ordentligt om flera bilder bäddas in i Didl.", "LabelEndDate": "Slutdatum:", @@ -569,7 +569,7 @@ "LabelFinish": "Klart", "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", - "LabelFriendlyName": "Visningsnamn", + "LabelFriendlyName": "Visningsnamn:", "LabelServerNameHelp": "Det här namnet används för att identifiera servern, om det lämnas tomt kommer datorns namn att användas.", "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", @@ -618,14 +618,14 @@ "LabelMatchType": "Matchningstyp:", "LabelMaxBackdropsPerItem": "Högsta antal fondbilder per objekt:", "LabelMaxChromecastBitrate": "Strömningskvalitet för Chromecast:", - "LabelMaxParentalRating": "Högsta tillåtna åldersgräns", - "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent", + "LabelMaxParentalRating": "Högsta tillåtna åldersgräns:", + "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent:", "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt.", "LabelMaxScreenshotsPerItem": "Högsta antal skärmdumpar per objekt:", "LabelMaxStreamingBitrate": "Maximal strömningskvalite:", "LabelMaxStreamingBitrateHelp": "Ange högsta bithastighet för strömning.", - "LabelMessageText": "Meddelandetext", - "LabelMessageTitle": "Meddelandetitel", + "LabelMessageText": "Meddelandetext:", + "LabelMessageTitle": "Meddelandetitel:", "LabelMetadataDownloadLanguage": "Önskat språk:", "LabelMetadataDownloadersHelp": "Aktivera och rangordna dina hämtare baserat på prioritet. Lägre prioriterade hämtare används endast för att fylla i saknad information.", "LabelMetadataPath": "Plats för metadata:", @@ -660,7 +660,7 @@ "LabelNext": "Nästa", "LabelNotificationEnabled": "Aktivera denna meddelandetyp", "LabelNumber": "Nr:", - "LabelNumberOfGuideDays": "Antal dagars tablå att hämta", + "LabelNumberOfGuideDays": "Antal dagars tablå att hämta:", "LabelNumberOfGuideDaysHelp": "Hämtning av en längre periods tablå ger möjlighet att boka inspelningar och se program längre fram i tiden, men ger längre nedladdningstid. \"Auto\" väljer baserat på antalet kanaler.", "LabelOptionalNetworkPath": "(Valfri) Delad nätverksmapp:", "LabelOptionalNetworkPathHelp": "Om denna mappen delas på ditt nätverk, kan den delade sökvägen tillåta Jellyfin-appar på andra enheter att streama mediafiler direkt.", @@ -707,7 +707,7 @@ "LabelRuntimeMinutes": "Speltid (min):", "LabelSaveLocalMetadata": "Spara grafik till mediamapparna", "LabelSaveLocalMetadataHelp": "Om grafik sparas tillsammans med media är de enkelt åtkomliga för redigering.", - "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}", + "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}.", "LabelScreensaver": "Skärmsläckare:", "LabelSeasonNumber": "Säsongsnummer:", "LabelSelectFolderGroups": "Gruppera automatiskt innehåll från dessa mappar i vyer, t ex Filmer, Musik eller TV:", @@ -719,18 +719,18 @@ "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier (valfri):", "LabelServerHost": "Värd:", "LabelServerHostHelp": "192.168.1.100:8096 eller https://min.server.com", - "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar", + "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar:", "LabelSkin": "Skal:", "LabelSkipBackLength": "'Hoppa bakåt'-längd:", "LabelSkipForwardLength": "'Hoppa framåt'-längd:", - "LabelSkipIfAudioTrackPresent": "Hoppa över om det förvalda ljudspårets språk är samma som det hämtade.", + "LabelSkipIfAudioTrackPresent": "Hoppa över om det förvalda ljudspårets språk är samma som det hämtade", "LabelSkipIfAudioTrackPresentHelp": "Bocka ur denna för att ge undertexter åt alla videor oavsett ljudspårets språk.", "LabelSkipIfGraphicalSubsPresent": "Hoppa över om videofilen redan innehåller inbäddade undertexter", "LabelSkipIfGraphicalSubsPresentHelp": "Att även ha externa undertexter resulterar i en effektivare uppspelning och minskar risken för omkodning.", "LabelSonyAggregationFlags": "\"Aggregation flags\" för Sony:", "LabelSonyAggregationFlagsHelp": "Anger innehållet i elementet aggregationFlags i namnutrymmet urn:schemas-sonycom:av.", "LabelSortBy": "Sortera efter:", - "LabelSortOrder": "Sortering", + "LabelSortOrder": "Sortering:", "LabelSortTitle": "Sorteringstitel:", "LabelSoundEffects": "Ljudeffekter:", "LabelSource": "Källa:", @@ -745,7 +745,7 @@ "LabelSubtitles": "Undertexter:", "LabelSupportedMediaTypes": "Mediaformat som stöds:", "LabelTVHomeScreen": "Hemskärm i TV-läge:", - "LabelTag": "Etikett", + "LabelTag": "Etikett:", "LabelTagline": "Slogan:", "LabelTextBackgroundColor": "Bakgrundsfärg för text:", "LabelTextColor": "Textfärg:", @@ -754,7 +754,7 @@ "LabelTime": "Tid:", "LabelTimeLimitHours": "Tidsbegränsning (timmar):", "LabelTitle": "Titel:", - "LabelTrackNumber": "Spår nr", + "LabelTrackNumber": "Spår nr:", "LabelTranscodingAudioCodec": "Ljudkodning:", "LabelTranscodingContainer": "Behållare:", "LabelTranscodingTempPathHelp": "Ange en egen sökväg där omkodningar skall sparas för klienter. Lämna blankt för att använda förvald plats.", @@ -799,7 +799,7 @@ "MarkUnplayed": "Markera som ospelad", "MaxParentalRatingHelp": "Innehåll med högre gräns visas ej för den här användaren.", "MediaInfoAnamorphic": "Anamorfisk", - "MediaInfoAspectRatio": "Bildförhållande:", + "MediaInfoAspectRatio": "Bildförhållande", "MediaInfoBitDepth": "Färgdjup", "MediaInfoBitrate": "Bithastighet", "MediaInfoChannels": "Kanaler", @@ -919,7 +919,7 @@ "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktas som delade tills en användare börjar kontrollera den.", "OptionAllowSyncTranscoding": "Tillåt nedladdning som kräver omkodning", "OptionAllowUserToManageServer": "Tillåt denna användare att administrera servern", - "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning.", + "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning", "OptionAllowVideoPlaybackTranscoding": "Tillåt videouppspelning som kräver omkodning", "OptionAscending": "Stigande", "OptionAutomaticallyGroupSeries": "Slå ihop serier automatiskt som ligger utspritt under flera kataloger", @@ -975,7 +975,7 @@ "OptionExtractChapterImage": "Aktivera extrahering av kapitelbilder", "OptionFavorite": "Favoriter", "OptionFriday": "Fredag", - "OptionHasSpecialFeatures": "Extramaterial:", + "OptionHasSpecialFeatures": "Extramaterial", "OptionHasSubtitles": "Undertexter", "OptionHasThemeSong": "Ledmotiv", "OptionHasThemeVideo": "Temavideo", @@ -1082,7 +1082,7 @@ "Record": "Spela in", "RecordSeries": "Spela in serie", "RecordingCancelled": "Inspelning avbruten.", - "RecordingScheduled": "Inspelning schemalagd", + "RecordingScheduled": "Inspelning schemalagd.", "Recordings": "Inspelningar", "Refresh": "Uppdatera", "RefreshDialogHelp": "Metadata uppdateras baserat på inställningar och internettjänster som har aktiverats under Jellyfin servers kontrollpanel.", @@ -1352,8 +1352,8 @@ "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", "LabelDroppedFrames": "Tappade ramar:", "LabelAudioSampleRate": "Ljudprovfrekvens:", - "LabelAudioBitrate": "Ljudbithastighet", - "LabelAudioBitDepth": "Ljudbitdjup", + "LabelAudioBitrate": "Ljudbithastighet:", + "LabelAudioBitDepth": "Ljudbitdjup:", "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", From 519ca6ba0b3542a15431eb7bae2070ee4d541459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85skar=20Andersson?= Date: Sat, 22 Feb 2020 10:06:36 +0000 Subject: [PATCH 121/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index cc6bc757fa..1d2a223cdb 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", + "AllowHWTranscodingHelp": "Låt TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From 598402d9539a3fb285dd8dacf4527647e02a24fa Mon Sep 17 00:00:00 2001 From: h1nk <12993584+h1nk@users.noreply.github.com> Date: Sat, 22 Feb 2020 11:47:03 -0500 Subject: [PATCH 122/449] Add missing final newlines Used this one-liner: https://unix.stackexchange.com/a/161853 --- .gitignore | 2 +- .stylelintrc | 2 +- src/availableplugins.html | 2 +- src/components/alert.js | 2 +- src/components/alphanumericshortcuts/alphanumericshortcuts.js | 2 +- src/components/chromecast/chromecasthelpers.js | 2 +- src/components/confirm/nativeconfirm.js | 2 +- src/components/dialog/dialog.template.html | 2 +- src/components/dialogHelper/dialogHelper.js | 2 +- src/components/dom.js | 2 +- .../emby-itemrefreshindicator/emby-itemrefreshindicator.js | 2 +- src/components/emby-itemscontainer/emby-itemscontainer.js | 2 +- src/components/emby-scroller/emby-scroller.js | 2 +- src/components/emby-tabs/emby-tabs.js | 2 +- src/components/fetchhelper.js | 2 +- src/components/filedownloader.js | 2 +- src/components/filesystem.js | 2 +- src/components/filtermenu/filtermenu.template.html | 2 +- src/components/guide/guide-settings.js | 2 +- src/components/headroom/headroom.js | 2 +- .../homescreensettings/homescreensettings.template.html | 2 +- src/components/htmlMediaHelper.js | 2 +- src/components/images/imageFetcher.js | 2 +- src/components/images/imageLoader.js | 2 +- src/components/itemsrefresher.js | 2 +- src/components/lazyloader/lazyloader-intersectionobserver.js | 2 +- src/components/lazyloader/lazyloader-scroll.js | 2 +- .../libraryoptionseditor/libraryoptionseditor.template.html | 2 +- src/components/loading/loading.js | 2 +- src/components/maintabsmanager.js | 2 +- src/components/metadataeditor/personeditor.js | 2 +- src/components/multidownload.js | 2 +- src/components/packagemanager.js | 2 +- src/components/photoplayer/plugin.js | 2 +- src/components/playback/experimentalwarnings.js | 2 +- src/components/playback/playaccessvalidation.js | 2 +- src/components/playback/playbackorientation.js | 2 +- src/components/playback/playmethodhelper.js | 2 +- src/components/playback/playqueuemanager.js | 2 +- src/components/playback/remotecontrolautoplay.js | 2 +- src/components/playbacksettings/playbacksettings.js | 2 +- src/components/playbacksettings/playbacksettings.template.html | 2 +- src/components/playmenu.js | 2 +- src/components/pluginManager.js | 2 +- src/components/prompt/nativeprompt.js | 2 +- src/components/prompt/prompt.js | 2 +- src/components/qualityoptions.js | 2 +- src/components/recordingcreator/recordingcreator.js | 2 +- src/components/recordingcreator/recordingeditor.js | 2 +- src/components/recordingcreator/recordinghelper.js | 2 +- src/components/recordingcreator/seriesrecordingeditor.js | 2 +- src/components/sanitizefilename.js | 2 +- src/components/scroller.js | 2 +- src/components/scrollhelper.js | 2 +- src/components/search/searchfields.js | 2 +- src/components/search/searchresults.template.html | 2 +- src/components/serverNotifications/gamepadtokey.js | 2 +- src/components/serverNotifications/mouseManager.js | 2 +- src/components/serverRestartDialog.js | 2 +- src/components/serviceworker/notifications.js | 2 +- src/components/sessionplayer.js | 2 +- src/components/shell.js | 2 +- src/components/shortcuts.js | 2 +- src/components/slideshow/slideshow.js | 2 +- src/components/sortmenu/sortmenu.template.html | 2 +- src/components/subtitlesettings/subtitleappearancehelper.js | 2 +- src/components/subtitlesettings/subtitlesettings.js | 2 +- src/components/subtitlesettings/subtitlesettings.template.html | 2 +- src/components/subtitlesync/subtitlesync.template.html | 2 +- src/components/tabbedview/tabbedview.js | 2 +- src/components/thememediaplayer.js | 2 +- src/components/toast/toast.js | 2 +- src/components/touchhelper.js | 2 +- src/components/tvproviders/schedulesdirect.template.html | 2 +- src/components/upnextdialog/upnextdialog.js | 2 +- src/components/userdatabuttons/emby-playstatebutton.js | 2 +- src/components/viewsettings/viewsettings.template.html | 2 +- src/components/visibleinviewport.js | 2 +- src/components/youtubeplayer/plugin.js | 2 +- src/controllers/dashboard/logs.js | 2 +- src/controllers/librarydisplay.js | 2 +- src/controllers/metadataimagespage.js | 2 +- src/elements/emby-collapse/emby-collapse.js | 2 +- src/elements/emby-input/emby-input.js | 2 +- src/elements/emby-progressring/emby-progressring.js | 2 +- src/elements/emby-progressring/emby-progressring.template.html | 2 +- src/elements/emby-radio/emby-radio.js | 2 +- src/elements/emby-textarea/emby-textarea.js | 2 +- src/elements/emby-toggle/emby-toggle.js | 2 +- src/installedplugins.html | 2 +- src/legacy/dashboard.js | 2 +- src/legacy/fnchecked.js | 2 +- src/legacy/selectmenu.js | 2 +- src/libraries/apiclient/apiclient.js | 2 +- src/libraries/apiclient/appStorage.js | 2 +- src/libraries/apiclient/credentialprovider.js | 2 +- src/libraries/apiclient/events.js | 2 +- src/libraries/apiclient/package.json | 2 +- src/libraries/apiclient/sync/filerepository.js | 2 +- src/libraries/apiclient/sync/itemrepository.js | 2 +- src/libraries/apiclient/sync/localsync.js | 2 +- src/libraries/apiclient/sync/mediasync.js | 2 +- src/libraries/apiclient/sync/multiserversync.js | 2 +- src/libraries/apiclient/sync/serversync.js | 2 +- src/libraries/apiclient/sync/transfermanager.js | 2 +- src/libraries/apiclient/sync/useractionrepository.js | 2 +- src/libraries/pagejs/page.js | 2 +- src/libraries/query-string/index.js | 2 +- src/libraries/query-string/test.js | 2 +- src/library.html | 2 +- src/livetvsettings.html | 2 +- src/log.html | 2 +- src/metadataimages.html | 2 +- src/metadatanfo.html | 2 +- src/mypreferencesdisplay.html | 2 +- src/mypreferenceshome.html | 2 +- src/notificationsetting.html | 2 +- src/playbackconfiguration.html | 2 +- src/robots.txt | 2 +- src/scripts/browser.js | 2 +- src/scripts/datetime.js | 2 +- src/serviceworker.js | 2 +- 122 files changed, 122 insertions(+), 122 deletions(-) diff --git a/.gitignore b/.gitignore index 2e12adf220..10b2d24f42 100644 --- a/.gitignore +++ b/.gitignore @@ -575,4 +575,4 @@ healthchecksdb # End of https://www.gitignore.io/api/node,rider,macos,linux,windows,visualstudio,visualstudiocode # dist for webpack output -dist \ No newline at end of file +dist diff --git a/.stylelintrc b/.stylelintrc index 93e3592099..a13acf428d 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -140,4 +140,4 @@ "value-list-comma-space-before": "never", "value-list-max-empty-lines": 0, } -} \ No newline at end of file +} diff --git a/src/availableplugins.html b/src/availableplugins.html index ea1147fbfd..6c9b89c26d 100644 --- a/src/availableplugins.html +++ b/src/availableplugins.html @@ -5,4 +5,4 @@
-
\ No newline at end of file +
diff --git a/src/components/alert.js b/src/components/alert.js index 8a4dc11c20..8a37ac1845 100644 --- a/src/components/alert.js +++ b/src/components/alert.js @@ -42,4 +42,4 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) return Promise.resolve(); }; -}); \ No newline at end of file +}); diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 03d0118cbe..0c62add1e1 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -127,4 +127,4 @@ define(['dom', 'focusManager'], function (dom, focusManager) { }; return AlphaNumericShortcuts; -}); \ No newline at end of file +}); diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9d6f811cb1..f85bf4d307 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -230,4 +230,4 @@ define(['events'], function (events) { return { getServerAddress: getServerAddress }; -}); \ No newline at end of file +}); diff --git a/src/components/confirm/nativeconfirm.js b/src/components/confirm/nativeconfirm.js index fd586ad1d5..7d72bc5eaf 100644 --- a/src/components/confirm/nativeconfirm.js +++ b/src/components/confirm/nativeconfirm.js @@ -24,4 +24,4 @@ define([], function () { return Promise.reject(); } }; -}); \ No newline at end of file +}); diff --git a/src/components/dialog/dialog.template.html b/src/components/dialog/dialog.template.html index eae210d14e..bee0ef7f73 100644 --- a/src/components/dialog/dialog.template.html +++ b/src/components/dialog/dialog.template.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..4796f880fb 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -481,4 +481,4 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', globalOnOpenCallback = val; } }; -}); \ No newline at end of file +}); diff --git a/src/components/dom.js b/src/components/dom.js index da03b87428..fb2b377a19 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -178,4 +178,4 @@ define([], function () { whichAnimationEvent: whichAnimationEvent, whichAnimationCancelEvent: whichAnimationCancelEvent }; -}); \ No newline at end of file +}); diff --git a/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js b/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js index be50abeb87..9864dbbb67 100644 --- a/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js +++ b/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js @@ -74,4 +74,4 @@ define(['emby-progressring', 'dom', 'serverNotifications', 'events', 'registerEl prototype: EmbyItemRefreshIndicatorPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-itemscontainer/emby-itemscontainer.js b/src/components/emby-itemscontainer/emby-itemscontainer.js index 7cfb3e4a4a..fdb565b6e9 100644 --- a/src/components/emby-itemscontainer/emby-itemscontainer.js +++ b/src/components/emby-itemscontainer/emby-itemscontainer.js @@ -479,4 +479,4 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', prototype: ItemsContainerPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-scroller/emby-scroller.js b/src/components/emby-scroller/emby-scroller.js index f943047f52..cb5bae818f 100644 --- a/src/components/emby-scroller/emby-scroller.js +++ b/src/components/emby-scroller/emby-scroller.js @@ -206,4 +206,4 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro prototype: ScrollerPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-tabs/emby-tabs.js b/src/components/emby-tabs/emby-tabs.js index 9fedf0bfe9..fa5979fa4c 100644 --- a/src/components/emby-tabs/emby-tabs.js +++ b/src/components/emby-tabs/emby-tabs.js @@ -338,4 +338,4 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register prototype: EmbyTabs, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index bb7f21e75e..6a77d10560 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -129,4 +129,4 @@ define([], function () { getFetchPromise: getFetchPromise, ajax: ajax }; -}); \ No newline at end of file +}); diff --git a/src/components/filedownloader.js b/src/components/filedownloader.js index c5810b460e..08b6176a02 100644 --- a/src/components/filedownloader.js +++ b/src/components/filedownloader.js @@ -15,4 +15,4 @@ define(['multi-download'], function (multiDownload) { } } }; -}); \ No newline at end of file +}); diff --git a/src/components/filesystem.js b/src/components/filesystem.js index 3ab759b28a..aac697415e 100644 --- a/src/components/filesystem.js +++ b/src/components/filesystem.js @@ -15,4 +15,4 @@ define([], function () { return Promise.reject(); } }; -}); \ No newline at end of file +}); diff --git a/src/components/filtermenu/filtermenu.template.html b/src/components/filtermenu/filtermenu.template.html index 1cadab2d1f..1a5545baa3 100644 --- a/src/components/filtermenu/filtermenu.template.html +++ b/src/components/filtermenu/filtermenu.template.html @@ -105,4 +105,4 @@
-
\ No newline at end of file +
diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 9ee43be9f1..b31a3d1086 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -171,4 +171,4 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/headroom/headroom.js b/src/components/headroom/headroom.js index 9c058a8e82..3c0ada3ce9 100644 --- a/src/components/headroom/headroom.js +++ b/src/components/headroom/headroom.js @@ -340,4 +340,4 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay }; return Headroom; -}); \ No newline at end of file +}); diff --git a/src/components/homescreensettings/homescreensettings.template.html b/src/components/homescreensettings/homescreensettings.template.html index 1ed2ec1b9c..d5bae685b8 100644 --- a/src/components/homescreensettings/homescreensettings.template.html +++ b/src/components/homescreensettings/homescreensettings.template.html @@ -129,4 +129,4 @@ - \ No newline at end of file + diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 86f05dabfa..62c058aed5 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -463,4 +463,4 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve getCrossOriginValue: getCrossOriginValue, getBufferedRanges: getBufferedRanges }; -}); \ No newline at end of file +}); diff --git a/src/components/images/imageFetcher.js b/src/components/images/imageFetcher.js index 54d3ef7502..1e13cebc77 100644 --- a/src/components/images/imageFetcher.js +++ b/src/components/images/imageFetcher.js @@ -35,4 +35,4 @@ define(['dom'], function (dom) { loadImage: loadImage }; -}); \ No newline at end of file +}); diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index 80fcbbd3f4..764be06fd1 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -122,4 +122,4 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', self.getPrimaryImageAspectRatio = getPrimaryImageAspectRatio; return self; -}); \ No newline at end of file +}); diff --git a/src/components/itemsrefresher.js b/src/components/itemsrefresher.js index 46956d2df5..6da74eef80 100644 --- a/src/components/itemsrefresher.js +++ b/src/components/itemsrefresher.js @@ -278,4 +278,4 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM }; return ItemsRefresher; -}); \ No newline at end of file +}); diff --git a/src/components/lazyloader/lazyloader-intersectionobserver.js b/src/components/lazyloader/lazyloader-intersectionobserver.js index 1935f65a30..5f83742601 100644 --- a/src/components/lazyloader/lazyloader-intersectionobserver.js +++ b/src/components/lazyloader/lazyloader-intersectionobserver.js @@ -100,4 +100,4 @@ define(['require', 'browser'], function (require, browser) { }; return LazyLoader; -}); \ No newline at end of file +}); diff --git a/src/components/lazyloader/lazyloader-scroll.js b/src/components/lazyloader/lazyloader-scroll.js index 318f6dbea0..d5120146ce 100644 --- a/src/components/lazyloader/lazyloader-scroll.js +++ b/src/components/lazyloader/lazyloader-scroll.js @@ -186,4 +186,4 @@ define(['visibleinviewport', 'dom', 'browser'], function (visibleinviewport, dom }; return LazyLoader; -}); \ No newline at end of file +}); diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index ebfdacaa19..377488f44f 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -147,4 +147,4 @@
${SaveSubtitlesIntoMediaFoldersHelp}
-
\ No newline at end of file +
diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index 510f311217..d6c00347c7 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -81,4 +81,4 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio } } }; -}); \ No newline at end of file +}); diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 64e25b4870..2571470015 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -264,4 +264,4 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, getTabsElement: getTabsElement, selectedTabIndex: selectedTabIndex }; -}); \ No newline at end of file +}); diff --git a/src/components/metadataeditor/personeditor.js b/src/components/metadataeditor/personeditor.js index 7883cfca1b..9fb6fdec6f 100644 --- a/src/components/metadataeditor/personeditor.js +++ b/src/components/metadataeditor/personeditor.js @@ -96,4 +96,4 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-but return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/multidownload.js b/src/components/multidownload.js index a1881b8db9..d11e52de14 100644 --- a/src/components/multidownload.js +++ b/src/components/multidownload.js @@ -63,4 +63,4 @@ define(['browser'], function (browser) { download(url); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/packagemanager.js b/src/components/packagemanager.js index 03ed1006c1..46f4704522 100644 --- a/src/components/packagemanager.js +++ b/src/components/packagemanager.js @@ -149,4 +149,4 @@ define(['appSettings', 'pluginManager'], function (appSettings, pluginManager) { }; return new PackageManager(); -}); \ No newline at end of file +}); diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 6629fbfb0f..4ebdbbd6d2 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -43,4 +43,4 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; return PhotoPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/playback/experimentalwarnings.js b/src/components/playback/experimentalwarnings.js index 17b1af0257..2d1ef53c19 100644 --- a/src/components/playback/experimentalwarnings.js +++ b/src/components/playback/experimentalwarnings.js @@ -94,4 +94,4 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function ( }; return ExpirementalPlaybackWarnings; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playaccessvalidation.js b/src/components/playback/playaccessvalidation.js index 35d8314fc1..46a6f7546c 100644 --- a/src/components/playback/playaccessvalidation.js +++ b/src/components/playback/playaccessvalidation.js @@ -47,4 +47,4 @@ define(['connectionManager', 'globalize'], function (connectionManager, globaliz }; return PlayAccessValidation; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 3253d8acdf..e7ffc52d79 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -52,4 +52,4 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager } } }); -}); \ No newline at end of file +}); diff --git a/src/components/playback/playmethodhelper.js b/src/components/playback/playmethodhelper.js index 4e85f87093..75af04035c 100644 --- a/src/components/playback/playmethodhelper.js +++ b/src/components/playback/playmethodhelper.js @@ -21,4 +21,4 @@ define([], function () { return { getDisplayPlayMethod: getDisplayPlayMethod }; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index ed2076a814..429c4027f1 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -230,4 +230,4 @@ define([], function () { }; return PlayQueueManager; -}); \ No newline at end of file +}); diff --git a/src/components/playback/remotecontrolautoplay.js b/src/components/playback/remotecontrolautoplay.js index d8316b87ef..214a9546d2 100644 --- a/src/components/playback/remotecontrolautoplay.js +++ b/src/components/playback/remotecontrolautoplay.js @@ -44,4 +44,4 @@ define(['events', 'playbackManager'], function (events, playbackManager) { transferPlayback(oldPlayer, newPlayer); }); -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.js b/src/components/playbacksettings/playbacksettings.js index 69915b18bf..d249b5b989 100644 --- a/src/components/playbacksettings/playbacksettings.js +++ b/src/components/playbacksettings/playbacksettings.js @@ -342,4 +342,4 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality }; return PlaybackSettings; -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.template.html b/src/components/playbacksettings/playbacksettings.template.html index 06cfe3f3d6..0c8b726a40 100644 --- a/src/components/playbacksettings/playbacksettings.template.html +++ b/src/components/playbacksettings/playbacksettings.template.html @@ -86,4 +86,4 @@ - \ No newline at end of file + diff --git a/src/components/playmenu.js b/src/components/playmenu.js index 7225ff94e1..a410da6985 100644 --- a/src/components/playmenu.js +++ b/src/components/playmenu.js @@ -72,4 +72,4 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings' return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index ec65e63e65..93afa84daa 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -146,4 +146,4 @@ define(['events'], function (events) { }; return new PluginManager(); -}); \ No newline at end of file +}); diff --git a/src/components/prompt/nativeprompt.js b/src/components/prompt/nativeprompt.js index b0634bd428..ba7f1a9a49 100644 --- a/src/components/prompt/nativeprompt.js +++ b/src/components/prompt/nativeprompt.js @@ -25,4 +25,4 @@ define([], function () { return Promise.reject(result); } }; -}); \ No newline at end of file +}); diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 6e8e019c83..8f4f839eaa 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -101,4 +101,4 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're }); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/qualityoptions.js b/src/components/qualityoptions.js index e46a690e8a..5ad69cb790 100644 --- a/src/components/qualityoptions.js +++ b/src/components/qualityoptions.js @@ -160,4 +160,4 @@ define(['globalize'], function (globalize) { getVideoQualityOptions: getVideoQualityOptions, getAudioQualityOptions: getAudioQualityOptions }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index 614d483b21..a51fac4305 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -202,4 +202,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 3a1d4ba943..86c731ad26 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -159,4 +159,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 4bfd316c73..a071cb2032 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -214,4 +214,4 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi cancelTimerWithConfirmation: cancelTimerWithConfirmation, cancelSeriesTimerWithConfirmation: cancelSeriesTimerWithConfirmation }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index 73a98cf5e7..62accd5b63 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -267,4 +267,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c show: showEditor, embed: embed }; -}); \ No newline at end of file +}); diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index d422a95533..9bcc99e3a1 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -92,4 +92,4 @@ define([], function () { return truncate(sanitized, 255); } }; -}); \ No newline at end of file +}); diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..e3f9a956d8 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -928,4 +928,4 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; return scrollerFactory; -}); \ No newline at end of file +}); diff --git a/src/components/scrollhelper.js b/src/components/scrollhelper.js index 6280dc5062..1a36594026 100644 --- a/src/components/scrollhelper.js +++ b/src/components/scrollhelper.js @@ -134,4 +134,4 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) { toCenter: toCenter, toStart: toStart }; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchfields.js b/src/components/search/searchfields.js index 912acfc41c..53ab187a81 100644 --- a/src/components/search/searchfields.js +++ b/src/components/search/searchfields.js @@ -121,4 +121,4 @@ define(['layoutManager', 'globalize', 'require', 'events', 'browser', 'alphaPick }; return SearchFields; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchresults.template.html b/src/components/search/searchresults.template.html index a9fa232fbc..33c9389190 100644 --- a/src/components/search/searchresults.template.html +++ b/src/components/search/searchresults.template.html @@ -142,4 +142,4 @@
-
\ No newline at end of file +
diff --git a/src/components/serverNotifications/gamepadtokey.js b/src/components/serverNotifications/gamepadtokey.js index abf3ddb38b..7705aed71f 100644 --- a/src/components/serverNotifications/gamepadtokey.js +++ b/src/components/serverNotifications/gamepadtokey.js @@ -369,4 +369,4 @@ require(['apphost'], function (appHost) { window.navigator.gamepadInputEmulation = "gamepad"; } -}); \ No newline at end of file +}); diff --git a/src/components/serverNotifications/mouseManager.js b/src/components/serverNotifications/mouseManager.js index ffea3b01ff..78057c0bfe 100644 --- a/src/components/serverNotifications/mouseManager.js +++ b/src/components/serverNotifications/mouseManager.js @@ -166,4 +166,4 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd events.on(layoutManager, 'modechange', initMouse); return self; -}); \ No newline at end of file +}); diff --git a/src/components/serverRestartDialog.js b/src/components/serverRestartDialog.js index 4c20183b2a..ef012fe44a 100644 --- a/src/components/serverRestartDialog.js +++ b/src/components/serverRestartDialog.js @@ -155,4 +155,4 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp }; return ServerRestartDialog; -}); \ No newline at end of file +}); diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 9c5be840bf..dbb0844045 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -41,4 +41,4 @@ event.waitUntil(executeAction(action, data, serverId)); }, false); -})(); \ No newline at end of file +})(); diff --git a/src/components/sessionplayer.js b/src/components/sessionplayer.js index adcaab2674..bbb22a9654 100644 --- a/src/components/sessionplayer.js +++ b/src/components/sessionplayer.js @@ -549,4 +549,4 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] }; return SessionPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/shell.js b/src/components/shell.js index 534a57b027..f82f5eea3c 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -27,4 +27,4 @@ define([], function () { } } }; -}); \ No newline at end of file +}); diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index 9d2b1847e5..ab606ab1d2 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -425,4 +425,4 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl getShortcutAttributesHtml: getShortcutAttributesHtml }; -}); \ No newline at end of file +}); diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 115de54b25..f31ac091b5 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -641,4 +641,4 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } }; }; -}); \ No newline at end of file +}); diff --git a/src/components/sortmenu/sortmenu.template.html b/src/components/sortmenu/sortmenu.template.html index 3f523c2959..da7da98371 100644 --- a/src/components/sortmenu/sortmenu.template.html +++ b/src/components/sortmenu/sortmenu.template.html @@ -19,4 +19,4 @@
-
\ No newline at end of file +
diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 8a40bd134b..fdc64f0dfa 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -156,4 +156,4 @@ define([], function () { getStyles: getStyles, applyStyles: applyStyles }; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 669b26d271..69de536e4c 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -219,4 +219,4 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi }; return SubtitleSettings; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index a6ec43d8fa..cc2788397f 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -91,4 +91,4 @@ - \ No newline at end of file + diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 2aa6b10450..999e4d0bb9 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index 33f1c6e6cc..a67e8e0fa1 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -120,4 +120,4 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( }; return TabbedView; -}); \ No newline at end of file +}); diff --git a/src/components/thememediaplayer.js b/src/components/thememediaplayer.js index a8298fad37..94012ba823 100644 --- a/src/components/thememediaplayer.js +++ b/src/components/thememediaplayer.js @@ -108,4 +108,4 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playb // } //}); -}); \ No newline at end of file +}); diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index d8ac404764..22eb53396c 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -39,4 +39,4 @@ define(['css!./toast'], function () { }, 300); }; -}); \ No newline at end of file +}); diff --git a/src/components/touchhelper.js b/src/components/touchhelper.js index 0f6d34aace..97455fc969 100644 --- a/src/components/touchhelper.js +++ b/src/components/touchhelper.js @@ -168,4 +168,4 @@ define(['dom', 'events'], function (dom, events) { }; return TouchHelper; -}); \ No newline at end of file +}); diff --git a/src/components/tvproviders/schedulesdirect.template.html b/src/components/tvproviders/schedulesdirect.template.html index da593ef569..3cfba06fe1 100644 --- a/src/components/tvproviders/schedulesdirect.template.html +++ b/src/components/tvproviders/schedulesdirect.template.html @@ -70,4 +70,4 @@
-
\ No newline at end of file +
diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 80e7d807bd..05e51cdb2c 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -332,4 +332,4 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l }; return UpNextDialog; -}); \ No newline at end of file +}); diff --git a/src/components/userdatabuttons/emby-playstatebutton.js b/src/components/userdatabuttons/emby-playstatebutton.js index eaed128933..4c3e5b6b62 100644 --- a/src/components/userdatabuttons/emby-playstatebutton.js +++ b/src/components/userdatabuttons/emby-playstatebutton.js @@ -156,4 +156,4 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby prototype: EmbyPlaystateButtonPrototype, extends: 'button' }); -}); \ No newline at end of file +}); diff --git a/src/components/viewsettings/viewsettings.template.html b/src/components/viewsettings/viewsettings.template.html index 07cbc35e9f..8aea2fac26 100644 --- a/src/components/viewsettings/viewsettings.template.html +++ b/src/components/viewsettings/viewsettings.template.html @@ -38,4 +38,4 @@
-
\ No newline at end of file +
diff --git a/src/components/visibleinviewport.js b/src/components/visibleinviewport.js index 3768740175..a48dbd3a1d 100644 --- a/src/components/visibleinviewport.js +++ b/src/components/visibleinviewport.js @@ -38,4 +38,4 @@ define(['dom'], function (dom) { } return visibleInViewport; -}); \ No newline at end of file +}); diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index a2478cd3f4..df04fb850e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -405,4 +405,4 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi }; return YoutubePlayer; -}); \ No newline at end of file +}); diff --git a/src/controllers/dashboard/logs.js b/src/controllers/dashboard/logs.js index f5866f344c..144e21fc92 100644 --- a/src/controllers/dashboard/logs.js +++ b/src/controllers/dashboard/logs.js @@ -30,4 +30,4 @@ define(["datetime", "loading", "apphost", "listViewStyle", "emby-button", "flexS }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/librarydisplay.js b/src/controllers/librarydisplay.js index 10a0eb945b..55986a4b7d 100644 --- a/src/controllers/librarydisplay.js +++ b/src/controllers/librarydisplay.js @@ -68,4 +68,4 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", " }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/metadataimagespage.js b/src/controllers/metadataimagespage.js index 3a6656e4b6..a4932e9bb0 100644 --- a/src/controllers/metadataimagespage.js +++ b/src/controllers/metadataimagespage.js @@ -61,4 +61,4 @@ define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($, }).on("pageshow", "#metadataImagesConfigurationPage", function() { libraryMenu.setTabs("metadata", 2, getTabs), loading.show(), loadPage(this) }) -}); \ No newline at end of file +}); diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index 764e525a25..600af55516 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -97,4 +97,4 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun prototype: EmbyButtonPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-input/emby-input.js b/src/elements/emby-input/emby-input.js index 7d2ea63a0d..03ba2b93aa 100644 --- a/src/elements/emby-input/emby-input.js +++ b/src/elements/emby-input/emby-input.js @@ -123,4 +123,4 @@ define(['layoutManager', 'browser', 'dom', 'css!./emby-input', 'registerElement' prototype: EmbyInputPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-progressring/emby-progressring.js b/src/elements/emby-progressring/emby-progressring.js index 80c5458528..edc635947c 100644 --- a/src/elements/emby-progressring/emby-progressring.js +++ b/src/elements/emby-progressring/emby-progressring.js @@ -98,4 +98,4 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ }); return EmbyProgressRing; -}); \ No newline at end of file +}); diff --git a/src/elements/emby-progressring/emby-progressring.template.html b/src/elements/emby-progressring/emby-progressring.template.html index bebefe5f51..a1be620b33 100644 --- a/src/elements/emby-progressring/emby-progressring.template.html +++ b/src/elements/emby-progressring/emby-progressring.template.html @@ -20,4 +20,4 @@
-
\ No newline at end of file +
diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 3c72f91521..9b91591050 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -45,4 +45,4 @@ define(['css!./emby-radio', 'registerElement'], function () { prototype: EmbyRadioPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-textarea/emby-textarea.js b/src/elements/emby-textarea/emby-textarea.js index c500db6e1f..e0ce77aa51 100644 --- a/src/elements/emby-textarea/emby-textarea.js +++ b/src/elements/emby-textarea/emby-textarea.js @@ -135,4 +135,4 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e prototype: EmbyTextAreaPrototype, extends: 'textarea' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-toggle/emby-toggle.js b/src/elements/emby-toggle/emby-toggle.js index 08597164b2..bd7eba3078 100644 --- a/src/elements/emby-toggle/emby-toggle.js +++ b/src/elements/emby-toggle/emby-toggle.js @@ -47,4 +47,4 @@ define(['css!./emby-toggle', 'registerElement'], function () { prototype: EmbyTogglePrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/installedplugins.html b/src/installedplugins.html index 633df2df29..d2b11592e9 100644 --- a/src/installedplugins.html +++ b/src/installedplugins.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
diff --git a/src/legacy/dashboard.js b/src/legacy/dashboard.js index 11ba3177b7..0268806f21 100644 --- a/src/legacy/dashboard.js +++ b/src/legacy/dashboard.js @@ -17,4 +17,4 @@ Dashboard.confirm = function(message, title, callback) { require(["loading"], function(loading) { loading.hide() }) -}; \ No newline at end of file +}; diff --git a/src/legacy/fnchecked.js b/src/legacy/fnchecked.js index 120f6e148a..4f24990f46 100644 --- a/src/legacy/fnchecked.js +++ b/src/legacy/fnchecked.js @@ -7,4 +7,4 @@ define(["jQuery"], function($) { }, $.fn.checkboxradio = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/legacy/selectmenu.js b/src/legacy/selectmenu.js index bc211b9664..ba8c688511 100644 --- a/src/legacy/selectmenu.js +++ b/src/legacy/selectmenu.js @@ -3,4 +3,4 @@ define(["jQuery"], function($) { $.fn.selectmenu = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/apiclient.js b/src/libraries/apiclient/apiclient.js index 06d9cf0861..d848358c3e 100644 --- a/src/libraries/apiclient/apiclient.js +++ b/src/libraries/apiclient/apiclient.js @@ -233,4 +233,4 @@ define(["libraries/apiclient/apiclientcore", "localassetmanager"], function(ApiC } return ApiClient.prototype.getItemDownloadUrl.call(this, itemId) }, ApiClientEx -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 6083bb4953..a8f2eb5035 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -50,4 +50,4 @@ define([], function() { } return new MyStore; -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/credentialprovider.js b/src/libraries/apiclient/credentialprovider.js index 471f2b5ef1..3d5e9a3dbf 100644 --- a/src/libraries/apiclient/credentialprovider.js +++ b/src/libraries/apiclient/credentialprovider.js @@ -26,4 +26,4 @@ define(["events", "appStorage"], function(events, appStorage) { })[0]; return existing ? (existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0), existing.UserLinkType = server.UserLinkType, server.AccessToken && (existing.AccessToken = server.AccessToken, existing.UserId = server.UserId), server.ExchangeToken && (existing.ExchangeToken = server.ExchangeToken), server.RemoteAddress && (existing.RemoteAddress = server.RemoteAddress), server.ManualAddress && (existing.ManualAddress = server.ManualAddress), server.LocalAddress && (existing.LocalAddress = server.LocalAddress), server.Name && (existing.Name = server.Name), null != server.LastConnectionMode && (existing.LastConnectionMode = server.LastConnectionMode), server.ConnectServerId && (existing.ConnectServerId = server.ConnectServerId), existing) : (list.push(server), server) }, Credentials -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/events.js b/src/libraries/apiclient/events.js index 6204dc4d4f..c109ee9c48 100644 --- a/src/libraries/apiclient/events.js +++ b/src/libraries/apiclient/events.js @@ -27,4 +27,4 @@ define([], function() { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/package.json b/src/libraries/apiclient/package.json index 0069cfc6bf..67f9d49756 100644 --- a/src/libraries/apiclient/package.json +++ b/src/libraries/apiclient/package.json @@ -1,3 +1,3 @@ { "main": "apiclient.js" -} \ No newline at end of file +} diff --git a/src/libraries/apiclient/sync/filerepository.js b/src/libraries/apiclient/sync/filerepository.js index 198967469d..5b7088af31 100644 --- a/src/libraries/apiclient/sync/filerepository.js +++ b/src/libraries/apiclient/sync/filerepository.js @@ -42,4 +42,4 @@ define([], function() { getItemFileSize: getItemFileSize, getImageUrl: getImageUrl } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/itemrepository.js b/src/libraries/apiclient/sync/itemrepository.js index 5330d5d1a2..db1f962876 100644 --- a/src/libraries/apiclient/sync/itemrepository.js +++ b/src/libraries/apiclient/sync/itemrepository.js @@ -120,4 +120,4 @@ define([], function() { getAll: getAll, getServerItemTypes: getServerItemTypes } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/localsync.js b/src/libraries/apiclient/sync/localsync.js index cea244de08..7341cf1d30 100644 --- a/src/libraries/apiclient/sync/localsync.js +++ b/src/libraries/apiclient/sync/localsync.js @@ -14,4 +14,4 @@ define(["connectionManager"], function(connectionManager) { })) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 24220561ad..71203cd952 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -365,4 +365,4 @@ define(["localassetmanager"], function(localassetmanager) { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/multiserversync.js b/src/libraries/apiclient/sync/multiserversync.js index 0654b5615d..75e72dab67 100644 --- a/src/libraries/apiclient/sync/multiserversync.js +++ b/src/libraries/apiclient/sync/multiserversync.js @@ -19,4 +19,4 @@ define(["serversync"], function(ServerSync) { syncNext(connectionManager, servers, 0, options, resolve, reject) }) }, MultiServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/serversync.js b/src/libraries/apiclient/sync/serversync.js index 34a1b11e8e..0494e6034f 100644 --- a/src/libraries/apiclient/sync/serversync.js +++ b/src/libraries/apiclient/sync/serversync.js @@ -39,4 +39,4 @@ define([], function() { throw console.log("Unable to connect to server id: " + server.Id), err }) }, ServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/transfermanager.js b/src/libraries/apiclient/sync/transfermanager.js index 162a6a1226..d9889fffbd 100644 --- a/src/libraries/apiclient/sync/transfermanager.js +++ b/src/libraries/apiclient/sync/transfermanager.js @@ -27,4 +27,4 @@ define([], function() { resyncTransfers: resyncTransfers, getDownloadItemCount: getDownloadItemCount } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/useractionrepository.js b/src/libraries/apiclient/sync/useractionrepository.js index 8612b05bea..7b33ba1c35 100644 --- a/src/libraries/apiclient/sync/useractionrepository.js +++ b/src/libraries/apiclient/sync/useractionrepository.js @@ -105,4 +105,4 @@ define([], function() { getAll: getAll, getByServerId: getByServerId } -}); \ No newline at end of file +}); diff --git a/src/libraries/pagejs/page.js b/src/libraries/pagejs/page.js index ce96fd185e..be5c8aee97 100644 --- a/src/libraries/pagejs/page.js +++ b/src/libraries/pagejs/page.js @@ -1074,4 +1074,4 @@ define([], function () { return page; -}); \ No newline at end of file +}); diff --git a/src/libraries/query-string/index.js b/src/libraries/query-string/index.js index 515b745bf3..cc63f52b80 100644 --- a/src/libraries/query-string/index.js +++ b/src/libraries/query-string/index.js @@ -15,4 +15,4 @@ window.queryString = {}, window.queryString.extract = function(maybeUrl) { return encodeURIComponent(key) + "=" + encodeURIComponent(val2) }).join("&") : encodeURIComponent(key) + "=" + encodeURIComponent(val) }).join("&") : "" -}; \ No newline at end of file +}; diff --git a/src/libraries/query-string/test.js b/src/libraries/query-string/test.js index 4e16ad17c1..072a33fb1d 100644 --- a/src/libraries/query-string/test.js +++ b/src/libraries/query-string/test.js @@ -80,4 +80,4 @@ describe(".parse()", function() { qs.extract(void 0) }, TypeError) }) -}); \ No newline at end of file +}); diff --git a/src/library.html b/src/library.html index 7e313c1708..398613f9e6 100644 --- a/src/library.html +++ b/src/library.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/livetvsettings.html b/src/livetvsettings.html index d853063ab0..1b1557889e 100644 --- a/src/livetvsettings.html +++ b/src/livetvsettings.html @@ -99,4 +99,4 @@
-
\ No newline at end of file +
diff --git a/src/log.html b/src/log.html index dd98b0d333..5943f5dc08 100644 --- a/src/log.html +++ b/src/log.html @@ -5,4 +5,4 @@
-
\ No newline at end of file + diff --git a/src/metadataimages.html b/src/metadataimages.html index 8250572011..8ad129256c 100644 --- a/src/metadataimages.html +++ b/src/metadataimages.html @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/metadatanfo.html b/src/metadatanfo.html index 7263952b42..4005c74f67 100644 --- a/src/metadatanfo.html +++ b/src/metadatanfo.html @@ -46,4 +46,4 @@ - \ No newline at end of file + diff --git a/src/mypreferencesdisplay.html b/src/mypreferencesdisplay.html index 799681f061..bee49754af 100644 --- a/src/mypreferencesdisplay.html +++ b/src/mypreferencesdisplay.html @@ -1,4 +1,4 @@
-
\ No newline at end of file + diff --git a/src/mypreferenceshome.html b/src/mypreferenceshome.html index f45a6478bf..79c5ccc4bd 100644 --- a/src/mypreferenceshome.html +++ b/src/mypreferenceshome.html @@ -1,4 +1,4 @@
-
\ No newline at end of file + diff --git a/src/notificationsetting.html b/src/notificationsetting.html index 46c361910d..f982aa29ce 100644 --- a/src/notificationsetting.html +++ b/src/notificationsetting.html @@ -65,4 +65,4 @@ - \ No newline at end of file + diff --git a/src/playbackconfiguration.html b/src/playbackconfiguration.html index 81a42231e4..9deeeebbcd 100644 --- a/src/playbackconfiguration.html +++ b/src/playbackconfiguration.html @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/src/robots.txt b/src/robots.txt index 77470cb39f..1f53798bb4 100644 --- a/src/robots.txt +++ b/src/robots.txt @@ -1,2 +1,2 @@ User-agent: * -Disallow: / \ No newline at end of file +Disallow: / diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 66c3051c8c..791ac7411b 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -311,4 +311,4 @@ define([], function () { browser.chromecast = browser.chrome && userAgent.toLowerCase().indexOf('crkey') !== -1; return browser; -}); \ No newline at end of file +}); diff --git a/src/scripts/datetime.js b/src/scripts/datetime.js index a7ee1d946a..8a7666844c 100644 --- a/src/scripts/datetime.js +++ b/src/scripts/datetime.js @@ -279,4 +279,4 @@ define(['globalize'], function (globalize) { return toLocaleTimeStringSupportsLocales; } }; -}); \ No newline at end of file +}); diff --git a/src/serviceworker.js b/src/serviceworker.js index 4d9e12ee6a..49c3767691 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1 +1 @@ -importScripts("components/serviceworker/notifications.js"); \ No newline at end of file +importScripts("components/serviceworker/notifications.js"); From a26091a165a7f7369ef4b026540f4f09b83c4f98 Mon Sep 17 00:00:00 2001 From: h1nk <12993584+h1nk@users.noreply.github.com> Date: Sat, 22 Feb 2020 11:55:57 -0500 Subject: [PATCH 123/449] Enforce final newlines in ESLint See: https://github.com/jellyfin/jellyfin-web/pull/838#issuecomment-589933845 --- .eslintrc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index b215e15800..ee0b32ffad 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -8,7 +8,7 @@ rules: brace-style: ["error"] comma-dangle: ["error", "never"] comma-spacing: ["error"] - eol-last: ["off"] + eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] line-comment-position: ["off"] From a75d37390ea6f1a36f20826717a2e19695425fe7 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 22 Feb 2020 09:10:37 +0000 Subject: [PATCH 124/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 541323e90a..083403ad46 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1440,5 +1440,6 @@ "LabelCorruptedFrames": "Sérült képkockák:", "HeaderKeepSeries": "Sorozat megtartása", "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra.", - "LabelTranscodes": "Átkódolások:" + "LabelTranscodes": "Átkódolások:", + "AskAdminToCreateLibrary": "Kérj meg egy adminisztrátort könyvtár létrehozására." } From 9334e1babe7fc782b6442a875c7552f17ed5eb8b Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 10:06:45 +0000 Subject: [PATCH 125/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1d2a223cdb..524a644f8b 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Låt TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From 4b99f00552ef128bafd68f3a9a6eafd6037935c9 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 01:22:55 +0300 Subject: [PATCH 126/449] move underscore Icon to class --- src/components/cardbuilder/cardBuilder.js | 8 ++++---- src/components/cardbuilder/chaptercardbuilder.js | 2 +- src/components/channelmapper/channelmapper.js | 2 +- src/components/directorybrowser/directorybrowser.js | 2 +- src/components/imagedownloader/imagedownloader.js | 4 ++-- .../libraryoptionseditor/libraryoptionseditor.js | 2 +- src/components/metadataeditor/metadataeditor.js | 4 ++-- src/components/remotecontrol/remotecontrol.js | 2 +- src/controllers/dashboard/notifications/notifications.js | 6 +++--- src/controllers/devices.js | 2 +- src/controllers/dlnaprofiles.js | 2 +- src/scripts/editorsidebar.js | 2 +- src/scripts/librarybrowser.js | 2 +- src/scripts/librarymenu.js | 4 ++-- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 4e589c4a19..472585674e 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1497,13 +1497,13 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana case 'Person': return 'person'; case 'Movie': - return 'movie' + return 'movie'; case 'Series': - return 'tv' + return 'tv'; case 'Book': - return 'book' + return 'book'; case 'Folder': - return 'folder' + return 'folder'; } if (options && options.defaultCardImageIcon) { diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 75b940285f..02d583abc0 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -90,7 +90,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse var cardImageContainer = imgUrl ? ('
') : ('
'); if (!imgUrl) { - cardImageContainer += 'local_movies'; + cardImageContainer += ''; } var nameHtml = ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 2b2de1870c..1b536f440b 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -84,7 +84,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee html += "
"; html += "
"; - html += ''; + html += ''; return html += ""; } diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 06f7773cf6..b71f7bbb05 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -76,7 +76,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += name; html += ""; html += ""; - html += 'arrow_forward'; + html += ''; html += ""; return html; } diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index f984ce22a5..ce53b5cf0d 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -117,7 +117,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' html += '
'; html += ''; - html += ''; + html += ''; html += '
'; } @@ -277,7 +277,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (enableFooterButtons) { html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index f9f63c9b51..010af4a1df 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -58,7 +58,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - html += 'live_tv'; + html += ''; html += '
'; html += '

'; html += plugin.Name; diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 030fdc80ce..e8736258fa 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -477,7 +477,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '

'; if (formatString) { - html += ''; + html += ''; } html += '
'; @@ -917,7 +917,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi for (var i = 0; i < items.length; i++) { html += '
'; - html += 'live_tv'; + html += ''; html += '
'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 11f14fdc8e..1ed220e069 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -266,7 +266,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat_one"; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else { toggleRepeatButton.innerHTML = "repeat"; diff --git a/src/controllers/dashboard/notifications/notifications.js b/src/controllers/dashboard/notifications/notifications.js index 466728210e..8f63753bf3 100644 --- a/src/controllers/dashboard/notifications/notifications.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], } itemHtml += ''; if (notification.Enabled) { - itemHtml += 'notifications_active'; + itemHtml += ''; } else { - itemHtml += 'notifications_off'; + itemHtml += ''; } itemHtml += '
'; itemHtml += '
' + notification.Name + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; return itemHtml; }).join(""); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 4ddb4d4d20..3fd2be983e 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu deviceHtml += '
"; deviceHtml += "
"; } else { - deviceHtml += 'tablet_android'; + deviceHtml += ''; } deviceHtml += ""; diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index eae529c538..e1719ea597 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- for (var i = 0, length = profiles.length; i < length; i++) { var profile = profiles[i]; html += '
'; - html += 'live_tv'; + html += ''; html += '
'; html += ""; html += "
" + profile.Name + "
"; diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 1a9b9775ef..b7cb4b5c57 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -49,7 +49,7 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) { } else if (item.MediaType === "Audio") { htmlName += 'audiotrack'; } else if (item.Type === "TvChannel") { - htmlName += 'live_tv'; + htmlName += ''; } else if (item.MediaType === "Photo") { htmlName += 'photo'; } else if (item.MediaType === "Book") { diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index 4aab16b2e3..bd8980aed2 100644 --- a/src/scripts/librarybrowser.js +++ b/src/scripts/librarybrowser.js @@ -92,7 +92,7 @@ define(["userSettings"], function (userSettings) { if (showControls) { html += ''; - html += ''; + html += ''; } if (options.addLayoutButton) { diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 0abcf697b1..a1ca198d55 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -205,7 +205,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += globalize.translate("HeaderAdmin"); html += ""; html += '
dashboard' + globalize.translate("TabDashboard") + ""; - html += 'mode_edit' + globalize.translate("Metadata") + ""; + html += '' + globalize.translate("Metadata") + ""; html += "
"; } @@ -219,7 +219,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; } - html += 'exit_to_app' + globalize.translate("ButtonSignOut") + ""; + html += '' + globalize.translate("ButtonSignOut") + ""; html += "
"; } From 25f3be7e7030b9b802091173cbd37a2df667349d Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 01:47:17 +0300 Subject: [PATCH 127/449] move underscore Icon to class --- src/components/apphost.js | 2 +- src/components/guide/tvguide.template.html | 2 +- src/itemdetails.html | 4 ++-- src/mypreferencesmenu.html | 6 +++--- src/nowplaying.html | 4 ++-- src/wizardlibrary.html | 2 +- src/wizardremoteaccess.html | 2 +- src/wizardsettings.html | 2 +- src/wizardstart.html | 2 +- src/wizarduser.html | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index 2a0b7b19e9..22d61cc086 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -374,7 +374,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return -1 !== supportedFeatures.indexOf(command.toLowerCase()); }, preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.android ? "dots-vert" : "dots-horiz", + moreIcon: browser.android ? "more_vert" : "more_horiz", getSyncProfile: getSyncProfile, getDefaultLayout: function () { if (window.NativeShell) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 5dc16dba3b..ef3c4b58ca 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -33,6 +33,6 @@
diff --git a/src/itemdetails.html b/src/itemdetails.html index 100e3f968a..ec3ada09d6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -31,7 +31,7 @@ @@ -94,7 +94,7 @@ diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index f7948a0789..41fcd1b75c 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -32,7 +32,7 @@ diff --git a/src/wizardremoteaccess.html b/src/wizardremoteaccess.html index 8a830d6244..c7ddfb7e84 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -26,7 +26,7 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index 5850167c54..f753919478 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -21,7 +21,7 @@ diff --git a/src/wizardstart.html b/src/wizardstart.html index 5dd6f7e1b8..a47fcad090 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 9f54d7ca67..90f492b0fe 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -27,7 +27,7 @@ From de28101f660a6f953b5971938b840791de24c5bc Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 02:32:44 +0300 Subject: [PATCH 128/449] Fix 2 speakers icons next to volume slider #841 --- src/components/playback/volumeosd.js | 2 +- src/videoosd.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index de20aaab15..5d2c90ddb7 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += ''; + html += ''; html += '
'; diff --git a/src/videoosd.html b/src/videoosd.html index ac3570c670..c200360c05 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -76,7 +76,7 @@
From b20bd4d4b96834a237eab2b9fa0165b2c0083aac Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 02:40:08 +0300 Subject: [PATCH 129/449] Fix 2 speakers icons --- src/components/nowplayingbar/nowplayingbar.js | 2 +- src/nowplaying.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 9a96220e51..7d4cfaa349 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -54,7 +54,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; - html += ''; + html += ''; html += '
'; html += ''; diff --git a/src/nowplaying.html b/src/nowplaying.html index b106241492..c1d77bdc36 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -63,7 +63,7 @@
From 5fb2c8bd82b3dae4ad629d38712f683935ad06cf Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 23 Feb 2020 01:31:24 -0500 Subject: [PATCH 130/449] Fix horizontal scrolling on emby-scrollers --- src/components/homesections/homesections.js | 16 ++++----- src/components/scroller.js | 4 ++- .../search/searchresults.template.html | 34 +++++++++---------- src/controllers/favorites.js | 2 +- src/itemdetails.html | 10 +++--- src/selectserver.html | 2 +- 6 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 87be8c7c33..430c06bc57 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -290,7 +290,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -343,7 +343,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (userViews.length) { html += '

' + globalize.translate('HeaderMyMedia') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -423,7 +423,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -496,7 +496,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -582,7 +582,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -639,7 +639,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -713,7 +713,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -785,7 +785,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; diff --git a/src/components/scroller.js b/src/components/scroller.js index e3f9a956d8..c3c64a403e 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -575,7 +575,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc */ function normalizeWheelDelta(event) { // wheelDelta needed only for IE8- - scrolling.curDelta = ((o.horizontal ? event.deltaY || event.deltaX : event.deltaY) || -event.wheelDelta); + // JELLYFIN MOD: Only use deltaX for horizontal scroll instead of `event.deltaY || event.deltaX` + scrolling.curDelta = ((o.horizontal ? event.deltaX : event.deltaY) || -event.wheelDelta); + // END JELLYFIN MOD if (transform) { scrolling.curDelta /= event.deltaMode === 1 ? 3 : 100; diff --git a/src/components/search/searchresults.template.html b/src/components/search/searchresults.template.html index 33c9389190..1deecaca6c 100644 --- a/src/components/search/searchresults.template.html +++ b/src/components/search/searchresults.template.html @@ -11,7 +11,7 @@

${Movies}

-
+
@@ -19,7 +19,7 @@

${Shows}

-
+
@@ -27,7 +27,7 @@

${Episodes}

-
+
@@ -35,7 +35,7 @@

${Sports}

-
+
@@ -43,7 +43,7 @@

${Kids}

-
+
@@ -51,7 +51,7 @@

${News}

-
+
@@ -59,7 +59,7 @@

${Programs}

-
+
@@ -67,7 +67,7 @@

${Videos}

-
+
@@ -75,7 +75,7 @@

${Playlists}

-
+
@@ -83,7 +83,7 @@

${Artists}

-
+
@@ -91,7 +91,7 @@

${Albums}

-
+
@@ -99,7 +99,7 @@

${Songs}

-
+
@@ -107,7 +107,7 @@

${HeaderPhotoAlbums}

-
+
@@ -115,7 +115,7 @@

${Photos}

-
+
@@ -123,7 +123,7 @@

${HeaderAudioBooks}

-
+
@@ -131,7 +131,7 @@

${Books}

-
+
@@ -139,7 +139,7 @@

${People}

-
+
diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index a4f2af64dd..c06b0bd8fb 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -253,7 +253,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap } html += "
"; - html += '
'; + html += '
'; html += "
"; } diff --git a/src/itemdetails.html b/src/itemdetails.html index 100e3f968a..ba36eb85b8 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -182,21 +182,21 @@

-
+

-
+

${HeaderCastCrew}

-
+
@@ -218,14 +218,14 @@

${HeaderScenes}

-
+

${HeaderMoreLikeThis}

-
+
diff --git a/src/selectserver.html b/src/selectserver.html index dd52467bfe..2c84525174 100644 --- a/src/selectserver.html +++ b/src/selectserver.html @@ -3,7 +3,7 @@

${HeaderSelectServer}

-
+
From 4268a01e301f7206acd7419e76cf173ebac3fb1b Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 23 Feb 2020 01:43:03 -0500 Subject: [PATCH 131/449] Remove es6 env until babel is added --- .eslintrc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index ee0b32ffad..1055e084c9 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,5 +1,5 @@ env: - es6: true + es6: false browser: true amd: true From a87c4d97a018b254229996ab4b1bd632c244cb60 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 23 Feb 2020 10:52:03 +0300 Subject: [PATCH 132/449] Fix slideshow start/stop --- src/components/slideshow/slideshow.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index f31ac091b5..922cda34b0 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -342,7 +342,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f btnSlideshowPause.innerHTML = "pause"; } - swiperInstance.startAutoplay(); + if (swiperInstance.autoplay) { + swiperInstance.autoplay.start(); + } } function pause() { @@ -352,7 +354,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f btnSlideshowPause.innerHTML = ""; } - swiperInstance.stopAutoplay(); + if (swiperInstance.autoplay) { + swiperInstance.autoplay.stop(); + } } function playPause() { From a9be94a803934b5d7f78952ab6f7bd195beda66a Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 23 Feb 2020 17:23:20 +0900 Subject: [PATCH 133/449] uncomment all log statements --- src/components/chromecast/chromecastplayer.js | 16 ++++++++-------- src/components/nowplayingbar/nowplayingbar.js | 4 ++-- src/components/playback/playbackmanager.js | 2 +- src/components/scroller.js | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 4bb9b4daa1..18103e433f 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -377,7 +377,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; CastPlayer.prototype.onPlayCommandSuccess = function () { - //console.debug('Message was sent to receiver ok.'); + console.debug('Message was sent to receiver ok.'); }; /** @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - //console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -417,7 +417,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { if (!this.currentMediaSession) { - //console.debug('this.currentMediaSession is null'); + console.debug('this.currentMediaSession is null'); return; } @@ -443,7 +443,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { - //console.debug(info); + console.debug(info); }; function normalizeImages(state) { @@ -493,7 +493,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, eventName, function (e, data) { - //console.debug('cc: ' + eventName); + console.debug('cc: ' + eventName); var state = instance.getPlayerStateInternal(data); events.trigger(instance, eventName, [state]); @@ -555,7 +555,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackprogress", function (e, data) { - //console.debug('cc: positionchange'); + console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "timeupdate", [state]); @@ -569,7 +569,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playstatechange", function (e, data) { - //console.debug('cc: playstatechange'); + console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "pause", [state]); @@ -664,7 +664,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' normalizeImages(data); - //console.debug(JSON.stringify(data)); + console.debug(JSON.stringify(data)); if (triggerStateChange) { events.trigger(this, "statechange", [data]); diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 368c326470..96a52cc789 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -626,7 +626,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { - //console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; if (player.isLocalPlayer) { @@ -652,7 +652,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - //console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index f9af97803b..3a3bddd989 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -57,7 +57,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - //console.debug(method + '-' + JSON.stringify(info)); + console.debug(method + '-' + JSON.stringify(info)); var apiClient = connectionManager.getApiClient(serverId); apiClient[method](info); } diff --git a/src/components/scroller.js b/src/components/scroller.js index 45a0c08982..f98c348598 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -392,7 +392,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var currentStart = self._pos.cur; var currentEnd = currentStart + frameSize; - //console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); + console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); var isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { From baea3593a5b388b77a615487f8955bd9a8153185 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 23 Feb 2020 11:48:01 +0300 Subject: [PATCH 134/449] Sync button state with actual autoplay state --- src/components/slideshow/slideshow.js | 29 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 922cda34b0..dffe8c2f78 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -198,6 +198,20 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } } + function onAutoplayStart() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.innerHTML = "pause"; + } + } + + function onAutoplayStop() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.innerHTML = ""; + } + } + function loadSwiper(dlg) { if (currentOptions.slides) { @@ -225,6 +239,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f speed: 240 }); + swiperInstance.on('autoplayStart', onAutoplayStart); + swiperInstance.on('autoplayStop', onAutoplayStop); + if (layoutManager.mobile) { pause(); } else { @@ -336,24 +353,12 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } function play() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "pause"; - } - if (swiperInstance.autoplay) { swiperInstance.autoplay.start(); } } function pause() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = ""; - } - if (swiperInstance.autoplay) { swiperInstance.autoplay.stop(); } From 6924d082f5bc9e730c48cadb6017ac7c2fb125a3 Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Sun, 23 Feb 2020 03:42:31 +0000 Subject: [PATCH 135/449] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 70f9f52d46..7c42778a1c 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -2,5 +2,15 @@ "Add": "Añadir", "Actor": "Actor", "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Inténtelo de nuevo más tarde.", - "Absolute": "Absoluto" + "Absolute": "Absoluto", + "HeaderAlbumArtists": "Artistas del Álbum", + "HeaderContinueWatching": "Continuar Viendo", + "Genres": "Géneros", + "Folders": "Carpetas", + "Favorites": "Favoritos", + "Collections": "Colecciones", + "Books": "Libros", + "Albums": "Álbumes", + "Artists": "Artistas", + "Channels": "Canales" } From c87c6cb52acac08a6b5774ba7603ade781982304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Martins=20da=20Concei=C3=A7=C3=A3o?= Date: Sun, 23 Feb 2020 19:15:11 +0000 Subject: [PATCH 136/449] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 2cf5193bd7..089345ad55 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -351,7 +351,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar filmes em coleções", "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, filmes que pertençam a uma coleção serão mostrados como um único item agrupado.", "LabelHardwareAccelerationType": "Aceleração por hardware:", - "LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.", + "LabelHardwareAccelerationTypeHelp": "Aceleração via Hardware requer configurações adicionais.", "LabelHttpsPort": "Número do porto HTTPS local:", "LabelHttpsPortHelp": "Número do porto TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", "LabelIconMaxHeight": "Altura máxima do ícone:", @@ -1442,5 +1442,9 @@ "EnableStreamLooping": "Auto-cíclico de streams ao vivo", "Down": "Baixo", "CopyStreamURLError": "Ocorreu um erro a copiar o URL.", - "ButtonSplit": "Dividir" + "ButtonSplit": "Dividir", + "NoCreatedLibraries": "Oh Não! Parece que você ainda não criou nenhuma biblioteca por enquanto. {0} Gostaria de criar uma biblioteca agora? {1}", + "AskAdminToCreateLibrary": "Pergunte a um administrador para criar uma biblioteca.", + "LabelVideoResolution": "Resolução de vídeo:", + "LabelPlayerDimensions": "Dimensões de leitor:" } From f60e396908c11f3116ddb6739d53a6ebab94caff Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 24 Feb 2020 22:25:08 +0900 Subject: [PATCH 137/449] catch some errors and remove unused method --- src/controllers/dashboard/general.js | 6 ++++++ src/controllers/encodingsettings.js | 6 ++++++ src/controllers/streamingsettings.js | 19 +------------------ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 7eed352329..fe8661b578 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -56,6 +56,12 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb } }); }); + }, function () { + require(["alert"], function (alert) { + alert(globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); }); }); return false; diff --git a/src/controllers/encodingsettings.js b/src/controllers/encodingsettings.js index 24cf656d62..e164508856 100644 --- a/src/controllers/encodingsettings.js +++ b/src/controllers/encodingsettings.js @@ -66,6 +66,12 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EnableHardwareEncoding = form.querySelector("#chkHardwareEncoding").checked; ApiClient.updateNamedConfiguration("encoding", config).then(function () { updateEncoder(form); + }, function () { + require(["alert"], function (alert) { + alert(globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); }); }); }; diff --git a/src/controllers/streamingsettings.js b/src/controllers/streamingsettings.js index 6c85034458..14e5e028a8 100644 --- a/src/controllers/streamingsettings.js +++ b/src/controllers/streamingsettings.js @@ -13,6 +13,7 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($("#txtRemoteClientBitrateLimit", form).val() || "0")); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); + return false; } @@ -30,24 +31,6 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) } $(document).on("pageinit", "#streamingSettingsPage", function () { - var page = this; - $("#btnSelectTranscodingTempPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { - var picker = new directoryBrowser(); - picker.show({ - callback: function (path) { - if (path) { - $("#txtTranscodingTempPath", page).val(path); - } - - picker.close(); - }, - validateWriteable: true, - header: Globalize.translate("HeaderSelectTranscodingPath"), - instruction: Globalize.translate("HeaderSelectTranscodingPathHelp") - }); - }); - }); $(".streamingSettingsForm").off("submit", onSubmit).on("submit", onSubmit); }).on("pageshow", "#streamingSettingsPage", function () { loading.show(); From ac589eb922ae25c22b659b37dd9907bb64bcc1f3 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 24 Feb 2020 12:18:21 +0000 Subject: [PATCH 138/449] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index ebb3d22b95..73ea163b2e 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -637,7 +637,7 @@ "LabelH264Crf": "H264 kodtaý CRF máni:", "LabelEncoderPreset": "H264 kodtaý daıyndamasy:", "LabelHardwareAccelerationType": "Apparatyq jedeldetý:", - "LabelHardwareAccelerationTypeHelp": "Bul tájirıbelik múmkindik tek qoldaý kórsetiletin júıelerde qoljetimdi.", + "LabelHardwareAccelerationTypeHelp": "Apparattyq jedeldetý úshin qosymsha konfıgýrasýa qajet.", "LabelHomeNetworkQuality": "Úılik jeli sapasy:", "LabelHomeScreenSectionValue": "Basqy bet {0}-bólim:", "LabelHttpsPort": "Jergilikti HTTPS-port nómiri:", @@ -1485,5 +1485,21 @@ "FetchingData": "Qosymsha derekterdi shyǵaryp alý", "ButtonAddImage": "Sýret ústeý", "MusicLibraryHelp": "{0}Mýzyka ataý nusqaýlyǵyn{1} qarap shyǵý.", - "HeaderFavoritePeople": "Tańdaýly adamdar" + "HeaderFavoritePeople": "Tańdaýly adamdar", + "NoCreatedLibraries": "Eshqandaı tasyǵyshhanany jasamaǵanyńyz sıaqty. {0}Qazir bireýin jasaısyz ba?{1}", + "SelectAdminUsername": "Ákimshi tirkelgisi úshin paıdalanýshy atyn tańdańyz.", + "OptionRandom": "Kezdeısoq", + "OptionForceRemoteSourceTranscoding": "Alystaǵy tasyǵyshderekter kózin qaıta kodtaýdy májbúrleý (efırlik TD sıaqty)", + "MessageConfirmAppExit": "Shyǵýdy qalaısyz ba?", + "LabelVideoResolution": "Beıne ajyratymdylyǵy:", + "LabelStreamType": "Aǵyn túri:", + "EnableFastImageFadeInHelp": "Júktelgen sýretter úshin shapshan kórsetilýin qosý", + "EnableFastImageFadeIn": "Sýrettiń shapshan kórsetilýi", + "LabelPlayerDimensions": "Oınatqysh ólshemderi:", + "LabelDroppedFrames": "Ótkizilgen kadrlar:", + "LabelCorruptedFrames": "Búlingen kadrlar:", + "HeaderNavigation": "Sharlaý", + "CopyStreamURLError": "URL kóshirgende qate oryn aldy.", + "ButtonSplit": "Bólý", + "AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý." } From 494558f7dd2d5d03ffff0aab5dc23789f60eaa5a Mon Sep 17 00:00:00 2001 From: 4d1m Date: Mon, 24 Feb 2020 10:31:32 +0000 Subject: [PATCH 139/449] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index b8e87e0d36..3880d14d10 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -809,7 +809,7 @@ "LabelHttpsPort": "Portul local HTTPS:", "LabelHomeScreenSectionValue": "Secțiunea ecranului de pornire {0}:", "LabelHomeNetworkQuality": "Calitatea pe rețeaua de domiciliu:", - "LabelHardwareAccelerationTypeHelp": "Aceasta este o caracteristică experimentală disponibilă doar pe sistemele acceptate.", + "LabelHardwareAccelerationTypeHelp": "Accelerarea hardware necesită configurare suplimentară.", "LabelHardwareAccelerationType": "Accelerare hardware:", "LabelEncoderPreset": "H264 encoding presetat:", "LabelH264Crf": "CRF codare H264:", @@ -1463,5 +1463,7 @@ "LabelPlayerDimensions": "Dimensiunile soft redare:", "LabelDroppedFrames": "Cadre abandonate:", "LabelCorruptedFrames": "Cadre corupte:", - "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)" + "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)", + "NoCreatedLibraries": "Se pare că nu ați creat încă biblioteci. {0} Doriți să creați una acum? {1}", + "AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă." } From cd1f5512e320eb4a87247d239c429fef979f48e6 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 24 Feb 2020 12:12:46 +0000 Subject: [PATCH 140/449] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index b90aaa90b4..5ef7fb3024 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -622,7 +622,7 @@ "LabelH264Crf": "Значение CRF H264-кодирования:", "LabelEncoderPreset": "Предустановка H264-кодирования:", "LabelHardwareAccelerationType": "Аппаратное ускорение:", - "LabelHardwareAccelerationTypeHelp": "Это экспериментальная функция, имеющаяся только на поддерживаемых системах.", + "LabelHardwareAccelerationTypeHelp": "Аппаратное ускорение требует дополнительной конфигурации.", "LabelHomeNetworkQuality": "Качество в домашней сети:", "LabelHomeScreenSectionValue": "Главная страница - раздел {0}:", "LabelHttpsPort": "Номер локального HTTPS-порта:", @@ -1458,10 +1458,13 @@ "HeaderNavigation": "Навигация", "LabelVideoResolution": "Разрешение видео:", "LabelStreamType": "Тип потока:", - "EnableFastImageFadeInHelp": "Включить быстрое гашение анимации для загруженных рисунков", - "EnableFastImageFadeIn": "Быстрое гашение рисунка", + "EnableFastImageFadeInHelp": "Включить быстрое появление анимации для загруженных рисунков", + "EnableFastImageFadeIn": "Быстрое появление рисунка", "LabelPlayerDimensions": "Размерности проигрывателя:", "LabelDroppedFrames": "Пропущенные кадры:", "LabelCorruptedFrames": "Испорченные кадры:", - "CopyStreamURLError": "Произошла ошибка при копировании URL." + "CopyStreamURLError": "Произошла ошибка при копировании URL.", + "OptionForceRemoteSourceTranscoding": "Принудительное перекодирование удалённых источников медиаданных (например, эфирное ТВ)", + "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", + "AskAdminToCreateLibrary": "Запрашивать администратора для создания медиатеки." } From 92cd838633d5e4a5b6de3bb6c8c393c68053ab72 Mon Sep 17 00:00:00 2001 From: MOLOKAL Date: Tue, 25 Feb 2020 06:40:04 +0000 Subject: [PATCH 141/449] Translated using Weblate (Malay) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ms/ --- src/strings/ms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ms.json b/src/strings/ms.json index 9f959b9574..c377e52af1 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -35,14 +35,14 @@ "AllowOnTheFlySubtitleExtractionHelp": "Sarikata-sarikata yang sedia ada dapat diekstrak dari video-video dan dihantar ke aplikasi Jellyfin dalam teks biasa. Ini untuk menghindari video daripada transkoding. Pada sistem-sistem lain, ia dapat mengambil masa panjang dan menyebabkan video main balik terhenti semasa proses pengekstrakan. Ciri ini dapat dimatikan supaya sarikata yang sedia ada akan dibakar bersama video transkoding, jika ianya tidak disokong secara asal oleh peranti klien.", "AllowRemoteAccess": "Membenarkan persambungan jauh ke pelayan Jellyfin ini.", "AllowRemoteAccessHelp": "Jika tidak disemak, semua persambungan jauh akan disekat.", - "AllowHWTranscodingHelp": "Jika diaktifkan, penala dibolehkan untuk transkod strim dengan serta-merta. Ini dapat bantu mengurangkan transkoding yang diperlukan dari pelayan Jellyfin.", + "AllowHWTranscodingHelp": "Benarkan penala untuk transkod strim serta-merta. Ini mungkin dapat bantu kurangkan kadar transkod yang diperlukan dari pelayan.", "AlwaysPlaySubtitles": "Sentiasa main sarikata", "AlwaysPlaySubtitlesHelp": "Sarikata sepadan dengan bahasa yang dipilih akan masih dimuatkan tanpa mengira bahasa audio.", "AnyLanguage": "Mana-mana bahasa", "Anytime": "Pada bila masa saja", "AroundTime": "Sekitar {0}", "Art": "Seni", - "Artists": "Artis-artis", + "Artists": "Artis", "AsManyAsPossible": "Sebanyak mungkin", "Ascending": "Susunan menaik", "AspectRatio": "Nisbah aspek", From 9091284b78c9ed5d306472270842945cd78b5b60 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 25 Feb 2020 22:31:54 +0900 Subject: [PATCH 142/449] uncomment one last line --- src/components/chromecast/chromecasthelpers.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 21dbec6ff0..d8bb29252d 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -132,7 +132,7 @@ define(['events'], function (events) { var match; while (match = linkRegExp.exec(text)) { - // console.debug(matches); + console.debug(matches); var txt = match[0]; var pos = match.index; var len = txt.length; @@ -230,4 +230,4 @@ define(['events'], function (events) { return { getServerAddress: getServerAddress }; -}); \ No newline at end of file +}); From 911017a5df6c4f823d836cc62b9be369c3317d38 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 25 Feb 2020 21:27:17 +0300 Subject: [PATCH 143/449] Fix variable reference --- src/components/nowplayingbar/nowplayingbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index b38985e8db..a10cb89c68 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -662,7 +662,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + event.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { From 3fd2a2b59d4c289e64b939844b12c9164a7f1d58 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 25 Feb 2020 15:25:35 -0500 Subject: [PATCH 144/449] Remove IE8 support --- src/components/scroller.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/scroller.js b/src/components/scroller.js index c3c64a403e..b1e1f1dc7f 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -574,9 +574,8 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Int} */ function normalizeWheelDelta(event) { - // wheelDelta needed only for IE8- - // JELLYFIN MOD: Only use deltaX for horizontal scroll instead of `event.deltaY || event.deltaX` - scrolling.curDelta = ((o.horizontal ? event.deltaX : event.deltaY) || -event.wheelDelta); + // JELLYFIN MOD: Only use deltaX for horizontal scroll and remove IE8 support + scrolling.curDelta = o.horizontal ? event.deltaX : event.deltaY; // END JELLYFIN MOD if (transform) { From fbf675f919ed9d5719097ebfc0a0e0e834f7c802 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Tue, 25 Feb 2020 22:51:55 +0000 Subject: [PATCH 145/449] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index e94a916b02..e32add2356 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -66,7 +66,7 @@ "Edit": "ערוך", "EditImages": "ערוך תמונות", "EditSubtitles": "ערוך כתוביות", - "EnableColorCodedBackgrounds": "אפשר רקע בצבע מקודד", + "EnableColorCodedBackgrounds": "רקע בצבע מקודד", "Ended": "הסתיים", "EndsAtValue": "מסתיים ב {0}", "Favorite": "מועדף", @@ -550,5 +550,46 @@ "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB\\IDX וכדומה)", - "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף." + "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף.", + "Songs": "שירים", + "Shows": "סדרות", + "DownloadsValue": "{0} הורדות", + "DisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות", + "DisplayInMyMedia": "הצג בעמוד הבית", + "Disconnect": "התנתק", + "DirectorsValue": "במאים: {0}", + "DirectorValue": "במאי: {0}", + "Descending": "סדר יורד", + "Default": "ברירת מחדל", + "DeathDateValue": "נפטר: {0}", + "DatePlayed": "תאריך ניגון", + "DateAdded": "תאריך הוספה", + "CriticRating": "דירוג מבקרים", + "ContinueWatching": "המשך לצפות", + "ButtonUninstall": "הסר התקנה", + "ButtonTrailer": "קדימון", + "ButtonSubtitles": "כתוביות", + "ButtonSplit": "פיצול", + "ButtonStop": "עצור", + "ButtonSettings": "הגדרות", + "ButtonSend": "שלח", + "ButtonSelectView": "בחר תצוגה", + "ButtonSelectServer": "בחר שרת", + "ButtonRename": "שנה שם", + "ButtonPause": "השהה", + "ButtonParentalControl": "בקרת הורים", + "ButtonNetwork": "רשת", + "ButtonMore": "עוד", + "ButtonLearnMore": "למד עוד", + "ButtonInfo": "מידע", + "ButtonHome": "בית", + "ButtonHelp": "עזרה", + "ButtonFullscreen": "מסך מלא", + "ButtonEditImages": "ערוך תמונות", + "ButtonConnect": "התחבר", + "ButtonAddServer": "הוסף שרת", + "ButtonAddMediaLibrary": "הוסף ספריית מדיה", + "ButtonAddImage": "הוסף תמונה", + "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", + "Ascending": "סדר עולה" } From 8a1c7fb6f0b3d0b0d3783d602af0b534ef0d9d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=84?= Date: Tue, 25 Feb 2020 18:06:39 +0000 Subject: [PATCH 146/449] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 8e2e438d89..9cfacb6c34 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -94,7 +94,7 @@ "DeleteMedia": "미디어 제거", "DeleteUser": "사용자 제거", "DeleteUserConfirmation": "이 사용자를 제거하겠습니까?", - "DeviceAccessHelp": "이것은 고유하게 식별할 수 있고 브라우저 접근을 방해하지 않는 장치에만 적용됩니다. 사용자 장치 접근을 필터링하면 여기에서 승인될 때까지 새 장치를 사용할 수 없게 됩니다.", + "DeviceAccessHelp": "이것은 고유하게 식별할 수 있는 장치에만 적용되므로 브라우저를 통한 접근은 차단할 수 없습니다. 사용자 장치 접근을 필터링하면 이곳에서 승인될 때까지 새 장치를 사용할 수 없게 됩니다.", "Director": "감독", "Dislike": "싫어요", "Download": "다운로드", @@ -1285,5 +1285,15 @@ "Identify": "식별자", "HeaderMoreLikeThis": "비슷한 작품", "DirectorsValue": "감독: {0}", - "ButtonSplit": "나누기" + "ButtonSplit": "나누기", + "HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.", + "HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.", + "HeaderAppearsOn": "표시", + "HandledByProxy": "리버스 프록시로 처리", + "Features": "기능", + "ErrorPleaseSelectLineup": "라인업을 선택하고 다시 시도하십시오. 이용 가능한 라인업이 없으면 계정, 비밀번호, 우편번호가 정확한지 확인하십시오.", + "ErrorAddingListingsToSchedulesDirect": "Schedules Direct 계정에 라인업을 추가하는 중에 오류가 발생했습니다. Schedules Direct는 계정 당 제한된 수의 라인업만이 허용됩니다. 계속하려면 Schedules Direct 웹사이트에 로그인하여 다른 항목을 삭제해야 할 수 있습니다.", + "CopyStreamURLError": "URL을 복사하는 중에 오류가 발생했습니다.", + "ColorTransfer": "컬러 변환", + "AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오." } From f7997d5270f1a3e450d19db981679d837e6d37a3 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 25 Feb 2020 18:33:38 -0500 Subject: [PATCH 147/449] Add eslint:recommended and update rules and globals --- .eslintrc.yml | 56 ++++++++++++++++--- src/components/htmlvideoplayer/plugin.js | 1 + .../polyfills/focusPreventScroll.js | 1 + src/components/polyfills/objectassign.js | 1 + src/components/serviceworker/notifications.js | 1 + src/components/skinManager.js | 1 + src/components/youtubeplayer/plugin.js | 1 + src/serviceworker.js | 1 + 8 files changed, 56 insertions(+), 7 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 1055e084c9..c7ec5c228a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,6 +3,52 @@ env: browser: true amd: true +globals: + # New browser globals + DataView: readonly + MediaMetadata: readonly + Promise: readonly + # Deprecated browser globals + DocumentTouch: readonly + # Tizen globals + tizen: readonly + webapis: readonly + # WebOS globals + webOS: readonly + # Dependency globals + $: readonly + jQuery: readonly + queryString: readonly + requirejs: readonly + # Jellyfin globals + ApiClient: writable + AppInfo: writable + chrome: writable + ConnectionManager: writable + DlnaProfilePage: writable + Dashboard: writable + DashboardPage: writable + Emby: readonly + Events: writable + getParameterByName: writable + getWindowLocationSearch: writable + Globalize: writable + Hls: writable + humaneDate: writable + humaneElapsed: writable + LibraryMenu: writable + LinkParser: writable + LiveTvHelpers: writable + MetadataEditor: writable + pageClassOn: writable + pageIdOn: writable + PlaylistViewer: writable + UserParentalControlPage: writable + Windows: readonly + +extends: + - eslint:recommended + rules: block-spacing: ["error"] brace-style: ["error"] @@ -11,17 +57,13 @@ rules: eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] - line-comment-position: ["off"] max-statements-per-line: ["error"] - no-empty: ["error"] - no-extra-semi: ["error"] no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] + no-redeclare: ["warn"] no-trailing-spaces: ["error"] - no-void: ["off"] + no-unused-vars: ["warn"] + no-useless-escape: ["warn"] one-var: ["error", "never"] - padding-line-between-statements: ["off"] - semi: ["off"] space-before-blocks: ["error"] - yoda: ["off"] diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 6760e1dd99..c72afb382f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -357,6 +357,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return new Promise(function (resolve, reject) { require(['shaka'], function () { + /* globals shaka */ var player = new shaka.Player(elem); diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 8c8da94244..6df9e9928c 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -12,6 +12,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { }, true); var opts = Object.defineProperty({}, "preventScroll", { + // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; } diff --git a/src/components/polyfills/objectassign.js b/src/components/polyfills/objectassign.js index bf8d7118a5..85f55aa144 100644 --- a/src/components/polyfills/objectassign.js +++ b/src/components/polyfills/objectassign.js @@ -11,6 +11,7 @@ if (typeof Object.assign != 'function') { var source = arguments[index]; if (source !== undefined && source !== null) { for (var nextKey in source) { + // eslint-disable-next-line no-prototype-builtins if (source.hasOwnProperty(nextKey)) { output[nextKey] = source[nextKey]; } diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index dbb0844045..33f54bb64d 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -1,3 +1,4 @@ +/* eslint-env serviceworker */ (function () { 'use strict'; diff --git a/src/components/skinManager.js b/src/components/skinManager.js index b38ff25791..b81e7c3a40 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -162,6 +162,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function playSound(path, volume) { lastSound = new Date().getTime(); require(['howler'], function (howler) { + /* globals Howl */ try { var sound = new Howl({ src: [path], diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index df04fb850e..fd9c05292e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -1,5 +1,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) { "use strict"; + /* globals YT */ function zoomIn(elem, iterations) { var keyframes = [ diff --git a/src/serviceworker.js b/src/serviceworker.js index 49c3767691..c43d1f4b4e 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1 +1,2 @@ +/* eslint-env serviceworker */ importScripts("components/serviceworker/notifications.js"); From fb2fe462df209086d3e6c33cc14d1ff236fc0e78 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:19:04 -0500 Subject: [PATCH 148/449] Fix redundant double negation errors --- src/components/alphanumericshortcuts/alphanumericshortcuts.js | 2 +- src/components/apphost.js | 2 +- src/scripts/browserdeviceprofile.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 0c62add1e1..2bcf3712bb 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -10,7 +10,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) { if (e.ctrlKey) { return; } - if (!!e.shiftKey) { + if (e.shiftKey) { return; } if (e.altKey) { diff --git a/src/components/apphost.js b/src/components/apphost.js index 291f531eb1..83426a3267 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -324,7 +324,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet * Ask user for exit */ function askForExit() { - if (!!exitPromise) { + if (exitPromise) { return; } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 7eb2c3caff..b45bdc59bf 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -92,7 +92,7 @@ define(['browser'], function (browser) { return true; } - if (!!videoTestElement.canPlayType) { + if (videoTestElement.canPlayType) { return videoTestElement.canPlayType('application/x-mpegurl; codecs="avc1.42E01E, ac-3"').replace(/no/, '') || videoTestElement.canPlayType('application/vnd.apple.mpegURL; codecs="avc1.42E01E, ac-3"').replace(/no/, ''); } From 335dc4eff41b8c4e7768e38fd049501cae9fd3ac Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:42:58 -0500 Subject: [PATCH 149/449] Remove dead code --- src/scripts/userpassword.js | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 src/scripts/userpassword.js diff --git a/src/scripts/userpassword.js b/src/scripts/userpassword.js deleted file mode 100644 index 52e06e6cec..0000000000 --- a/src/scripts/userpassword.js +++ /dev/null @@ -1,30 +0,0 @@ -define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu) { - "use strict"; - - function loadUser(page, user) { - libraryMenu.setTitle(user.Name); - - if ("Guest" == user.ConnectLinkType) { - $(".connectMessage", page).show(); - } else { - $(".connectMessage", page).hide(); - } - - loading.hide(); - } - - function loadData(page) { - loading.show(); - var userId = getParameterByName("userId"); - ApiClient.getUser(userId).then(function (user) { - loadUser(page, user); - }); - } - - $(document).on("pageinit", "#userPasswordPage", function () { - $(".adminUpdatePasswordForm").off("submit", UpdatePasswordPage.onSubmit).on("submit", UpdatePasswordPage.onSubmit); - $(".adminLocalAccessForm").off("submit", UpdatePasswordPage.onLocalAccessSubmit).on("submit", UpdatePasswordPage.onLocalAccessSubmit); - }).on("pagebeforeshow", "#userPasswordPage", function () { - loadData(this); - }); -}); From 45acf525484a1205b114f8492d0c235d9f028792 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:46:56 -0500 Subject: [PATCH 150/449] Fix errors in itemdetailpage --- src/controllers/itemdetailpage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 990de87b60..83bd47d17a 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url = null) { + if (url == null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); @@ -1661,7 +1661,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function canPlaySomeItemInCollection(items) { var i = 0; - for (length = items.length; i < length; i++) { + for (var length = items.length; i < length; i++) { if (playbackManager.canPlay(items[i])) { return true; } From 36224ce5f71f28c62b833089fdb429ed744c65af Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:48:41 -0500 Subject: [PATCH 151/449] Fix undefined globalize error --- src/controllers/dashboard/general.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index fe8661b578..a434e46241 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -58,7 +58,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb }); }, function () { require(["alert"], function (alert) { - alert(globalize.translate("DefaultErrorMessage")); + alert(Globalize.translate("DefaultErrorMessage")); }); Dashboard.processServerConfigurationUpdateResult(); From 75b7afd531bc96497db464737ae32c1f675b1e25 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:01:21 -0500 Subject: [PATCH 152/449] Fix references to removed renderHasPendingRestart function --- src/controllers/dashboard/dashboard.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 1b7d123931..2530d7a9a1 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -741,21 +741,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }; return function (view, params) { function onRestartRequired(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onRestartRequired not implemented', evt, apiClient); } function onServerShuttingDown(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerShuttingDown not implemented', evt, apiClient); } function onServerRestarting(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerRestarting not implemented', evt, apiClient); } function onPackageInstalling(evt, apiClient) { From f12e24b1cb130c47158a8599b3c16427097c0ddd Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:07:23 -0500 Subject: [PATCH 153/449] Fix undefined variables in tunerpicker --- src/components/tunerpicker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index ec6087b890..4dd5ecd3de 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -1,4 +1,4 @@ -define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser) { +define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "focusManager", "scrollHelper", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; @@ -152,14 +152,14 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, true); + scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); } var apiClient = connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, false); + scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), false); } return dialogHelper.open(dlg).then(function () { From 23c3536acedcbb14e76af17e711442e6792ef9b6 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:12:48 -0500 Subject: [PATCH 154/449] Suppress fallthrough error in subtitlesync --- src/components/subtitlesync/subtitlesync.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 904c612317..07ce2cb7ec 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -130,7 +130,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle = function(action) { if (player && playbackManager.supportSubtitleOffset(player)) { - + /* eslint-disable no-fallthrough */ switch (action) { case undefined: // if showing subtitle sync is enabled @@ -157,7 +157,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncContainer.classList.add("hide"); break; } - + /* eslint-enable no-fallthrough */ } } From 75ac5ed8b28bca9ddc3d9c1a3bd24d611330490b Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:23:28 -0500 Subject: [PATCH 155/449] Suppress getter-return errors in compatibility tests --- src/components/dom.js | 1 + src/components/scrollManager.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/dom.js b/src/components/dom.js index 5c96965d15..072ff5c77c 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -63,6 +63,7 @@ define([], function () { var supportsCaptureOption = false; try { var opts = Object.defineProperty({}, 'capture', { + // eslint-disable-next-line getter-return get: function () { supportsCaptureOption = true; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 21af83055f..5fc3729bac 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -33,6 +33,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var elem = document.createElement("div"); var opts = Object.defineProperty({}, "behavior", { + // eslint-disable-next-line getter-return get: function () { supportsScrollToOptions = true; } From b30469654f56f011bee515c13e0065b4f5c35f4f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:10 -0500 Subject: [PATCH 156/449] Suppress no-control-regex in sanitizefilename --- src/components/sanitizefilename.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index 9bcc99e3a1..f53ce613f6 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -4,6 +4,7 @@ define([], function () { 'use strict'; var illegalRe = /[\/\?<>\\:\*\|":]/g; + // eslint-disable-next-line no-control-regex var controlRe = /[\x00-\x1f\x80-\x9f]/g; var reservedRe = /^\.+$/; var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; From 29e7c4775bc931b083d21319a1ded36776f023e4 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:40 -0500 Subject: [PATCH 157/449] Fix undefined type in libraryoptionseditor --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index f9f63c9b51..123fce9b95 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -463,7 +463,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct if (!typeOptions) { typeOptions = { - Type: type + Type: originalTypeOption.Type }; options.TypeOptions.push(typeOptions); } From 210e241c7746d06008e3e83abe92b51cc645c054 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:42:05 -0500 Subject: [PATCH 158/449] Suppress conditional assignment error in humanedate lib --- src/components/humanedate.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/humanedate.js b/src/components/humanedate.js index 85d3a6d3bf..26ce26d942 100644 --- a/src/components/humanedate.js +++ b/src/components/humanedate.js @@ -25,6 +25,7 @@ define(["datetime"], function (datetime) { if (seconds < 0) { seconds = Math.abs(seconds); } + // eslint-disable-next-line no-cond-assign for (; format = time_formats[i++];) { if (seconds < format[0]) { if (2 == format.length) { From 4c297573f11abdbbede9708b6a921a8ff89f252c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:58:15 -0500 Subject: [PATCH 159/449] Fix errors in htmlvideoplayer plugin --- src/components/htmlvideoplayer/plugin.js | 43 +++++------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index c72afb382f..2a59f3b13f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,5 +1,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager, globalize) { "use strict"; + /* globals cast */ var mediaManager; @@ -741,7 +742,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } + // No idea what this is possibly trying to workaround setTimeout(function () { + // eslint-disable-next-line no-self-assign elem.currentTime = elem.currentTime; }, 100); }; @@ -1350,38 +1353,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } - function updateTextStreamUrls(startPositionTicks) { - - if (!supportsTextTracks()) { - return; - } - - var allTracks = self._mediaElement.textTracks; // get list of tracks - var i; - var track; - - for (i = 0; i < allTracks.length; i++) { - - track = allTracks[i]; - - // This throws an error in IE, but is fine in chrome - // In IE it's not necessary anyway because changing the src seems to be enough - try { - while (track.cues.length) { - track.removeCue(track.cues[0]); - } - } catch (e) { - console.error('error removing cue from textTrack'); - } - } - - var tracks = self._mediaElement.querySelectorAll('track'); - for (i = 0; i < tracks.length; i++) { - track = tracks[i]; - track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks); - } - } - function createMediaElement(options) { if (browser.tv || browser.iOS || browser.mobile) { @@ -1653,9 +1624,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (document.AirPlayEnabled) { if (video) { if (isEnabled) { - video.requestAirPlay().catch(onAirPlayError); + video.requestAirPlay().catch(function(err) { + console.error("Error requesting AirPlay", err) + }); } else { - document.exitAirPLay().catch(onAirPlayError); + document.exitAirPLay().catch(function(err) { + console.error("Error exiting AirPlay", err) + }); } } } else { From 6acff39055fb38ad1bc35df6c9b732494d9ef91e Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:00:13 -0500 Subject: [PATCH 160/449] Remove dead code --- src/components/guide/guide-settings.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index b31a3d1086..7409a7e943 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -89,20 +89,6 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } } - function onSortByChange() { - var newValue = this.value; - if (this.checked) { - var changed = options.query.SortBy !== newValue; - - options.query.SortBy = newValue.replace('_', ','); - options.query.StartIndex = 0; - - if (options.callback && changed) { - options.callback(); - } - } - } - function showEditor(options) { return new Promise(function (resolve, reject) { From ce2fdc9df281d86015e7e26f30423fe3b771a629 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:03:21 -0500 Subject: [PATCH 161/449] Fix errors in chromecasthelpers --- src/components/chromecast/chromecasthelpers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index d8bb29252d..2fef0c68b3 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -131,8 +131,9 @@ define(['events'], function (events) { var links = []; var match; + // eslint-disable-next-line no-cond-assign while (match = linkRegExp.exec(text)) { - console.debug(matches); + console.debug(match); var txt = match[0]; var pos = match.index; var len = txt.length; From 33bbd40174a186650c87b4f6390f3aebb0e054ed Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:26:18 -0500 Subject: [PATCH 162/449] Fix errors in cardBuilder --- src/components/cardbuilder/cardBuilder.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 75702f386e..bc82813d9a 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -140,7 +140,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; case 'overflowPortrait': if (layoutManager.tv) { @@ -166,7 +165,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowSquare': if (layoutManager.tv) { return 100 / 15.5; @@ -191,7 +189,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowBackdrop': if (layoutManager.tv) { return 100 / 23.3; @@ -216,7 +213,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; default: return 4; } @@ -870,9 +866,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (item.PremiereDate) { try { - - lines.push(getPremiereDateText(item)); - + lines.push(datetime.toLocaleDateString( + datetime.parseISO8601Date(item.PremiereDate), + { weekday: 'long', month: 'long', day: 'numeric' } + )); } catch (err) { lines.push(''); @@ -1383,7 +1380,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress || (item.RefreshStatus && virtualFolder.item !== 'Idle') ? '' : ' class="hide"'; + var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } From c46c6c220347442ac496f51de9d2c42c8d8d88e2 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:29:52 -0500 Subject: [PATCH 163/449] Fix browsers that do not support Promises --- package.json | 1 - src/bundle.js | 6 ------ src/scripts/apploader.js | 26 +++++++++++++++++++------- src/scripts/site.js | 6 +----- webpack.common.js | 2 +- yarn.lock | 10 ---------- 6 files changed, 21 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 87050382c5..726823208f 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", - "requirejs": "^2.3.5", "resize-observer-polyfill": "^1.5.1", "shaka-player": "^2.5.9", "sortablejs": "^1.10.2", diff --git a/src/bundle.js b/src/bundle.js index b7bde65f80..6a352c5776 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -47,12 +47,6 @@ _define("howler", function() { return howler; }); -// native-promise-only -var nativePromise = require("native-promise-only"); -_define("native-promise-only", function() { - return nativePromise; -}); - // resize-observer-polyfill var resize = require("resize-observer-polyfill").default; _define("resize-observer-polyfill", function() { diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index 4b5d2e8eec..e8a63217a8 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -19,11 +19,23 @@ document.head.appendChild(script); } - injectScriptElement( - self.Promise ? "./libraries/alameda.js" : "./libraries/require.js", - function() { - // onload of require library - injectScriptElement("./scripts/site.js"); - } - ); + function loadSite() { + injectScriptElement( + "./libraries/alameda.js", + function() { + // onload of require library + injectScriptElement("./scripts/site.js"); + } + ); + } + + if (!self.Promise) { + // Load Promise polyfill if they are not natively supported + injectScriptElement( + "./libraries/npo.js", + loadSite + ); + } else { + loadSite(); + } })(); diff --git a/src/scripts/site.js b/src/scripts/site.js index e43e321e8a..599f69c531 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -671,11 +671,7 @@ var AppInfo = {}; AppInfo.isNativeApp = true; } - if (!window.Promise || browser.web0s) { - require(["native-promise-only"], init); - } else { - init(); - } + init(); } var localApiClient; diff --git a/webpack.common.js b/webpack.common.js index 5e0f885267..0809fc01bb 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -5,7 +5,7 @@ const CopyPlugin = require("copy-webpack-plugin"); const Assets = [ "alameda/alameda.js", - "requirejs/require.js", + "native-promise-only/npo.js", "libass-wasm/dist/subtitles-octopus-worker.js", "libass-wasm/dist/subtitles-octopus-worker.data", "libass-wasm/dist/subtitles-octopus-worker.wasm" diff --git a/yarn.lock b/yarn.lock index 7187bd1774..669d31a4a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5415,11 +5415,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requirejs@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" - integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5639,11 +5634,6 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" From 15ef6bf94513912474807ab44702a0e3a4db765c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:49:53 -0500 Subject: [PATCH 164/449] Add missing semicolon warning --- .eslintrc.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index c7ec5c228a..f5ce779d44 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -61,9 +61,11 @@ rules: no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] - no-redeclare: ["warn"] no-trailing-spaces: ["error"] + one-var: ["error", "never"] + semi: ["warn"] + space-before-blocks: ["error"] + # TODO: Fix warnings and remove these rules + no-redeclare: ["warn"] no-unused-vars: ["warn"] no-useless-escape: ["warn"] - one-var: ["error", "never"] - space-before-blocks: ["error"] From 6f0b735b3d742b8b4b5b4a9948f25b28c3450769 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:50:41 -0500 Subject: [PATCH 165/449] Fix inverted logic --- src/controllers/itemdetailpage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 83bd47d17a..ad8c0286b0 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url == null) { + if (url != null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); From 8cdeaa8190573b2a3fea7923a11cb19bb8f4f3e5 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:51:34 -0500 Subject: [PATCH 166/449] Remove questionable code --- src/components/htmlvideoplayer/plugin.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 2a59f3b13f..3ac45aabb9 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -741,12 +741,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elemAudioTracks[i].enabled = false; } } - - // No idea what this is possibly trying to workaround - setTimeout(function () { - // eslint-disable-next-line no-self-assign - elem.currentTime = elem.currentTime; - }, 100); }; self.stop = function (destroyPlayer) { From ac50a0b1965160a49797acc893bf3c41d32e14e5 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Tue, 25 Feb 2020 23:33:17 +0000 Subject: [PATCH 167/449] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index e32add2356..d2e7263177 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -591,5 +591,6 @@ "ButtonAddMediaLibrary": "הוסף ספריית מדיה", "ButtonAddImage": "הוסף תמונה", "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", - "Ascending": "סדר עולה" + "Ascending": "סדר עולה", + "Photos": "תמונות" } From 7e369da67b7b0965258e0ba1d9310f4bd3182bf1 Mon Sep 17 00:00:00 2001 From: Vincent Phan Date: Wed, 26 Feb 2020 04:17:14 +0000 Subject: [PATCH 168/449] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 99ab29d68b..88e7051d8a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -215,5 +215,10 @@ "AddToPlaylist": "Thêm vào danh sách phát", "AddToPlayQueue": "Thêm vào hàng đợi", "AddItemToCollectionHelp": "Thêm các mục vào bộ sưu tập bằng cách tìm kiếm và nhấp chuột phải hoặc nhấn vào menu để thêm chúng vào bộ sưu tập.", - "Absolute": "Tuyệt Đối" + "Absolute": "Tuyệt Đối", + "ButtonSend": "Gửi", + "ButtonSelectView": "Chọn chế độ xem", + "ButtonSelectServer": "Chọn máy chủ", + "ButtonScanAllLibraries": "Quét tất cả các thư viện", + "ButtonOk": "Đồng Ý" } From 8a200e54af1b49e5158bfb3e9562fdf171ebb3f3 Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 28 Feb 2020 10:09:46 +0100 Subject: [PATCH 169/449] Final overhaul to gamepad handling --- src/components/input/gamepadtokey.js | 50 +++++++++++++++++++--- src/components/input/keyboardnavigation.js | 21 ++++----- 2 files changed, 53 insertions(+), 18 deletions(-) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index 73f587f43b..bb4d0fffd6 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -251,13 +251,14 @@ require(['apphost'], function (appHost) { } } + var inputLoopTimer; function runInputLoop() { // Get the latest gamepad state. var gamepads = navigator.getGamepads(); for (var i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; if (!gamepad) { - return; + continue; } // Iterate through the axes var axes = gamepad.axes; @@ -279,8 +280,7 @@ require(['apphost'], function (appHost) { } // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. var buttons = gamepad.buttons; - var j; - for (j = 0, len = buttons.length; j < len; j++) { + for (var j = 0, len = buttons.length; j < len; j++) { if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) { switch (j) { @@ -347,10 +347,50 @@ require(['apphost'], function (appHost) { } } // Schedule the next one - requestAnimationFrame(runInputLoop); + inputLoopTimer = requestAnimationFrame(runInputLoop); } - runInputLoop(); + function startInputLoop() { + if (!inputLoopTimer) { + runInputLoop(); + } + } + + function stopInputLoop() { + cancelAnimationFrame(inputLoopTimer); + inputLoopTimer = undefined; + } + + function isGamepadConnected() { + var gamepads = navigator.getGamepads(); + for (var i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (gamepad) { + return true; + } + } + return false; + } + + function attachGamepad(e) { + if (isGamepadConnected()) { + console.log("Gamepad connected! Starting input loop"); + startInputLoop(); + } + } + + function dettachGamepad(e) { + if (!isGamepadConnected()) { + console.log("Gamepad disconnected! No other gamepads are connected, stopping input loop"); + stopInputLoop(); + } else { + console.log("Gamepad disconnected! There are gamepads still connected."); + } + } + + // Event Listeners for any change in gamepads' state. + window.addEventListener("gamepaddisconnected", dettachGamepad); + window.addEventListener("gamepadconnected", attachGamepad); // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. // It won't exist in Win8.1 style apps or browsers. diff --git a/src/components/input/keyboardnavigation.js b/src/components/input/keyboardnavigation.js index 956c847a51..b3c68e604f 100644 --- a/src/components/input/keyboardnavigation.js +++ b/src/components/input/keyboardnavigation.js @@ -145,7 +145,11 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } }); } + // For hiding the mouse while playbackç + require(["components/input/mouseManager"]); + // Gamepad initialization. No script is required if no gamepads are at boot time, saving a bit of resources._10k + // Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler function isGamepadConnected() { var gamepads = navigator.getGamepads(); for (var i = 0, len = gamepads.length; i < len; i++) { @@ -157,25 +161,16 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) return false; } - function attachGamepad(e) { + function attachGamepadScript(e) { if (isGamepadConnected()) { - require(["components/input/gamepadtokey"]); console.log("Gamepad connected! Attaching gamepadtokey.js script"); - } - } - - function dettachGamepad(e) { - if (!isGamepadConnected()) { - console.log("Gamepad disconnected! No other gamepads are connected, dettaching gamepadtokey.js"); - } else { - console.log("Gamepad disconnected! There are gamepads still connected."); + window.removeEventListener("gamepadconnected", attachGamepadScript); + require(["components/input/gamepadtokey"]); } } // No need to check for gamepads manually at load time, the eventhandler will be fired for that - window.addEventListener("gamepaddisconnected", dettachGamepad); - window.addEventListener("gamepadconnected", attachGamepad); - require(["components/input/mouseManager"]); + window.addEventListener("gamepadconnected", attachGamepadScript); return { enable: enable, From 440675fbee70074258a54a275c9c5a4fc0555c77 Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 28 Feb 2020 13:51:41 +0100 Subject: [PATCH 170/449] Apply suggestions --- src/components/input/keyboardnavigation.js | 23 ++++------------------ src/scripts/site.js | 2 ++ 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/components/input/keyboardnavigation.js b/src/components/input/keyboardnavigation.js index b3c68e604f..0359ee7430 100644 --- a/src/components/input/keyboardnavigation.js +++ b/src/components/input/keyboardnavigation.js @@ -145,28 +145,13 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } }); } - // For hiding the mouse while playbackç - require(["components/input/mouseManager"]); - // Gamepad initialization. No script is required if no gamepads are at boot time, saving a bit of resources._10k + // Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. // Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler - function isGamepadConnected() { - var gamepads = navigator.getGamepads(); - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; - if (gamepad) { - return true; - } - } - return false; - } - function attachGamepadScript(e) { - if (isGamepadConnected()) { - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - window.removeEventListener("gamepadconnected", attachGamepadScript); - require(["components/input/gamepadtokey"]); - } + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + window.removeEventListener("gamepadconnected", attachGamepadScript); + require(["components/input/gamepadtokey"]); } // No need to check for gamepads manually at load time, the eventhandler will be fired for that diff --git a/src/scripts/site.js b/src/scripts/site.js index 280addc2f9..fc18ae9504 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -492,6 +492,7 @@ var AppInfo = {}; require(["keyboardnavigation"], function(keyboardnavigation) { keyboardnavigation.enable(); }); + require(["mouseManager"]); require(["focusPreventScroll"]); require(["autoFocuser"], function(autoFocuser) { autoFocuser.enable(); @@ -907,6 +908,7 @@ var AppInfo = {}; define("serverNotifications", [componentsPath + "/serverNotifications"], returnFirstDependency); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); define("keyboardnavigation", [componentsPath + "/input/keyboardnavigation"], returnFirstDependency); + define("mouseManager", [componentsPath + "/input/mouseManager"], returnFirstDependency); define("scrollManager", [componentsPath + "/scrollManager"], returnFirstDependency); define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency); define("connectionManager", [], function () { From 9c84b8268f76a1e89606e0766385584e64b7abff Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 28 Feb 2020 17:19:03 +0100 Subject: [PATCH 171/449] Handle gamepads more gracefully based in window focus --- src/components/input/gamepadtokey.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index bb4d0fffd6..9d80a3c27e 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -373,14 +373,14 @@ require(['apphost'], function (appHost) { } function attachGamepad(e) { - if (isGamepadConnected()) { + if (isGamepadConnected() && document.hasFocus()) { console.log("Gamepad connected! Starting input loop"); startInputLoop(); } } function dettachGamepad(e) { - if (!isGamepadConnected()) { + if (!isGamepadConnected() || !document.hasFocus()) { console.log("Gamepad disconnected! No other gamepads are connected, stopping input loop"); stopInputLoop(); } else { @@ -391,6 +391,8 @@ require(['apphost'], function (appHost) { // Event Listeners for any change in gamepads' state. window.addEventListener("gamepaddisconnected", dettachGamepad); window.addEventListener("gamepadconnected", attachGamepad); + window.addEventListener("blur", dettachGamepad); + window.addEventListener("focus", attachGamepad); // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. // It won't exist in Win8.1 style apps or browsers. From 1f7b41e303c3c3f985227f4fd879ca1837eff306 Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 28 Feb 2020 17:30:52 +0100 Subject: [PATCH 172/449] Fire input loop --- src/components/input/gamepadtokey.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index 9d80a3c27e..2feff55747 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -394,6 +394,8 @@ require(['apphost'], function (appHost) { window.addEventListener("blur", dettachGamepad); window.addEventListener("focus", attachGamepad); + attachGamepad(); + // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. // It won't exist in Win8.1 style apps or browsers. if (window.navigator && typeof window.navigator.gamepadInputEmulation === "string") { From c0ac5a32565378515a9bee533b0a9832ba878109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=AD=20Nguy=E1=BB=85n?= Date: Fri, 28 Feb 2020 11:53:48 +0000 Subject: [PATCH 173/449] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 88e7051d8a..e32272bdaf 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -220,5 +220,21 @@ "ButtonSelectView": "Chọn chế độ xem", "ButtonSelectServer": "Chọn máy chủ", "ButtonScanAllLibraries": "Quét tất cả các thư viện", - "ButtonOk": "Đồng Ý" + "ButtonOk": "Đồng Ý", + "ButtonShuffle": "Xáo trộn", + "Categories": "Phân loại", + "CancelRecording": "Ngưng ghi hình", + "ButtonWebsite": "Trang web", + "ButtonViewWebsite": "Xem trang web", + "ButtonUp": "Lên", + "ButtonUninstall": "Gỡ cài đặt", + "ButtonTrailer": "Tóm tắt", + "ButtonSubtitles": "Phụ đề", + "ButtonSubmit": "Đăng", + "ButtonSplit": "Tách", + "ButtonStop": "Ngưng", + "ButtonStart": "Bắt đầu", + "ButtonSignIn": "Đăng nhập", + "ButtonShutdown": "Tắt", + "ButtonSettings": "Cài đặt" } From e5dcd1031a1a19b6ead51a32e10c56ef3d7125cf Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Fri, 28 Feb 2020 15:40:09 +0000 Subject: [PATCH 174/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 06104cfc28..3f27d75ba3 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -706,7 +706,7 @@ "LabelPublicHttpsPort": "公开 HTTPS 端口号:", "LabelPublicHttpsPortHelp": "映射到本地 HTTPS 端口的公开端口号。", "LabelReadHowYouCanContribute": "学习如何构建。", - "LabelReasonForTranscoding": "转码的原因:", + "LabelReasonForTranscoding": "转码原因:", "LabelRecord": "录制:", "LabelRecordingPath": "默认录制路径:", "LabelRecordingPathHelp": "指定一个默认位置用于存储转码文件。如果该位置留空,服务器的程序数据文件夹将被使用。", @@ -1448,7 +1448,7 @@ "LabelFolder": "文件夹:", "LabelBitrate": "比特率:", "LabelAudioSampleRate": "采样率:", - "LabelAudioCodec": "编码:", + "LabelAudioCodec": "音频编码:", "LabelAudioChannels": "声道:", "LabelAudioBitrate": "比特率:", "LabelAudioBitDepth": "采样位宽:", From 0b95302e4c7cdfcf5b679d21c4423afa338d8dab Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 29 Feb 2020 08:38:21 +0000 Subject: [PATCH 175/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 083403ad46..dc01ba483b 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -267,7 +267,7 @@ "LabelGroupMoviesIntoCollections": "Filmek csoportosítása gyűjteményekbe", "LabelEncoderPreset": "H264 enkóder beállítások:", "LabelHardwareAccelerationType": "Hardveres gyorsítás:", - "LabelHardwareAccelerationTypeHelp": "Ez egy kísérleti szolgáltatás, amely csak a támogatott rendszereken érhető el.", + "LabelHardwareAccelerationTypeHelp": "A hardveres gyorsítás további konfigurálást igényel.", "LabelHomeScreenSectionValue": "{0}. kezdőképernyő blokk:", "LabelImageType": "Kép típusa:", "LabelKodiMetadataDateFormat": "Megjelenési dátum formátuma:", @@ -602,7 +602,7 @@ "Backdrops": "Háttér", "Banner": "Banner", "BirthLocation": "Születési hely", - "Box": "Box", + "Box": "Doboz", "AlwaysPlaySubtitlesHelp": "A nyelvi beállításoknak megfelelő feliratok az audió nyelvétől függetlenül kerülnek betöltésre.", "Artists": "Előadók", "Blacklist": "Feketelista", @@ -659,7 +659,7 @@ "DirectPlaying": "Közvetlen lejátszás", "DirectStreamHelp1": "Az adathordozó kompatibilis a készülékkel a felbontás és a médiatípus (H.264, AC3, stb.) tekintetében, de nem kompatibilis a fájltárolóban (.mkv, .avi, .wmv, stb.). A videófelvétel újra csomagolásra kerül, mielőtt azt a készülékre továbbítaná.", "DirectStreamHelp2": "A fájl közvetlen közvetítése (Direct Streaming) nagyon kevés feldolgozási erőforrást használ, ennek ellenére a videó nem veszít a minőségéből.", - "DirectStreaming": "Direct streaming", + "DirectStreaming": "Közvetlen streaming", "Disabled": "Tiltva", "Disc": "Lemez", "Disconnect": "Szétkapcsol", @@ -748,7 +748,7 @@ "HeaderIdentificationCriteriaHelp": "Adj meg legalább egy azonosítási kritériumot.", "HeaderIdentificationHeader": "Azonosító fejléc", "HeaderImageOptions": "Képbeállítások", - "HeaderInstantMix": "Instant Mix", + "HeaderInstantMix": "Azonnali keverés", "HeaderItems": "Elemek", "HeaderKeepRecording": "Felvétel készítése", "HeaderKodiMetadataHelp": "Az Nfo metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat a Jellyfin Médiatár beállításaiban és keresd meg a metaadat letöltő részt.", @@ -820,7 +820,7 @@ "Horizontal": "Vízszintes", "HttpsRequiresCert": "A biztonságos kapcsolatok engedélyezéséhez megbízható SSL-tanúsítványt kell használni, mint például a Let's Encrypt. Kérlek add meg a tanúsítványt, vagy tiltsd le a biztonságos kapcsolatokat.", "ImportMissingEpisodesHelp": "Ha engedélyezve van, a hiányzó epizódokra vonatkozó információk a Jellyfin adatbázisába kerülnek importálásra és megjelenítésre kerülnek az évadokban és sorozatokban. Ez jelentősen hosszabb könyvtárvizsgálatot okozhat.", - "InstantMix": "Instant mix", + "InstantMix": "Azonnali keverés", "ItemCount": "{0} elem", "Items": "Elemek", "Kids": "Gyerekek", @@ -1441,5 +1441,35 @@ "HeaderKeepSeries": "Sorozat megtartása", "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra.", "LabelTranscodes": "Átkódolások:", - "AskAdminToCreateLibrary": "Kérj meg egy adminisztrátort könyvtár létrehozására." + "AskAdminToCreateLibrary": "Kérj meg egy adminisztrátort könyvtár létrehozására.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "MapChannels": "Csatornák feltérképezése", + "PasswordResetProviderHelp": "Válassz egy jelszó-visszaállítási szolgáltatót, amelyet akkor kell használni, amikor a felhasználó jelszó-visszaállítást kér", + "OptionResElement": "res elem", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Erre olyan készülékek esetében van szükség, amelyek időigénye nem nagyon jó.", + "OptionPlainVideoItemsHelp": "Ha engedélyezve van, akkor az összes videót a DIDL-ben \"object.item.videoItem\" -ként ábrázolja, nem pedig egy specifikusabb típusként, például \"object.item.videoItem.movie\" .", + "OptionPlainStorageFoldersHelp": "Ha engedélyezve van, akkor az összes mappa a DIDL-ben \"object.container.storageFolder\" lesz, nem pedig egy specifikusabb típusként, például \"object.container.person.musicArtist\".", + "OptionHlsSegmentedSubtitles": "HLS szegmentált feliratok", + "OptionEquals": "Egyenlő", + "OptionForceRemoteSourceTranscoding": "A távoli médiaforrások (például az élő TV) átkódolásának kényszerítése", + "NoCreatedLibraries": "Úgy tűnik még nem hoztál létre egy könyvtárat sem. {0}Szeretnél létrehozni egyet most?{1}", + "MessageDirectoryPickerBSDInstruction": "A BSD esetében valószínűleg konfigurálni kell a FreeNAS Jailben lévő tárolót, hogy a Jellyfin hozzáférhest kapjon.", + "LabelXDlnaDocHelp": "Meghatározza az X_DLNADOC elem tartalmát az urn: schemas-dlna-org: device-1-0 névtérben.", + "LabelXDlnaCapHelp": "Meghatározza az X_DLNACAP elem tartalmát az urn: schemas-dlna-org: eszköz-1-0 névtérben.", + "LabelVaapiDeviceHelp": "Ez a render csomópont, amelyet a hardveres gyorsításhoz használunk.", + "LabelTriggerType": "Trigger típusa:", + "LabelTranscodingProgress": "Átkódolás folyamatban:", + "LabelTranscodingFramerate": "Átkódolás framerate:", + "LabelTranscodePath": "Átkódolási útvonal:", + "LabelSonyAggregationFlagsHelp": "Meghatározza az aggregationFlags elem tartalmát az urn: schemas-sonycom: av névtérben.", + "LabelPostProcessorArguments": "Utófeldolgozási parancssori paraméterek:", + "LabelPlayerDimensions": "Lejátszó méretei:", + "LabelParentNumber": "Szülő száma:", + "LabelMetadataReadersHelp": "Rangsorold az előnyben részesített metaadat forrásokat. Az a forrás kerül sorsolásra, amelyben először találunk információt.", + "LabelLineup": "Felhozatal:", + "LabelBaseUrlHelp": "Ide hozzáadhatsz egy egyéni alkönyvtárat, hogy a szerverhez egyedibb URL-címről férj hozzá.", + "ErrorPleaseSelectLineup": "Kérjük, válassz ki egy felhozatalt, és próbáld újra. Ha nem állnak rendelkezésre felsorolások, akkor ellenőrizd, hogy helyes-e felhasználóneved, jelszavad és irányítószámod.", + "ErrorAddingListingsToSchedulesDirect": "Hiba történt a felhozatal hozzáadása közben a Schedules Direct fiókhoz. A Schedules Direct csak korlátozott számú fiók hozzáadását támogatja. Lehetséges, hogy be kell jelentkezned a Schedules Direct weboldalán és eltávolítani néhány más listát a fiókodról mielőtt továbblépsz.", + "DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket." } From d1e482946f04f059c3c9873f884ecc8570676487 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 29 Feb 2020 10:26:56 +0000 Subject: [PATCH 176/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index dc01ba483b..7be3f89ce0 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -816,7 +816,7 @@ "HeaderXmlDocumentAttribute": "XML dokumentum attribútum", "HeaderXmlDocumentAttributes": "XML dokumentum attribútumok", "HeaderXmlSettings": "XML beállítások", - "Hide": "Elrejt", + "Hide": "Elrejtés", "Horizontal": "Vízszintes", "HttpsRequiresCert": "A biztonságos kapcsolatok engedélyezéséhez megbízható SSL-tanúsítványt kell használni, mint például a Let's Encrypt. Kérlek add meg a tanúsítványt, vagy tiltsd le a biztonságos kapcsolatokat.", "ImportMissingEpisodesHelp": "Ha engedélyezve van, a hiányzó epizódokra vonatkozó információk a Jellyfin adatbázisába kerülnek importálásra és megjelenítésre kerülnek az évadokban és sorozatokban. Ez jelentősen hosszabb könyvtárvizsgálatot okozhat.", From 89d340e86f6c9da8f1f1532947f8a9e519e5f6d2 Mon Sep 17 00:00:00 2001 From: sorinyo2004 <41705642+sorinyo2004@users.noreply.github.com> Date: Sat, 29 Feb 2020 15:55:28 +0200 Subject: [PATCH 177/449] Fix hover buttons layout on portraitCard In the collection screen, the hover buttons for movies was not inline (on a 1080 screen). I have reduced the padding by 0.05 em on the cardOverlayButton-hover so the icons will fit on one line at the bottom of the postcard --- src/components/cardbuilder/card.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 7e2855c85c..ea9f42927f 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -784,7 +784,7 @@ button::-moz-focus-inner { opacity: 0; transition: 0.2s; background: transparent; - padding: 0.5em; + padding: 0.25em; } .cardOverlayButtonIcon-hover { From 4fdab1e8b652d3a1a7e4ec1afd374abf8abf58cf Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 17 Feb 2020 22:03:36 +0100 Subject: [PATCH 178/449] Hide details page artwork if disabled by user --- src/assets/css/librarybrowser.css | 16 ++++++++++++++++ src/controllers/itemdetailpage.js | 19 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 7a3e0ada68..2007a0df77 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -443,6 +443,22 @@ position: relative; } +.itemBackdrop.noBackdrop { + display: none; +} + +.detailPageContent.noBackdrop { + margin-top: 6.75em; +} + +.layout-desktop .detailImageContainer.noBackdrop img { + margin-top: -2.5em; +} + +.layout-tv .detailImageContainer.noBackdrop img { + margin-top: 0; +} + .personBackdrop { background-size: contain; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index ad8c0286b0..31e9434ad6 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1,4 +1,4 @@ -define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, appHost, imageLoader, libraryMenu, globalize, browser, events, scrollHelper, playbackManager, libraryBrowser) { +define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, appHost, imageLoader, libraryMenu, globalize, browser, events, scrollHelper, playbackManager, libraryBrowser) { "use strict"; function getPromise(apiClient, params) { @@ -464,6 +464,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild item.Type === "MusicArtist" || item.Type === "Person"; + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + return hasbackdrop; + } + if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", @@ -663,7 +667,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild }); var detailLogo = page.querySelector(".detailLogo"); - if (url) { + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + detailLogo.classList.add("hide"); + } else if (url) { detailLogo.classList.remove("hide"); detailLogo.classList.add("lazy"); detailLogo.setAttribute("data-src", url); @@ -838,6 +844,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild } } + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + elem.classList.add("noBackdrop"); + } + if ("thumb" == shape) { elem.classList.add("thumbDetailImageContainer"); elem.classList.remove("portraitDetailImageContainer"); @@ -1047,6 +1057,11 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild } function renderDetails(page, item, apiClient, context, isStatic) { + var taglineElement = page.querySelector(".detailPageContent"); + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + taglineElement.classList.add("noBackdrop"); + } + renderSimilarItems(page, item, context); renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); From 94cdd38de168dc667d170543f77e5c59151c5a20 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 23 Feb 2020 21:14:38 +0100 Subject: [PATCH 179/449] Changes to details page layout --- src/assets/css/librarybrowser.css | 51 +++++++++++++++++++++---------- src/controllers/itemdetailpage.js | 6 ++++ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 2007a0df77..96731fca78 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -439,10 +439,21 @@ background-size: cover; background-repeat: no-repeat; background-position: center; + background-attachment: fixed; height: 50vh; position: relative; } +.layout-desktop .itemBackdrop::after, +.layout-tv .itemBackdrop::after { + content: ""; + width: 100%; + height: 100%; + background: #000000ad; + background: rgba(0, 0, 0, 0.65); + display: block; +} + .itemBackdrop.noBackdrop { display: none; } @@ -525,8 +536,6 @@ display: flex; align-items: center; align-content: center; - position: sticky; - top: 3.85em; z-index: 2; } @@ -536,13 +545,19 @@ top: 0; } -.layout-tv .detailPagePrimaryContainer { +.layout-tv .detailPagePrimaryContainer:not(.noBackdrop), +.layout-desktop .detailPagePrimaryContainer:not(.noBackdrop) { position: relative; top: 0; + padding-left: 32.45vw; } .detailSticky { - background-color: #101010; + margin-top: -7.3em; +} + +.detailSticky.noBackdrop { + margin-top: 0; } .infoWrapper { @@ -572,15 +587,15 @@ } .detailImageContainer { - position: sticky; - top: 25%; + position: relative; + margin-top: -25vh; float: left; - width: 22.786458333333332vw; + width: 25vw; + z-index: 3; } -.layout-mobile .detailImageContainer, -.layout-tv .detailImageContainer { - position: relative; +.detailImageContainer.noBackdrop { + margin-top: 0; } .detailPagePrimaryContent { @@ -588,11 +603,11 @@ } .detailLogo { - width: 25em; - height: 9.375em; + width: 67.25vw; + height: 14.5vh; position: absolute; - top: 14.5%; - right: 10.5%; + top: 15vh; + right: 0; -webkit-background-size: contain; background-size: contain; } @@ -623,8 +638,8 @@ .itemDetailImage { width: 100% !important; - box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + -webkit-box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75); + box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75); } div.itemDetailGalleryLink.defaultCardBackground { @@ -865,6 +880,10 @@ div.itemDetailGalleryLink.defaultCardBackground { border-collapse: collapse; } +.detailPageWrapperContainer.noBackdrop { + margin-top: 4em; +} + .mediaInfoStream { margin: 0 3em 0 0; display: inline-block; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 31e9434ad6..fecca7f015 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -515,6 +515,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti hasbackdrop = true; } else { itemBackdropElement.classList.add("noBackdrop"); + page.querySelector(".detailPageWrapperContainer").add("noBackdrop"); itemBackdropElement.style.backgroundImage = ""; } @@ -530,6 +531,11 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function reloadFromItem(instance, page, params, item, user) { var context = params.context; page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); + + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + page.querySelector(".detailSticky").classList.add("noBackdrop"); + } + renderName(item, page.querySelector(".nameContainer"), false, context); var apiClient = connectionManager.getApiClient(item.ServerId); renderSeriesTimerEditor(page, item, apiClient, user); From 57bc5e5ee4f49a73586ac80e5a202b9c27f293d9 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Feb 2020 20:14:21 +0100 Subject: [PATCH 180/449] Fix noBackdrop pages --- src/assets/css/fonts.css | 2 +- src/assets/css/librarybrowser.css | 47 +++++++++++++++++++++---------- src/controllers/itemdetailpage.js | 25 +++++----------- src/itemdetails.html | 4 +-- src/themes/dark/theme.css | 4 +++ 5 files changed, 46 insertions(+), 36 deletions(-) diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index f125bc6a03..cb0da0f80f 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -29,7 +29,7 @@ h3 { } .layout-tv { - font-size: 2.5vh; + font-size: 130%; } .layout-mobile { diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 96731fca78..f55a77e1bb 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -454,19 +454,18 @@ display: block; } -.itemBackdrop.noBackdrop { +.layout-desktop .noBackdrop .itemBackdrop, +.layout-tv .noBackdrop .itemBackdrop { display: none; } -.detailPageContent.noBackdrop { - margin-top: 6.75em; +.layout-desktop .noBackdrop .detailPageContent, +.layout-tv .noBackdrop .detailPageContent { + margin-top: 2.5em; } -.layout-desktop .detailImageContainer.noBackdrop img { - margin-top: -2.5em; -} - -.layout-tv .detailImageContainer.noBackdrop img { +.layout-desktop .noBackdrop .detailImageContainer img, +.layout-tv .noBackdrop .detailImageContainer img { margin-top: 0; } @@ -545,18 +544,20 @@ top: 0; } -.layout-tv .detailPagePrimaryContainer:not(.noBackdrop), -.layout-desktop .detailPagePrimaryContainer:not(.noBackdrop) { +.layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, +.layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer { position: relative; top: 0; padding-left: 32.45vw; } -.detailSticky { - margin-top: -7.3em; +.layout-desktop .detailSticky, +.layout-tv .detailSticky { + margin-top: -7.2em; } -.detailSticky.noBackdrop { +.layout-desktop .noBackdrop .detailSticky, +.layout-tv .noBackdrop .detailSticky { margin-top: 0; } @@ -594,7 +595,8 @@ z-index: 3; } -.detailImageContainer.noBackdrop { +.layout-desktop .noBackdrop .detailImageContainer, +.layout-tv .noBackdrop .detailImageContainer { margin-top: 0; } @@ -612,6 +614,10 @@ background-size: contain; } +.noBackdrop .detailLogo { + display: none; +} + @media all and (max-width: 87.5em) { .detailLogo { right: 5%; @@ -666,6 +672,16 @@ div.itemDetailGalleryLink.defaultCardBackground { position: relative; } + .layout-desktop .detailPageWrapperContainer, + .layout-tv .detailPageWrapperContainer { + margin-top: 7.2em; + } + + .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, + .layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer { + padding-left: 3.3%; + } + .btnPlaySimple { display: none !important; } @@ -880,7 +896,8 @@ div.itemDetailGalleryLink.defaultCardBackground { border-collapse: collapse; } -.detailPageWrapperContainer.noBackdrop { +.layout-desktop .noBackdrop .detailPageWrapperContainer, +.layout-tv .noBackdrop .detailPageWrapperContainer { margin-top: 4em; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index fecca7f015..dc07a8f526 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -457,6 +457,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var imgUrl; var screenWidth = screen.availWidth; var hasbackdrop = false; + console.debug(page); var itemBackdropElement = page.querySelector("#itemBackdrop"); var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || item.MediaType && item.MediaType !== "Video" || @@ -474,7 +475,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti index: 0, tag: item.ImageTags.Thumb }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { @@ -483,7 +484,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti index: 0, tag: item.ImageTags.Primary }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { @@ -492,7 +493,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti index: 0, tag: item.BackdropImageTags[0] }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { @@ -501,7 +502,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti index: 0, tag: item.ParentBackdropImageTags[0] }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ImageTags && item.ImageTags.Thumb) { @@ -510,16 +511,15 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti index: 0, tag: item.ImageTags.Thumb }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else { - itemBackdropElement.classList.add("noBackdrop"); - page.querySelector(".detailPageWrapperContainer").add("noBackdrop"); itemBackdropElement.style.backgroundImage = ""; } if ("Person" === item.Type) { + page.classList.add('noBackdrop'); itemBackdropElement.classList.add("personBackdrop"); } else { itemBackdropElement.classList.remove("personBackdrop"); @@ -532,10 +532,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var context = params.context; page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); - if (!layoutManager.mobile && !userSettings.enableBackdrops()) { - page.querySelector(".detailSticky").classList.add("noBackdrop"); - } - renderName(item, page.querySelector(".nameContainer"), false, context); var apiClient = connectionManager.getApiClient(item.ServerId); renderSeriesTimerEditor(page, item, apiClient, user); @@ -850,10 +846,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - if (!layoutManager.mobile && !userSettings.enableBackdrops()) { - elem.classList.add("noBackdrop"); - } - if ("thumb" == shape) { elem.classList.add("thumbDetailImageContainer"); elem.classList.remove("portraitDetailImageContainer"); @@ -1064,9 +1056,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderDetails(page, item, apiClient, context, isStatic) { var taglineElement = page.querySelector(".detailPageContent"); - if (!layoutManager.mobile && !userSettings.enableBackdrops()) { - taglineElement.classList.add("noBackdrop"); - } renderSimilarItems(page, item, context); renderMoreFromSeason(page, item, apiClient); diff --git a/src/itemdetails.html b/src/itemdetails.html index 8c685b90b5..a1966afe08 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,5 +1,5 @@ -
-
+
+
diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 4d4b0a91be..41af2c32d3 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -201,6 +201,10 @@ html { } .detailSticky { + background: rgba(32, 32, 32, 0.8); +} + +.noBackdrop .detailSticky { background: #202020; } From e6034e9bf2c7d8b15c6f30fd5ec76c078dccbc02 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Feb 2020 20:17:22 +0100 Subject: [PATCH 181/449] Fix leftover green in themes --- src/themes/appletv/theme.css | 2 +- src/themes/light/theme.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index ccc6eaaabe..5ca517bea5 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -112,7 +112,7 @@ html { .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: green; + color: #00a4dc; } .checkboxOutline { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index cedc8bfb8b..d84a1c3b67 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -105,7 +105,7 @@ html { .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: green; + color: #00a4dc; } .checkboxOutline { From 6f35d6696ebcc23616b3d6dbb7fbaacedb7e42a9 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Feb 2020 21:38:07 +0100 Subject: [PATCH 182/449] Fix linting issues --- src/assets/css/librarybrowser.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index f55a77e1bb..210088aea5 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -459,6 +459,13 @@ display: none; } +.detailPageContent { + display: flex; + flex-direction: column; + padding-left: 2%; + padding-right: 2%; +} + .layout-desktop .noBackdrop .detailPageContent, .layout-tv .noBackdrop .detailPageContent { margin-top: 2.5em; @@ -580,13 +587,6 @@ margin: 1.25em 0; } -.detailPageContent { - display: flex; - flex-direction: column; - padding-left: 2%; - padding-right: 2%; -} - .detailImageContainer { position: relative; margin-top: -25vh; From cac592ce13c1c228b1220fee5d1db1633e138afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Lu=C5=88=C3=A1k?= Date: Sat, 29 Feb 2020 17:05:43 +0000 Subject: [PATCH 183/449] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 346215407f..23f4d624eb 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -554,7 +554,7 @@ "LabelH264Crf": "H264 kódování CRF:", "LabelEncoderPreset": "Přednastavení H264 kódování:", "LabelHardwareAccelerationType": "Hardwarová akcelerace:", - "LabelHardwareAccelerationTypeHelp": "Toto je experimentální funkce dostupná pouze v podporovaných systémech.", + "LabelHardwareAccelerationTypeHelp": "Hardwarová akcelerace vyžaduje další konfiguraci.", "LabelHomeScreenSectionValue": "Sekce domovské obrazovky {0}:", "LabelHttpsPort": "Lokální HTTPS port:", "LabelHttpsPortHelp": "Číslo portu TCP, ke kterému by se měl připojit HTTPS server Jellyfin.", @@ -1567,5 +1567,8 @@ "EnableFastImageFadeIn": "Rychlé zmizení obrazu", "LabelPlayerDimensions": "Zobrazené rozlišení:", "LabelDroppedFrames": "Vynechané snímky:", - "LabelCorruptedFrames": "Poškozené snímky:" + "LabelCorruptedFrames": "Poškozené snímky:", + "OptionForceRemoteSourceTranscoding": "Vynutit transkódování vzdálených zdrojů médií (jako např. živá TV)", + "NoCreatedLibraries": "Zdá se, že jste dosud nevytvořili žádnou knihovnu. {0}Chtěli byste nějakou vytvořit nyní?{1}", + "AskAdminToCreateLibrary": "Požádejte administrátora o vytvoření knihovny." } From ef97bdd9af559c5fb5b46d932eeeffbde9bfa459 Mon Sep 17 00:00:00 2001 From: Ignatius Bagus Date: Sat, 29 Feb 2020 16:26:39 +0000 Subject: [PATCH 184/449] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index 81d82159fd..1a6113ecd6 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -200,5 +200,7 @@ "Sync": "Sinkron", "Shows": "Tayangan", "Photos": "Foto", - "Movies": "Film" + "Movies": "Film", + "Alerts": "Peringatan", + "AddedOnValue": "Ditambahkan {0}" } From 3310d5b239bf1ac4c15fb3b9ece2a07ac10ecd59 Mon Sep 17 00:00:00 2001 From: ferferga Date: Sat, 29 Feb 2020 22:44:08 +0100 Subject: [PATCH 185/449] Fix for Firefox --- src/components/input/gamepadtokey.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index 2feff55747..e430bd9891 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -365,7 +365,7 @@ require(['apphost'], function (appHost) { var gamepads = navigator.getGamepads(); for (var i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; - if (gamepad) { + if (gamepad && gamepad.connected) { return true; } } @@ -388,7 +388,7 @@ require(['apphost'], function (appHost) { } } - // Event Listeners for any change in gamepads' state. + // Event listeners for any change in gamepads' state. window.addEventListener("gamepaddisconnected", dettachGamepad); window.addEventListener("gamepadconnected", attachGamepad); window.addEventListener("blur", dettachGamepad); From 36abdf93499d86c7da1506c5e6503ad7302ba330 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sun, 1 Mar 2020 01:22:24 +0000 Subject: [PATCH 186/449] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 8f9a9b022b..1ea78320d5 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1451,5 +1451,18 @@ "MusicLibraryHelp": "Verifique o {0}guia de nomes de músicas{1}.", "ButtonAddImage": "Adicionar Imagem", "HeaderFavoritePeople": "Pessoas Favoritas", - "OptionRandom": "Aleatório" + "OptionRandom": "Aleatório", + "SelectAdminUsername": "Por favor selecione um nome de usuário para a conta de administrador.", + "OptionForceRemoteSourceTranscoding": "Forçar transcodificação em fontes de mídia remotas (como LiveTV)", + "NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0}Gostaria de criar uma agora?{1}", + "MessageConfirmAppExit": "Você quer sair?", + "LabelVideoResolution": "Resolução de vídeo:", + "LabelStreamType": "Tipo de stream:", + "EnableFastImageFadeIn": "Fade-in rápido da imagem", + "LabelPlayerDimensions": "Dimensões do player:", + "LabelCorruptedFrames": "Quadros corrompidos:", + "HeaderNavigation": "Navegação", + "CopyStreamURLError": "Houve um erro ao copiar a URL.", + "ButtonSplit": "Dividir", + "AskAdminToCreateLibrary": "Peça a um administrador para criar uma biblioteca." } From 7eee7d0d44842b430fdb1120243cd14aa8620f1e Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 1 Mar 2020 23:15:40 +0900 Subject: [PATCH 187/449] add generic restart warning --- src/strings/en-gb.json | 2 +- src/strings/en-us.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 6e6a19bfe6..1a91642ecf 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1031,7 +1031,7 @@ "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Jellyfin.", - "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models. Changes will not apply until after a server restart.", "InstallingPackage": "Installing {0}", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Jellyfin database and displayed within seasons and series. This may cause significantly longer library scans.", "HeaderSubtitleAppearance": "Subtitle Appearance", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 421108aa87..33d52e7551 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -617,7 +617,7 @@ "LabelEmbedAlbumArtDidl": "Embed album art in Didl", "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", "LabelEnableAutomaticPortMap": "Enable automatic port mapping", - "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models. Changes will not apply until after a server restart.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", From a98b99850ef388ce60e95170b3a916e21dd2cfa2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 1 Mar 2020 15:33:41 +0100 Subject: [PATCH 188/449] Remove dead code --- src/controllers/itemdetailpage.js | 67 +++++++++++-------------------- 1 file changed, 23 insertions(+), 44 deletions(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index dc07a8f526..f33763956a 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1,4 +1,4 @@ -define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, appHost, imageLoader, libraryMenu, globalize, browser, events, scrollHelper, playbackManager, libraryBrowser) { +define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "imageLoader", "libraryMenu", "globalize", "browser", "events", "playbackManager", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { "use strict"; function getPromise(apiClient, params) { @@ -60,8 +60,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti return options; } - function getProgramScheduleHtml(items, options) { - options = options || {}; + function getProgramScheduleHtml(items) { var html = ""; html += '
'; html += listView.getListViewHtml({ @@ -445,7 +444,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderBackdrop(page, item, apiClient) { + function renderBackdrop(item) { if (dom.getWindowSize().innerWidth >= 1000) { backdrop.setBackdrops([item]); } else { @@ -455,9 +454,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderDetailPageBackdrop(page, item, apiClient) { var imgUrl; - var screenWidth = screen.availWidth; var hasbackdrop = false; - console.debug(page); var itemBackdropElement = page.querySelector("#itemBackdrop"); var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || item.MediaType && item.MediaType !== "Video" || @@ -542,7 +539,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti setInitialCollapsibleState(page, item, apiClient, context, user); renderDetails(page, item, apiClient, context); renderTrackSelections(page, instance, item); - renderBackdrop(page, item, apiClient); + renderBackdrop(item); renderDetailPageBackdrop(page, item, apiClient); var canPlay = reloadPlayButtons(page, item); @@ -825,7 +822,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (editable) { html += ""; } else if (!editable && url === undefined) { - html += "
" + html += "
"; } var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item); @@ -881,7 +878,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti elem.querySelector(".detailImageProgressContainer").innerHTML = indicators.getProgressBarHtml(item); } - function refreshImage(page, item, user) { + function refreshImage(page, item) { refreshDetailImageUserData(page.querySelector(".detailImageContainer"), item); } @@ -930,10 +927,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if ("Playlist" == item.Type) { page.querySelector("#childrenCollapsible").classList.remove("hide"); - renderPlaylistItems(page, item, user); + renderPlaylistItems(page, item); } else if ("Studio" == item.Type || "Person" == item.Type || "Genre" == item.Type || "MusicGenre" == item.Type || "MusicArtist" == item.Type) { page.querySelector("#childrenCollapsible").classList.remove("hide"); - renderItemsByName(page, item, user); + renderItemsByName(page, item); } else if (item.IsFolder) { if ("BoxSet" == item.Type) { page.querySelector("#childrenCollapsible").classList.add("hide"); @@ -945,7 +942,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } if ("Series" == item.Type) { - renderSeriesSchedule(page, item, user); + renderSeriesSchedule(page, item); renderNextUp(page, item, user); } else { page.querySelector(".nextUpSection").classList.add("hide"); @@ -960,7 +957,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti page.querySelector("#specialsCollapsible").classList.add("hide"); } - renderCast(page, item, context, enableScrollX() ? null : 12); + renderCast(page, item); if (item.PartCount && item.PartCount > 1) { page.querySelector("#additionalPartsCollapsible").classList.remove("hide"); @@ -996,7 +993,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderGenres(page, item, apiClient, context, isStatic) { + function renderGenres(page, item, context) { context = context || inferContext(item); var type; var genres = item.GenreItems || []; @@ -1030,7 +1027,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderDirector(page, item, apiClient, context, isStatic) { + function renderDirector(page, item, context) { var directors = (item.People || []).filter(function (p) { return "Director" === p.Type; }); @@ -1055,13 +1052,11 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderDetails(page, item, apiClient, context, isStatic) { - var taglineElement = page.querySelector(".detailPageContent"); - renderSimilarItems(page, item, context); renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); - renderDirector(page, item, apiClient, context, isStatic); - renderGenres(page, item, apiClient, context, isStatic); + renderDirector(page, item, context); + renderGenres(page, item, context); renderChannelGuide(page, apiClient, item); var taglineElement = page.querySelector(".tagline"); @@ -1135,14 +1130,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti return scrollX ? "overflowSquare" : "square"; } - function getThumbShape(scrollX) { - if (null == scrollX) { - scrollX = enableScrollX(); - } - - return scrollX ? "overflowBackdrop" : "backdrop"; - } - function renderMoreFromSeason(view, item, apiClient) { var section = view.querySelector(".moreFromSeasonSection"); @@ -1518,13 +1505,13 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderItemsByName(page, item, user) { + function renderItemsByName(page, item) { require("scripts/itembynamedetailpage".split(","), function () { window.ItemsByName.renderItems(page, item); }); } - function renderPlaylistItems(page, item, user) { + function renderPlaylistItems(page, item) { require("scripts/playlistedit".split(","), function () { PlaylistViewer.render(page, item); }); @@ -1604,7 +1591,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderSeriesSchedule(page, item, user) { + function renderSeriesSchedule(page, item) { var apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), @@ -1854,7 +1841,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti }); } - function renderCast(page, item, context, limit, isStatic) { + function renderCast(page, item) { var people = (item.People || []).filter(function (p) { return "Director" !== p.Type; }); @@ -1944,7 +1931,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti playbackManager.play(playOptions); } - function playTrailer(page) { + function playTrailer() { playbackManager.playTrailers(currentItem); } @@ -2001,11 +1988,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function onPlayTrailerClick() { - playTrailer(view); - } - - function onDownloadChange() { - reload(self, view, params); + playTrailer(); } function onDownloadClick() { @@ -2060,9 +2043,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (userData) { currentItem.UserData = userData; reloadPlayButtons(view, currentItem); - apiClient.getCurrentUser().then(function (user) { - refreshImage(view, currentItem, user); - }); + refreshImage(view, currentItem); } } } @@ -2093,11 +2074,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti }); view.addEventListener("click", function (e) { if (dom.parentWithClass(e.target, "moreScenes")) { - apiClient.getCurrentUser().then(function (user) { - renderScenes(view, currentItem); - }); + renderScenes(view, currentItem); } else if (dom.parentWithClass(e.target, "morePeople")) { - renderCast(view, currentItem, params.context); + renderCast(view, currentItem); } else if (dom.parentWithClass(e.target, "moreSpecials")) { apiClient.getCurrentUser().then(function (user) { renderSpecials(view, currentItem, user); From 9d1f61f41400b673e73ef898ea7b9d3655a32ca0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 2 Mar 2020 01:15:49 +0300 Subject: [PATCH 189/449] move page.js to node --- package.json | 1 + src/bundle.js | 6 + src/components/appRouter.js | 12 +- src/components/dialogHelper/dialogHelper.js | 2 +- src/libraries/pagejs/page.js | 1077 ------------------- src/scripts/site.js | 4 +- 6 files changed, 18 insertions(+), 1084 deletions(-) delete mode 100644 src/libraries/pagejs/page.js diff --git a/package.json b/package.json index 726823208f..a3c39ee0aa 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", + "page": "^1.11.5", "resize-observer-polyfill": "^1.5.1", "shaka-player": "^2.5.9", "sortablejs": "^1.10.2", diff --git a/src/bundle.js b/src/bundle.js index 6a352c5776..5d05e4b686 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -101,3 +101,9 @@ var jellyfin_noto = require("jellyfin-noto"); _define("jellyfin-noto", function () { return jellyfin_noto; }); + +// page.js +var page = require("page"); +_define("page", function() { + return page; +}); diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 74b1a5cd5f..f6051d64be 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -370,7 +370,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } function enableNativeHistory() { - return page.enableNativeHistory(); + return enableHistory; } function authenticate(ctx, route, callback) { @@ -562,7 +562,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { return false; } - return page.canGoBack(); + if (enableHistory) { + return history.length > 1; + } + return (page.len || 0) > 0; } function showDirect(path) { @@ -666,7 +669,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM function pushState(state, title, url) { state.navigate = false; - page.pushState(state, title, url); + history.pushState(state, title, url); + } function setBaseRoute() { @@ -716,7 +720,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM appRouter.getRoutes = getRoutes; appRouter.pushState = pushState; appRouter.enableNativeHistory = enableNativeHistory; - appRouter.handleAnchorClick = page.handleAnchorClick; + appRouter.handleAnchorClick = page.clickHandler; appRouter.TransparencyLevel = { None: 0, Backdrop: 1, diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index 6ee96df318..7e6482bfd6 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -172,7 +172,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', } function isHistoryEnabled(dlg) { - return dlg.getAttribute('data-history') === 'true'; + return dlg.getAttribute('data-history') === 'false'; } function open(dlg) { diff --git a/src/libraries/pagejs/page.js b/src/libraries/pagejs/page.js deleted file mode 100644 index be5c8aee97..0000000000 --- a/src/libraries/pagejs/page.js +++ /dev/null @@ -1,1077 +0,0 @@ -define([], function () { - - 'use strict'; - - /** - * Detect click event - */ - var clickEvent = ('undefined' !== typeof document) && document.ontouchstart ? 'touchstart' : 'click'; - - /** - * To work properly with the URL - * history.location generated polyfill in https://github.com/devote/HTML5-History-API - */ - - var location = ('undefined' !== typeof window) && (window.history.location || window.location); - - /** - * Perform initial dispatch. - */ - - var dispatch = true; - - - /** - * Decode URL components (query string, pathname, hash). - * Accommodates both regular percent encoding and x-www-form-urlencoded format. - */ - var decodeURLComponents = true; - - /** - * Base path. - */ - - var base = ''; - - /** - * Running flag. - */ - - var running; - - /** - * HashBang option - */ - - var hashbang = false; - - var enableHistory = false; - - /** - * Previous context, for capturing - * page exit events. - */ - - var prevContext; - - var prevPageContext; - - /** - * Register `path` with callback `fn()`, - * or route `path`, or redirection, - * or `page.start()`. - * - * page(fn); - * page('*', fn); - * page('/user/:id', load, user); - * page('/user/' + user.id, { some: 'thing' }); - * page('/user/' + user.id); - * page('/from', '/to') - * page(); - * - * @param {String|Function} path - * @param {Function} fn... - * @api public - */ - - function page(path, fn) { - // - if ('function' === typeof path) { - return page('*', path); - } - - // route to - if ('function' === typeof fn) { - var route = new Route(path); - for (var i = 1; i < arguments.length; ++i) { - page.callbacks.push(route.middleware(arguments[i])); - } - // show with [state] - } else if ('string' === typeof path) { - page['string' === typeof fn ? 'redirect' : 'show'](path, fn); - // start [options] - } else { - page.start(path); - } - } - - /** - * Callback functions. - */ - - page.callbacks = []; - page.exits = []; - - /** - * Current path being processed - * @type {String} - */ - page.current = ''; - - /** - * Number of pages navigated to. - * @type {number} - * - * page.len == 0; - * page('/login'); - * page.len == 1; - */ - - page.len = 0; - - /** - * Get or set basepath to `path`. - * - * @param {String} path - * @api public - */ - - page.base = function (path) { - if (0 === arguments.length) { - return base; - } - base = path; - }; - - /** - * Bind with the given `options`. - * - * Options: - * - * - `click` bind to click events [true] - * - `popstate` bind to popstate [true] - * - `dispatch` perform initial dispatch [true] - * - * @param {Object} options - * @api public - */ - - page.start = function (options) { - options = options || {}; - if (running) { - return; - } - running = true; - if (false === options.dispatch) { - dispatch = false; - } - if (false === options.decodeURLComponents) { - decodeURLComponents = false; - } - if (false !== options.popstate) { - window.addEventListener('popstate', onpopstate, false); - } - if (false !== options.click) { - document.addEventListener(clickEvent, onclick, false); - } - if (options.enableHistory != null) { - enableHistory = options.enableHistory; - } - if (true === options.hashbang) { - hashbang = true; - } - if (!dispatch) { - return; - } - - var url; - - if (hashbang && ~location.hash.indexOf('#!')) { - - url = location.hash.substr(2); - - var href = location.href.toString(); - if (href.indexOf('?') >= href.indexOf('#!')) { - url += location.search; - } - } - else { - url = location.pathname + location.search + location.hash; - } - - page.replace(url, null, true, dispatch); - }; - - /** - * Unbind click and popstate event handlers. - * - * @api public - */ - - page.stop = function () { - if (!running) { - return; - } - page.current = ''; - page.len = 0; - running = false; - document.removeEventListener(clickEvent, onclick, false); - window.removeEventListener('popstate', onpopstate, false); - }; - - /** - * Show `path` with optional `state` object. - * - * @param {String} path - * @param {Object} state - * @param {Boolean} dispatch - * @return {Context} - * @api public - */ - - page.show = function (path, state, dispatch, push, isBack) { - var ctx = new Context(path, state); - ctx.isBack = isBack; - page.current = ctx.path; - if (false !== dispatch) { - page.dispatch(ctx); - } - if (false !== ctx.handled && false !== push) { - ctx.pushState(); - } - return ctx; - }; - - page.restorePreviousState = function () { - - prevContext = prevPageContext; - page.show(prevContext.pathname, prevContext.state, false, true, false); - }; - - /** - * Goes back in the history - * Back should always let the current route push state and then go back. - * - * @param {String} path - fallback path to go back if no more history exists, if undefined defaults to page.base - * @param {Object} [state] - * @api public - */ - - page.back = function (path, state) { - - if (enableHistory) { - // Keep it simple and mimic browser back - history.back(); - return; - } - - if (page.len > 0) { - // this may need more testing to see if all browsers - // wait for the next tick to go back in history - if (enableHistory) { - history.back(); - } else { - - if (backStack.length > 2) { - backStack.length--; - var previousState = backStack[backStack.length - 1]; - page.show(previousState.path, previousState.state, true, false, true); - } - } - page.len--; - } else if (path) { - setTimeout(function () { - page.show(path, state); - }); - } else { - setTimeout(function () { - page.show(base, state); - }); - } - }; - - page.enableNativeHistory = function () { - return enableHistory; - }; - - page.canGoBack = function () { - if (enableHistory) { - return history.length > 1; - } - return (page.len || 0) > 0; - }; - - /** - * Register route to redirect from one path to other - * or just redirect to another route - * - * @param {String} from - if param 'to' is undefined redirects to 'from' - * @param {String} [to] - * @api public - */ - page.redirect = function (from, to) { - // Define route from a path to another - if ('string' === typeof from && 'string' === typeof to) { - page(from, function (e) { - setTimeout(function () { - page.replace(to); - }, 0); - }); - } - - // Wait for the push state and replace it with another - if ('string' === typeof from && 'undefined' === typeof to) { - setTimeout(function () { - page.replace(from); - }, 0); - } - }; - - /** - * Replace `path` with optional `state` object. - * - * @param {String} path - * @param {Object} state - * @return {Context} - * @api public - */ - - - page.replace = function (path, state, init, dispatch, isBack) { - var ctx = new Context(path, state); - ctx.isBack = isBack; - page.current = ctx.path; - ctx.init = init; - ctx.save(); // save before dispatching, which may redirect - if (false !== dispatch) { - page.dispatch(ctx); - } - return ctx; - }; - - /** - * Dispatch the given `ctx`. - * - * @param {Object} ctx - * @api private - */ - - page.dispatch = function (ctx) { - var prev = prevContext, - i = 0, - j = 0; - - prevPageContext = prevContext; - prevContext = ctx; - - function nextExit() { - var fn = page.exits[j++]; - if (!fn) { - return nextEnter(); - } - fn(prev, nextExit); - } - - function nextEnter() { - var fn = page.callbacks[i++]; - - if (ctx.path !== page.current) { - ctx.handled = false; - return; - } - if (!fn) { - return unhandled(ctx); - } - fn(ctx, nextEnter); - } - - if (prev) { - nextExit(); - } else { - nextEnter(); - } - }; - - /** - * Unhandled `ctx`. When it's not the initial - * popstate then redirect. If you wish to handle - * 404s on your own use `page('*', callback)`. - * - * @param {Context} ctx - * @api private - */ - - function unhandled(ctx) { - if (ctx.handled) { - return; - } - var current; - - if (hashbang) { - current = base + location.hash.replace('#!', ''); - } else { - current = location.pathname + location.search; - } - - if (current === ctx.canonicalPath) { - return; - } - page.stop(); - ctx.handled = false; - location.href = ctx.canonicalPath; - } - - /** - * Register an exit route on `path` with - * callback `fn()`, which will be called - * on the previous context when a new - * page is visited. - */ - page.exit = function (path, fn) { - if (typeof path === 'function') { - return page.exit('*', path); - } - - var route = new Route(path); - for (var i = 1; i < arguments.length; ++i) { - page.exits.push(route.middleware(arguments[i])); - } - }; - - /** - * Remove URL encoding from the given `str`. - * Accommodates whitespace in both x-www-form-urlencoded - * and regular percent-encoded form. - * - * @param {str} URL component to decode - */ - function decodeURLEncodedURIComponent(val) { - if (typeof val !== 'string') { return val; } - return decodeURLComponents ? decodeURIComponent(val.replace(/\+/g, ' ')) : val; - } - - /** - * Initialize a new "request" `Context` - * with the given `path` and optional initial `state`. - * - * @param {String} path - * @param {Object} state - * @api public - */ - - function Context(path, state) { - if ('/' === path[0] && 0 !== path.indexOf(base)) { - path = base + (hashbang ? '#!' : '') + path; - } - var i = path.indexOf('?'); - - this.canonicalPath = path; - this.path = path.replace(base, '') || '/'; - if (hashbang) { - this.path = this.path.replace('#!', '') || '/'; - } - - this.title = document.title; - this.state = state || {}; - this.state.path = path; - this.querystring = ~i ? decodeURLEncodedURIComponent(path.slice(i + 1)) : ''; - this.pathname = decodeURLEncodedURIComponent(~i ? path.slice(0, i) : path); - this.params = {}; - - // fragment - this.hash = ''; - if (!hashbang) { - if (!~this.path.indexOf('#')) { - return; - } - var parts = this.path.split('#'); - this.path = parts[0]; - this.hash = decodeURLEncodedURIComponent(parts[1]) || ''; - this.querystring = this.querystring.split('#')[0]; - } - } - - /** - * Expose `Context`. - */ - - page.Context = Context; - var backStack = []; - - /** - * Push state. - * - * @api private - */ - - Context.prototype.pushState = function () { - page.len++; - - if (enableHistory) { - history.pushState(this.state, this.title, hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath); - } else { - backStack.push({ - state: this.state, - title: this.title, - url: (hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath), - path: this.path - }); - } - }; - - /** - * Save the context state. - * - * @api public - */ - - Context.prototype.save = function () { - - if (enableHistory) { - history.replaceState(this.state, this.title, hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath); - } else { - backStack[page.len || 0] = { - state: this.state, - title: this.title, - url: (hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath), - path: this.path - }; - } - }; - - /** - * Initialize `Route` with the given HTTP `path`, - * and an array of `callbacks` and `options`. - * - * Options: - * - * - `sensitive` enable case-sensitive routes - * - `strict` enable strict matching for trailing slashes - * - * @param {String} path - * @param {Object} options. - * @api private - */ - - function Route(path, options) { - options = options || {}; - this.path = (path === '*') ? '(.*)' : path; - this.method = 'GET'; - this.regexp = pathToRegexp(this.path, - this.keys = [], - options.sensitive, - options.strict); - } - - /** - * Expose `Route`. - */ - - page.Route = Route; - - /** - * Return route middleware with - * the given callback `fn()`. - * - * @param {Function} fn - * @return {Function} - * @api public - */ - - Route.prototype.middleware = function (fn) { - var self = this; - return function (ctx, next) { - if (self.match(ctx.path, ctx.params)) { - return fn(ctx, next); - } - next(); - }; - }; - - /** - * Check if this route matches `path`, if so - * populate `params`. - * - * @param {String} path - * @param {Object} params - * @return {Boolean} - * @api private - */ - - Route.prototype.match = function (path, params) { - var keys = this.keys, - qsIndex = path.indexOf('?'), - pathname = ~qsIndex ? path.slice(0, qsIndex) : path, - m = this.regexp.exec(decodeURIComponent(pathname)); - - if (!m) { - return false; - } - - for (var i = 1, len = m.length; i < len; ++i) { - var key = keys[i - 1]; - var val = decodeURLEncodedURIComponent(m[i]); - if (val !== undefined || !(hasOwnProperty.call(params, key.name))) { - params[key.name] = val; - } - } - - return true; - }; - - - var previousPopState = {}; - - function ignorePopState(event) { - - var state = event.state || {}; - - if (previousPopState.navigate === false) { - // Ignore - previousPopState = state; - return true; - } - - previousPopState = state; - return false; - } - - page.pushState = function (state, title, url) { - - if (hashbang) { - url = '#!' + url; - } - - history.pushState(state, title, url); - previousPopState = state; - }; - - /** - * Handle "populate" events. - */ - - var onpopstate = (function () { - var loaded = false; - if ('undefined' === typeof window) { - return; - } - if (document.readyState === 'complete') { - loaded = true; - } else { - window.addEventListener('load', function () { - setTimeout(function () { - loaded = true; - }, 0); - }); - } - return function onpopstate(e) { - if (!loaded) { - return; - } - if (ignorePopState(e)) { - return; - } - if (e.state) { - var path = e.state.path; - page.replace(path, e.state, null, null, true); - } else { - page.show(location.pathname + location.hash, undefined, undefined, false, true); - } - }; - })(); - /** - * Handle "click" events. - */ - - function onclick(e, checkWhich) { - - if (1 !== which(e) && checkWhich !== false) { - return; - } - - if (e.metaKey || e.ctrlKey || e.shiftKey) { - return; - } - if (e.defaultPrevented) { - return; - } - - - // ensure link - var el = e.target; - - while (el && 'A' !== el.nodeName) { - el = el.parentNode; - } - if (!el || 'A' !== el.nodeName) { - return; - } - - - // Ignore if tag has - // 1. "download" attribute - // 2. rel="external" attribute - if (el.hasAttribute('download') || el.getAttribute('rel') === 'external') { - return; - } - - // ensure non-hash for the same path - var link = el.getAttribute('href'); - if (link === '#') { - e.preventDefault(); - return; - } - - if (!hashbang && el.pathname === location.pathname && (el.hash || '#' === link)) { - return; - } - - // check target - if (el.target) { - return; - } - - // x-origin - if (!sameOrigin(el.href)) { - return; - } - - // rebuild path - var path = el.pathname + el.search + (el.hash || ''); - - // same page - var orig = path; - - if (path.indexOf(base) === 0) { - path = path.substr(base.length); - } - - if (hashbang) { - path = path.replace('#!', ''); - } - - if (base && orig === path) { - // This is causing navigation to be canceled in edge uwp - // If needed this can be changed to only be skipped when called via handleAnchorClick - //return; - } - - e.preventDefault(); - page.show(orig); - } - - page.handleAnchorClick = onclick; - - /** - * Event button. - */ - - function which(e) { - e = e || window.event; - return null === e.which ? e.button : e.which; - } - - /** - * Check if `href` is the same origin. - */ - - function sameOrigin(href) { - var origin = location.protocol + '//' + location.hostname; - if (location.port) { - origin += ':' + location.port; - } - return (href && (0 === href.indexOf(origin))); - } - - page.sameOrigin = sameOrigin; - - /** - * The main path matching regexp utility. - * - * @type {RegExp} - */ - var PATH_REGEXP = new RegExp([ - // Match escaped characters that would otherwise appear in future matches. - // This allows the user to escape special characters that won't transform. - '(\\\\.)', - // Match Express-style parameters and un-named parameters with a prefix - // and optional suffixes. Matches appear as: - // - // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] - // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] - // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] - '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))' - ].join('|'), 'g'); - - /** - * Parse a string for the raw tokens. - * - * @param {String} str - * @return {Array} - */ - function parse(str) { - var tokens = []; - var key = 0; - var index = 0; - var path = ''; - var res; - - while ((res = PATH_REGEXP.exec(str)) != null) { - var m = res[0]; - var escaped = res[1]; - var offset = res.index; - path += str.slice(index, offset); - index = offset + m.length; - - // Ignore already escaped sequences. - if (escaped) { - path += escaped[1]; - continue; - } - - // Push the current path onto the tokens. - if (path) { - tokens.push(path); - path = ''; - } - - var prefix = res[2]; - var name = res[3]; - var capture = res[4]; - var group = res[5]; - var suffix = res[6]; - var asterisk = res[7]; - - var repeat = suffix === '+' || suffix === '*'; - var optional = suffix === '?' || suffix === '*'; - var delimiter = prefix || '/'; - var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?'); - - tokens.push({ - name: name || key++, - prefix: prefix || '', - delimiter: delimiter, - optional: optional, - repeat: repeat, - pattern: escapeGroup(pattern) - }); - } - - // Match any characters still remaining. - if (index < str.length) { - path += str.substr(index); - } - - // If the path exists, push it onto the end. - if (path) { - tokens.push(path); - } - - return tokens; - } - - var isarray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; - - /** - * Escape a regular expression string. - * - * @param {String} str - * @return {String} - */ - function escapeString(str) { - return str.replace(/([.+*?=^!:${}()[\]|\/])/g, '\\$1'); - } - - /** - * Escape the capturing group by escaping special characters and meaning. - * - * @param {String} group - * @return {String} - */ - function escapeGroup(group) { - return group.replace(/([=!:$\/()])/g, '\\$1'); - } - - /** - * Attach the keys as a property of the regexp. - * - * @param {RegExp} re - * @param {Array} keys - * @return {RegExp} - */ - function attachKeys(re, keys) { - re.keys = keys; - return re; - } - - /** - * Get the flags for a regexp from the options. - * - * @param {Object} options - * @return {String} - */ - function flags(options) { - return options.sensitive ? '' : 'i'; - } - - /** - * Pull out keys from a regexp. - * - * @param {RegExp} path - * @param {Array} keys - * @return {RegExp} - */ - function regexpToRegexp(path, keys) { - // Use a negative lookahead to match only capturing groups. - var groups = path.source.match(/\((?!\?)/g); - - if (groups) { - for (var i = 0; i < groups.length; i++) { - keys.push({ - name: i, - prefix: null, - delimiter: null, - optional: false, - repeat: false, - pattern: null - }); - } - } - - return attachKeys(path, keys); - } - - /** - * Transform an array into a regexp. - * - * @param {Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function arrayToRegexp(path, keys, options) { - var parts = []; - - for (var i = 0; i < path.length; i++) { - parts.push(pathToRegexp(path[i], keys, options).source); - } - - var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); - - return attachKeys(regexp, keys); - } - - /** - * Create a path regexp from string input. - * - * @param {String} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function stringToRegexp(path, keys, options) { - var tokens = parse(path); - var re = tokensToRegExp(tokens, options); - - // Attach keys back to the regexp. - for (var i = 0; i < tokens.length; i++) { - if (typeof tokens[i] !== 'string') { - keys.push(tokens[i]); - } - } - - return attachKeys(re, keys); - } - - /** - * Expose a function for taking tokens and returning a RegExp. - * - * @param {Array} tokens - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function tokensToRegExp(tokens, options) { - options = options || {}; - - var strict = options.strict; - var end = options.end !== false; - var route = ''; - var lastToken = tokens[tokens.length - 1]; - var endsWithSlash = typeof lastToken === 'string' && /\/$/.test(lastToken); - - // Iterate over the tokens and create our regexp string. - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - - if (typeof token === 'string') { - route += escapeString(token); - } else { - var prefix = escapeString(token.prefix); - var capture = token.pattern; - - if (token.repeat) { - capture += '(?:' + prefix + capture + ')*'; - } - - if (token.optional) { - if (prefix) { - capture = '(?:' + prefix + '(' + capture + '))?'; - } else { - capture = '(' + capture + ')?'; - } - } else { - capture = prefix + '(' + capture + ')'; - } - - route += capture; - } - } - - // In non-strict mode we allow a slash at the end of match. If the path to - // match already ends with a slash, we remove it for consistency. The slash - // is valid at the end of a path match, not in the middle. This is important - // in non-ending mode, where "/test/" shouldn't match "/test//route". - if (!strict) { - route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?'; - } - - if (end) { - route += '$'; - } else { - // In non-ending mode, we need the capturing groups to match as much as - // possible by using a positive lookahead to the end or next path segment. - route += strict && endsWithSlash ? '' : '(?=\\/|$)'; - } - - return new RegExp('^' + route, flags(options)); - } - - /** - * Normalize the given path string, returning a regular expression. - * - * An empty array can be passed in for the keys, which will hold the - * placeholder key descriptions. For example, using `/user/:id`, `keys` will - * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. - * - * @param {(String|RegExp|Array)} path - * @param {Array} [keys] - * @param {Object} [options] - * @return {RegExp} - */ - function pathToRegexp(path, keys, options) { - keys = keys || []; - - if (!isarray(keys)) { - options = keys; - keys = []; - } else if (!options) { - options = {}; - } - - if (path instanceof RegExp) { - return regexpToRegexp(path, keys, options); - } - - if (isarray(path)) { - return arrayToRegexp(path, keys, options); - } - - return stringToRegexp(path, keys, options); - } - - return page; - -}); diff --git a/src/scripts/site.js b/src/scripts/site.js index 599f69c531..095a41f65f 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -736,7 +736,8 @@ var AppInfo = {}; "libjass", "webcomponents", "material-icons", - "jellyfin-noto" + "jellyfin-noto", + "page" ] }, urlArgs: urlArgs, @@ -790,7 +791,6 @@ var AppInfo = {}; // TODO remove these libraries // all of these have been modified so we need to fix that first - define("page", [bowerPath + "/pagejs/page"], returnFirstDependency); define("headroom", [componentsPath + "/headroom/headroom"], returnFirstDependency); define("scroller", [componentsPath + "/scroller"], returnFirstDependency); define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency); From cb55e1a8259ed6cdb512b1794c3e1de9037822ee Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 1 Mar 2020 17:55:16 +0000 Subject: [PATCH 190/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 3f27d75ba3..3bb0bf98b5 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -247,7 +247,7 @@ "EncoderPresetHelp": "选择一个更快的值以提升性能,或者选择一个更慢的值以提升质量。", "HDPrograms": "高清节目", "HandledByProxy": "由反向代理处理", - "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和视频驱动程序是最新的。如果你在开启此项后播放视频产生困难,那么你需要将此选项设置回”自动“。", + "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和显卡驱动程序是最新的。如果你在开启此项后播放视频产生困难,那么你需要将此选项设置回“自动”。", "HeaderAccessSchedule": "访问计划", "HeaderAccessScheduleHelp": "创建一个访问计划以限制可访问的时间段。", "HeaderActiveDevices": "活动的设备", From 0e6ddc34b483824a3f6aff6402e85bae5eb662b0 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Mon, 2 Mar 2020 09:24:24 +0000 Subject: [PATCH 191/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 3bb0bf98b5..b71d9408c1 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -247,7 +247,7 @@ "EncoderPresetHelp": "选择一个更快的值以提升性能,或者选择一个更慢的值以提升质量。", "HDPrograms": "高清节目", "HandledByProxy": "由反向代理处理", - "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和显卡驱动程序是最新的。如果你在开启此项后播放视频产生困难,那么你需要将此选项设置回“自动”。", + "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和显卡驱动程序是最新的。如果你在开启此项后播放视频时遇到困难,那么你需要将此选项设置回“没有”。", "HeaderAccessSchedule": "访问计划", "HeaderAccessScheduleHelp": "创建一个访问计划以限制可访问的时间段。", "HeaderActiveDevices": "活动的设备", From 29232ac72794aba094d1e5abff795bf32b363e3b Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Mon, 2 Mar 2020 09:20:00 +0000 Subject: [PATCH 192/449] Translated using Weblate (English) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en/ --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index d7e404eba6..2e370836fa 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -282,7 +282,7 @@ "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "HDPrograms": "HD programs", "HandledByProxy": "Handled by reverse proxy", - "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to Auto.", + "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to None.", "HeaderAccessSchedule": "Access Schedule", "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", "HeaderActiveDevices": "Active Devices", From 4fca1c15638e9f0cd4fc8317fe7d8baef115da66 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 2 Mar 2020 21:36:17 +0300 Subject: [PATCH 193/449] revert back data-history --- src/components/appRouter.js | 2 +- src/components/dialogHelper/dialogHelper.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index f6051d64be..f882656ab1 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -370,7 +370,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } function enableNativeHistory() { - return enableHistory; + return false; } function authenticate(ctx, route, callback) { diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index 7e6482bfd6..6ee96df318 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -172,7 +172,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', } function isHistoryEnabled(dlg) { - return dlg.getAttribute('data-history') === 'false'; + return dlg.getAttribute('data-history') === 'true'; } function open(dlg) { From b1d1cee634dcf76ebc3f3ce53992a034c015f333 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 2 Mar 2020 19:54:29 +0100 Subject: [PATCH 194/449] Use forked version of JavascriptSubtitlesOctopus The fork contains an asm.js compatibility patch that we need for older client. This commit switched to using our forked version while we wait for an upstream merge. --- package.json | 2 +- src/components/htmlvideoplayer/plugin.js | 3 ++- webpack.common.js | 5 ++++- yarn.lock | 7 +++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 726823208f..dbc6c8fa8b 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.4.1", "jstree": "^3.3.7", - "libass-wasm": "^2.1.1", + "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus", "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 3ac45aabb9..d19187c9ed 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1056,8 +1056,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return i.DeliveryUrl; }), workerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker.js", + legacyWorkerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker-legacy.js", onError: function() { - htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror') + htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); } }; require(['JavascriptSubtitlesOctopus'], function(SubtitlesOctopus) { diff --git a/webpack.common.js b/webpack.common.js index 0809fc01bb..bff1f5f4ea 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -8,7 +8,10 @@ const Assets = [ "native-promise-only/npo.js", "libass-wasm/dist/subtitles-octopus-worker.js", "libass-wasm/dist/subtitles-octopus-worker.data", - "libass-wasm/dist/subtitles-octopus-worker.wasm" + "libass-wasm/dist/subtitles-octopus-worker.wasm", + "libass-wasm/dist/subtitles-octopus-worker-legacy.js", + "libass-wasm/dist/subtitles-octopus-worker-legacy.data", + "libass-wasm/dist/subtitles-octopus-worker-legacy.js.mem" ]; module.exports = { diff --git a/yarn.lock b/yarn.lock index 669d31a4a1..f156002c6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3683,10 +3683,9 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libass-wasm@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/libass-wasm/-/libass-wasm-2.1.1.tgz#f12f4fdb9579dd422dcbc348bc3bd61097f4d07d" - integrity sha512-d45bHQ7tFVsLW3QstQDrDog2m+0D6Cja4GTrkGi70R9A5+aeLunPSUz3G4CVB+sKffNgiWjK4QI5NZLHQKZ9oQ== +"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": + version "3.0.2" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" libjass@^0.11.0: version "0.11.0" From 7de575b6c5b8c9f81f677b67b3c8a2973d22ba15 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Mon, 2 Mar 2020 16:25:50 +0000 Subject: [PATCH 195/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7be3f89ce0..f7a1700810 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -702,7 +702,7 @@ "EncoderPresetHelp": "Válassz egy gyorsabb értéket a teljesítmény javítása érdekében, vagy egy lassabb értéket a minőség javítása érdekében.", "HDPrograms": "HD programok", "HandledByProxy": "Reverse proxy segítségével kezelhető", - "HardwareAccelerationWarning": "A hardveres gyorsítás engedélyezése bizonyos környezetekben instabilitást okozhat. Győződj meg róla, hogy az operációs rendszer és a videó-illesztőprogramok teljesen naprakészek. Ha a beállítás után problémába ütközik a videólejátszás, akkor vissza kell állítani a beállítást Auto-ra.", + "HardwareAccelerationWarning": "A hardveres gyorsítás engedélyezése bizonyos környezetekben instabilitást okozhat. Győződj meg róla, hogy az operációs rendszer és a videó-illesztőprogramok teljesen naprakészek. Ha a beállítás után problémába ütközik a videólejátszás, akkor vissza kell állítani a beállítást Nincs-re.", "HeaderAccessSchedule": "Hozzáférési Ütemezés", "HeaderAccessScheduleHelp": "Hozz létre hozzáférési ütemezést, hogy korlátozd a hozzáférést bizonyos időben.", "HeaderActiveRecordings": "Aktív Felvételek", From 08afa4c0ca07487ee3763201726af6472335ded1 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 3 Mar 2020 01:42:22 +0300 Subject: [PATCH 196/449] apply suggustion --- src/components/appRouter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index f882656ab1..efb58a089f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -562,7 +562,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { return false; } - if (enableHistory) { + if (enableHistory()) { return history.length > 1; } return (page.len || 0) > 0; From 1e1b868882784187ab659c65d04ad6a33b71a64f Mon Sep 17 00:00:00 2001 From: aschi2403 Date: Mon, 2 Mar 2020 21:29:25 +0000 Subject: [PATCH 197/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index e8a73eda00..1c5b4243b3 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -260,7 +260,7 @@ "EncoderPresetHelp": "Wähle einen schnelleren Wert um die Performance zu verbessern oder einen langsameren Wert um die Qualität zu verbessern.", "HDPrograms": "HD Programme", "HandledByProxy": "Verwaltet vom Reverse Proxy", - "HardwareAccelerationWarning": "Das Aktivieren der Hardwarebeschleunigung kann auf einigen Systemen zu Instabilität führen. Stellen Sie sicher, dass Ihr Betriebssystem sowie Ihre Grafikkarten-Treiber auf dem aktuellsten Stand sind. Wenn Sie nach der Aktivierung Probleme mit der Wiedergabe von Videos haben, müssen Sie diese Einstellung zurück auf \"Auto\" stellen.", + "HardwareAccelerationWarning": "Das Aktivieren der Hardwarebeschleunigung kann auf einigen Systemen zu Instabilität führen. Stellen Sie sicher, dass Ihr Betriebssystem sowie Ihre Grafikkarten-Treiber auf dem aktuellsten Stand sind. Wenn Sie nach der Aktivierung Probleme mit der Wiedergabe von Videos haben, müssen Sie diese Einstellung zurück auf \"Keine\" stellen.", "HeaderAccessSchedule": "Zugangsplan", "HeaderAccessScheduleHelp": "Erstelle einen Zugangsplan, um den Zugriff auf bestimmte Zeiten zu limitieren.", "HeaderActiveDevices": "Aktive Geräte", @@ -593,7 +593,7 @@ "LabelGroupMoviesIntoCollectionsHelp": "Wenn Filmlisten angezeigt werden, dann werden Filme, die zu einer Collection gehören, als ein gruppiertes Element angezeigt.", "LabelEncoderPreset": "H264 Encoding Voreinstellung:", "LabelHardwareAccelerationType": "Hardware Beschleunigung:", - "LabelHardwareAccelerationTypeHelp": "Dies ist eine experimentelle Funktion und nur auf unterstützten Systemen verfügbar.", + "LabelHardwareAccelerationTypeHelp": "Hardwarebeschleunigung benötigt zusätzliche Konfiguration.", "LabelHomeNetworkQuality": "Heimnetzwerkqualität:", "LabelHomeScreenSectionValue": "Startseitenbereich {0}:", "LabelHttpsPort": "Lokale HTTPS-Portnummer:", @@ -1487,5 +1487,6 @@ "LabelDroppedFrames": "Verlorene Frames:", "LabelCorruptedFrames": "Fehlerhafte Frames:", "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)", - "AskAdminToCreateLibrary": "Bitten Sie einen Administrator, eine Bibliothek zu erstellen." + "AskAdminToCreateLibrary": "Bitten Sie einen Administrator, eine Bibliothek zu erstellen.", + "NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}" } From 1f6c14041323f03bf3e1b77e8d023bb26a5c9ed4 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 3 Mar 2020 09:41:00 +0000 Subject: [PATCH 198/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 2553dcb622..56bbaf04cf 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1143,7 +1143,7 @@ "HeaderApp": "Appka", "HeaderApiKeysHelp": "Externé aplikácie musia mať vlastný API kľúč, aby mohli komunikovať s Jellyfin Serverom. Kľúče sú vydávané pomocou prihlásenia sa cez Jellyfin účet alebo manuálnym priradením kľúča aplikácií.", "HeaderAdditionalParts": "Dodatočné časti", - "HardwareAccelerationWarning": "Povolenie hardvérovej akcelerácie môže spôsobiť nestabilitu v niektorých podmienkach. Uistite sa, že váš operačný systém a grafické ovládače sú plne aktualizované. Pokiaľ máte po zapnutí problémy s prehrávaním videa, budete musieť zmeniť nastavenie späť na Auto.", + "HardwareAccelerationWarning": "Povolenie hardvérovej akcelerácie môže spôsobiť nestabilitu v niektorých podmienkach. Uistite sa, že váš operačný systém a grafické ovládače sú plne aktualizované. Pokiaľ máte po zapnutí problémy s prehrávaním videa, budete musieť zmeniť nastavenie späť na Žiadne.", "AddItemToCollectionHelp": "Pridať položku do kolekcie jej vyhľadaním a použitím pravého tlačítka myši alebo kliknutím na tlačidlo ponuky a pridať do kolekcie.", "HandledByProxy": "Spracované pomocou reverznej proxy", "EncoderPresetHelp": "Vyberte hodnotu faster pre zlepšenie výkonu alebo hodnotu slower pre zlepšenie kvality.", From 8a69092106810039b870472866d8546003a15f6d Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Tue, 3 Mar 2020 13:31:57 +0100 Subject: [PATCH 199/449] Clarify return statement in itemdetailpage Co-Authored-By: Vasily --- src/controllers/itemdetailpage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index f33763956a..db9425186a 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -463,7 +463,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti item.Type === "Person"; if (!layoutManager.mobile && !userSettings.enableBackdrops()) { - return hasbackdrop; + return false; } if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { From 5f5b0185b54419e0bece66f69473053e70e8dfd2 Mon Sep 17 00:00:00 2001 From: Vasily Date: Tue, 3 Mar 2020 17:24:35 +0300 Subject: [PATCH 200/449] Make sure display property is set for card buttons regarding of loading order --- src/components/cardbuilder/card.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index ea9f42927f..3cd038cd09 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -429,6 +429,12 @@ button::-moz-focus-inner { font-size: 1.66956521739130434em !important; } +.cardOverlayButtonIcon.material-icons { + /* material-icons override display, so we need to + make a better matching selector to set it to flex */ + display: flex; +} + .cardOverlayButton-centered { bottom: initial; right: initial; From 264e0163ff260f5976e65a7799e57b1b5f66ebed Mon Sep 17 00:00:00 2001 From: Vasily Date: Tue, 3 Mar 2020 19:09:33 +0300 Subject: [PATCH 201/449] Expose option to turn on/off transcode throttling --- src/controllers/encodingsettings.js | 2 ++ src/encodingsettings.html | 8 ++++++++ src/strings/en-us.json | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/controllers/encodingsettings.js b/src/controllers/encodingsettings.js index e164508856..ff140ed539 100644 --- a/src/controllers/encodingsettings.js +++ b/src/controllers/encodingsettings.js @@ -15,6 +15,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || ""; page.querySelector("#txtH264Crf").value = config.H264Crf || ""; page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false; + page.querySelector("#chkEnableThrottling").checked = config.EnableThrottling || false; page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", { bubbles: true })); @@ -58,6 +59,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EncoderPreset = form.querySelector("#selectEncoderPreset").value; config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0"); config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked; + config.EnableThrottling = form.querySelector("#chkEnableThrottling").checked; config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) { return c.checked; }), function (c) { diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 7d7c3a8c6a..bcdd86544e 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -144,6 +144,14 @@
${AllowOnTheFlySubtitleExtractionHelp}
+
+ +
${AllowFfmpegThrottlingHelp}
+
+
'; } - html += '
'; + html += '
'; var userData = item.UserData || {}; From 36a26e698dab77fbd967aa19a6f0cbfc1d0d3e5d Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 5 Mar 2020 02:40:43 +0900 Subject: [PATCH 210/449] improve transcode error message --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 33d52e7551..4852f32aaf 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1223,7 +1223,7 @@ "PlayFromBeginning": "Play from beginning", "PlayNext": "Play next", "PlayNextEpisodeAutomatically": "Play next episode automatically", - "PlaybackErrorNoCompatibleStream": "There are no available formats that are compatible with this device.", + "PlaybackErrorNoCompatibleStream": "There was an issue with the client profiling and the server isn't sending a compatible media format.", "Played": "Played", "Playlists": "Playlists", "PleaseAddAtLeastOneFolder": "Please add at least one folder to this library by clicking the Add button.", From 2b817073d87767a42103d7af88f5f815291fc91f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 4 Mar 2020 12:42:45 -0500 Subject: [PATCH 211/449] Add check for undefined elem in renderRecordings --- src/controllers/livetv/livetvrecordings.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/controllers/livetv/livetvrecordings.js b/src/controllers/livetv/livetvrecordings.js index ed3ae24087..f8e49f2590 100644 --- a/src/controllers/livetv/livetvrecordings.js +++ b/src/controllers/livetv/livetvrecordings.js @@ -2,6 +2,10 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc "use strict"; function renderRecordings(elem, recordings, cardOptions, scrollX) { + if (!elem) { + return; + } + if (recordings.length) { elem.classList.remove("hide"); } else { From 0a9f26b141bc79dd6986e5c4d02c99d62866a63b Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 4 Mar 2020 18:44:25 +0100 Subject: [PATCH 212/449] Removed align-items --- src/components/cardbuilder/cardBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 2a3d8d3d3d..3e54f91ee8 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1457,7 +1457,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana html += ''; } - html += '
'; + html += '
'; var userData = item.UserData || {}; From a80f5e50e7c6e2e0571b1875be3272934f945484 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 5 Mar 2020 02:52:53 +0900 Subject: [PATCH 213/449] translate media type string --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 261d20745b..0b856b35ec 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -107,7 +107,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct if (!plugins.length) return html; html += '
'; - html += '

' + globalize.translate("LabelTypeMetadataDownloaders", availableTypeOptions.Type) + "

"; + html += '

' + globalize.translate("LabelTypeMetadataDownloaders", globalize.translate(availableTypeOptions.Type)) + "

"; html += '
'; for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; From 1bcd33e011af629cfdbcfc5063b2f6278f10d720 Mon Sep 17 00:00:00 2001 From: Anthony Lavado Date: Wed, 4 Mar 2020 18:40:39 +0000 Subject: [PATCH 214/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 36fe872ed6..655c287508 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1139,7 +1139,7 @@ "TabMusic": "Música", "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis complementos", - "TabNetworks": "redes", + "TabNetworks": "Cadenas", "TabNfoSettings": "Ajustes de NFO", "TabNotifications": "Notificaciones", "TabOther": "Otros", From acea76b45070383552ac3ced73fb9a5ee5d3bf16 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 4 Mar 2020 20:37:22 +0100 Subject: [PATCH 215/449] Fix tabs hopping --- src/assets/css/librarybrowser.css | 2 +- src/components/emby-tabs/emby-tabs.css | 4 ++-- src/themes/dark/theme.css | 8 -------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index d268ca87ee..67afef2376 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -854,7 +854,7 @@ div.itemDetailGalleryLink.defaultCardBackground { width: auto; align-items: center; justify-content: center; - margin-top: -4.3em; + margin-top: -4.2em; position: relative; } diff --git a/src/components/emby-tabs/emby-tabs.css b/src/components/emby-tabs/emby-tabs.css index 733a05fb0b..355f904cb8 100644 --- a/src/components/emby-tabs/emby-tabs.css +++ b/src/components/emby-tabs/emby-tabs.css @@ -13,11 +13,11 @@ vertical-align: middle; flex-shrink: 0; margin: 0; - padding: 1.5em; + padding: 1.5em 1.5em; position: relative; height: auto; min-width: initial; - line-height: initial; + line-height: 1.25; border-radius: 0; overflow: hidden; font-weight: 600; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 41af2c32d3..4363be991b 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -327,14 +327,6 @@ html { .emby-tab-button-active { color: #fff; - border-bottom: 2px solid #fff; - padding-top: 1.55em; - padding-bottom: 1.38em; -} - -.layout-mobile .emby-tab-button-active { - padding-top: 1.56em; /* Add one pixel to get a better fit in mobile layout */ - padding-bottom: 1.38em; } .emby-tab-button.show-focus:focus { From ac255e05933caaef64695bfb8a0418745a84e860 Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 4 Mar 2020 23:24:30 +0100 Subject: [PATCH 216/449] Fix padding in itemdetails --- src/itemdetails.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/itemdetails.html b/src/itemdetails.html index a1966afe08..72e2bff815 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -120,7 +120,7 @@
-
+
From ea8007428eec6affcfb0fe3952a37983c211b304 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 5 Mar 2020 00:04:41 -0500 Subject: [PATCH 217/449] Fix editing other user settings --- src/controllers/user/display.js | 4 ++-- src/controllers/user/home.js | 4 ++-- src/controllers/user/playback.js | 4 ++-- src/controllers/user/subtitles.js | 4 ++-- .../settings/{userSettings.js => userSettingsBuilder.js} | 2 +- src/scripts/site.js | 5 ++++- 6 files changed, 13 insertions(+), 10 deletions(-) rename src/scripts/settings/{userSettings.js => userSettingsBuilder.js} (99%) diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index e3a56e1552..f348f28750 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -1,4 +1,4 @@ -define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySettings, currentUserSettings, autoFocuser) { +define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (DisplaySettings, userSettingsBuilder, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySett var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index 20a42a7dfb..7f12efc7fb 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -1,4 +1,4 @@ -define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "au var homescreenSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index d0a127efe4..3def9d1931 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -1,4 +1,4 @@ -define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "auto var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index 8e2dcc8780..1f1102194e 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -1,4 +1,4 @@ -define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSettings, currentUserSettings, autoFocuser) { +define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSe var subtitleSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettingsBuilder.js similarity index 99% rename from src/scripts/settings/userSettings.js rename to src/scripts/settings/userSettingsBuilder.js index 2ce5d56f9f..1a35434c6d 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettingsBuilder.js @@ -251,5 +251,5 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get(key, true); }; - return new UserSettings(); + return UserSettings; }); diff --git a/src/scripts/site.js b/src/scripts/site.js index fc18ae9504..7332ba7b83 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -812,7 +812,10 @@ var AppInfo = {}; define("emby-toggle", [elementsPath + "/emby-toggle/emby-toggle"], returnFirstDependency); define("appSettings", [scriptsPath + "/settings/appSettings"], returnFirstDependency); - define("userSettings", [scriptsPath + "/settings/userSettings"], returnFirstDependency); + define("userSettingsBuilder", [scriptsPath + "/settings/userSettingsBuilder"], returnFirstDependency); + define("userSettings", ["userSettingsBuilder"], function(userSettingsBuilder) { + return new userSettingsBuilder(); + }); define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency); define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency); From 67554037dbdc93c99feb60e767bb09936d6aa615 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 5 Mar 2020 09:03:45 +0100 Subject: [PATCH 218/449] Moved to classes --- src/elements/emby-select/emby-select.css | 18 +++++++++++------- src/itemdetails.html | 8 ++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index b508e5d0e3..b9e0f8fd07 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -33,12 +33,12 @@ border: 0; } -.selectContainer-inline > .emby-select { +.selectContainer-inline>.emby-select { padding: 0.3em 1.9em 0.3em 0.5em; font-size: inherit; } -.selectContainer-inline > .emby-select[disabled] { +.selectContainer-inline>.emby-select[disabled] { padding-left: 0; padding-right: 0; } @@ -54,7 +54,7 @@ z-index: 1; } -.emby-select + .fieldDescription { +.emby-select+.fieldDescription { margin-top: 0.25em; } @@ -74,12 +74,16 @@ margin-bottom: 0.25em; } -.selectContainer-inline > .selectLabel { +.selectContainer-inline>.selectLabel { margin-bottom: 0; margin-right: 0.5em; flex-shrink: 0; } +.trackSelections>.selectContainer { + margin: 0.4em; +} + .emby-select-withcolor { -webkit-appearance: none; appearance: none; @@ -94,13 +98,13 @@ pointer-events: none; } -.selectContainer-inline > .selectArrowContainer { +.selectContainer-inline>.selectArrowContainer { top: initial; bottom: 0.24em; font-size: 90%; } -.emby-select[disabled] + .selectArrowContainer { +.emby-select[disabled]+.selectArrowContainer { display: none; } @@ -111,4 +115,4 @@ .emby-select-iconbutton { align-self: flex-end; -} +} \ No newline at end of file diff --git a/src/itemdetails.html b/src/itemdetails.html index 72e2bff815..9cc27d03ed 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -116,14 +116,14 @@
-
-
+ +
-
+
-
+
From da9c811350d5d3c194393ce92047db762d52ad65 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 5 Mar 2020 09:18:52 +0100 Subject: [PATCH 219/449] Fix lint --- src/elements/emby-select/emby-select.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index b9e0f8fd07..f827e9f2a7 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -33,12 +33,12 @@ border: 0; } -.selectContainer-inline>.emby-select { +.selectContainer-inline > .emby-select { padding: 0.3em 1.9em 0.3em 0.5em; font-size: inherit; } -.selectContainer-inline>.emby-select[disabled] { +.selectContainer-inline > .emby-select[disabled] { padding-left: 0; padding-right: 0; } @@ -54,7 +54,7 @@ z-index: 1; } -.emby-select+.fieldDescription { +.emby-select + .fieldDescription { margin-top: 0.25em; } @@ -74,13 +74,13 @@ margin-bottom: 0.25em; } -.selectContainer-inline>.selectLabel { +.selectContainer-inline > .selectLabel { margin-bottom: 0; margin-right: 0.5em; flex-shrink: 0; } -.trackSelections>.selectContainer { +.trackSelections > .selectContainer { margin: 0.4em; } @@ -98,13 +98,13 @@ pointer-events: none; } -.selectContainer-inline>.selectArrowContainer { +.selectContainer-inline > .selectArrowContainer { top: initial; bottom: 0.24em; font-size: 90%; } -.emby-select[disabled]+.selectArrowContainer { +.emby-select[disabled] + .selectArrowContainer { display: none; } @@ -115,4 +115,4 @@ .emby-select-iconbutton { align-self: flex-end; -} \ No newline at end of file +} From 21a3db2374ba1d8f4cdd725208bd8005848eb554 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 5 Mar 2020 09:24:02 +0100 Subject: [PATCH 220/449] Removed testing leftover --- src/itemdetails.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/itemdetails.html b/src/itemdetails.html index 9cc27d03ed..672d0b65a6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -116,7 +116,7 @@
- +
From c8cb5c2de3348ed86035fbab251070e43cd822b5 Mon Sep 17 00:00:00 2001 From: ferferga Date: Thu, 5 Mar 2020 09:30:47 +0100 Subject: [PATCH 221/449] Removed left margin --- src/elements/emby-select/emby-select.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index f827e9f2a7..9f07ca3f65 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -81,7 +81,7 @@ } .trackSelections > .selectContainer { - margin: 0.4em; + margin: 0.4em 0; } .emby-select-withcolor { From ef624fb6f7eda80a80934db02f96b9d6892f7b59 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 6 Mar 2020 03:24:03 +0000 Subject: [PATCH 222/449] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index fb5d6a900c..1b6c1529ac 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -191,7 +191,7 @@ "H264CrfHelp": "Constant Rate Factor (CRF) er standard kvalitetsinnstilling for x264-koderen. Du kan stille inn verdier mellom 0 og 51, hvor lavere verdier vil resultere i bedre kvalitet (på bekostning av høyere fil-størrelse). Fornuftige verdier ligger mellom 18 og 28. Standard for x264 er 23, så du kan bruke det som et utgangspunkt.", "EncoderPresetHelp": "Velg en raskere verdi for å forbedre ytelsen, eller en lavere verdi for å forbedre kvaliteten.", "HDPrograms": "HD-programmer", - "HardwareAccelerationWarning": "Aktivering av maskinvareakselerasjon kan føre til ustabilitet i enkelte miljøer. Sørg for at operativsystemet og skjermdriverne dine er fullt oppdatert. Hvis du har problemer med å spille videoer etter å ha aktivert dette, må du endre innstillingen tilbake til Auto.", + "HardwareAccelerationWarning": "Aktivering av maskinvareakselerasjon kan føre til ustabilitet i enkelte miljøer. Sørg for at operativsystemet og skjermdriverne dine er fullt oppdatert. Hvis du har problemer med å spille videoer etter å ha aktivert dette, må du deaktivere innstillingen igjen.", "HeaderAccessSchedule": "Tidsplan for tilgang", "HeaderAccessScheduleHelp": "Lag en tidsplan for tilgang for å begrense tilgangen til visse tider.", "HeaderActiveDevices": "Aktive enheter", @@ -457,7 +457,7 @@ "LabelEmbedAlbumArtDidl": "Bygg inn albumbilder i DIDL", "LabelEmbedAlbumArtDidlHelp": "Noen enheter foretrekker denne metoden for å motta albumomslag. Andre vil kunne få problemer med avspilling hvis dette alternativet er aktivert.", "LabelEnableAutomaticPortMap": "Aktiver automatisk portmapping", - "LabelEnableAutomaticPortMapHelp": "Forsøk å automatisk koble den eksterne porten til den lokale porten via UPnP. Dette fungerer ikke med alle rutere.", + "LabelEnableAutomaticPortMapHelp": "Forsøk å automatisk koble den eksterne porten til den lokale porten via UPnP. Dette fungerer ikke med alle rutere. Endringer trer ikke kraft før serveren startes på nytt.", "LabelEnableBlastAliveMessages": "Kringkast keepalive-meldinger", "LabelEnableBlastAliveMessagesHelp": "Aktiver hvis serveren ikke blir konsekvent oppdaget av andre UPnP-enheter på nettverket ditt.", "LabelEnableDlnaClientDiscoveryInterval": "Oppdateringsintervall for klient (i sekunder)", @@ -1451,9 +1451,9 @@ "OptionResElement": "res element", "OptionRandom": "Tilfeldig", "HeaderFavoritePeople": "Favorittpersoner", - "Raised": "Hevet", + "Raised": "Opphøyet", "ButtonSplit": "Del opp", - "SelectAdminUsername": "Vennligst velg et brukernavn for administrator-kontoen.", + "SelectAdminUsername": "Vennligst velg et brukernavn for administrator kontoen. ", "HeaderNavigation": "Navigering", "MessageConfirmAppExit": "Vil du avslutte?", "EnableFastImageFadeInHelp": "Bruk rask inntoning av animasjon for lastede bilder", @@ -1466,5 +1466,8 @@ "LabelDroppedFrames": "Fortapte bilder:", "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)", "NoCreatedLibraries": "Det virker som at du ikke har opprettet noen biblioteker ennå. {0}Vil du opprette et nå?{1}", - "AskAdminToCreateLibrary": "Spør en administrator om å lage et bibliotek." + "AskAdminToCreateLibrary": "Spør en administrator om å lage et bibliotek.", + "PlaybackErrorNoCompatibleStream": "Det oppstod et problem med klientprofilering, og serveren sender ikke et kompatibelt medieformat.", + "AllowFfmpegThrottlingHelp": "Når en omkoding eller ompakking kommer langt nok foran den nåværende avspillingsposisjonen stoppes prosessen slik at den bruker mindre ressurser. Dette er mest nyttig når du sjeldent bytter posisjon i videoen. Slå av dette hvis du opplever problemer med avspilling.", + "AllowFfmpegThrottling": "Begrens hastighet på omkoding" } From cd33c8c52c4dac1dbc3c5bed461e4da6f69751da Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 6 Mar 2020 14:04:29 +0300 Subject: [PATCH 223/449] Fix itemdetails poster overlapping now playing bar --- src/components/appfooter/appfooter.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/appfooter/appfooter.css b/src/components/appfooter/appfooter.css index 93cb3a75a5..6dc00b00c2 100644 --- a/src/components/appfooter/appfooter.css +++ b/src/components/appfooter/appfooter.css @@ -2,7 +2,7 @@ position: fixed; left: 0; right: 0; - z-index: 1; + z-index: 10; bottom: 0; transition: transform 180ms linear; contain: layout style; From df19087f7c08d3d0b16e3266c49785d93258d43a Mon Sep 17 00:00:00 2001 From: TheGoose Date: Fri, 6 Mar 2020 13:37:31 +0000 Subject: [PATCH 224/449] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 0ae336a22f..4f4f94f6fa 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -310,7 +310,7 @@ "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "HandledByProxy": "Handled by reverse proxy", - "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to Auto.", + "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to None.", "HeaderAccessSchedule": "Access Schedule", "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", "HeaderActiveDevices": "Active Devices", @@ -1026,7 +1026,7 @@ "LabelKidsCategories": "Children's categories:", "LabelInNetworkSignInWithEasyPasswordHelp": "Use the easy pin code to sign in to clients within your local network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", - "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.", + "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration.", "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.", @@ -1471,5 +1471,10 @@ "LabelPlayerDimensions": "Player dimensions:", "LabelDroppedFrames": "Dropped frames:", "LabelCorruptedFrames": "Corrupted frames:", - "CopyStreamURLError": "There was an error copying the URL." + "CopyStreamURLError": "There was an error copying the URL.", + "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", + "AskAdminToCreateLibrary": "Ask an administrator to create a library.", + "PlaybackErrorNoCompatibleStream": "There was an issue with the client profiling and the server isn't sending a compatible media format.", + "AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.", + "AllowFfmpegThrottling": "Throttle Transcodes" } From cb3efea4573b8d38c8da6b859fed39535ea3ac77 Mon Sep 17 00:00:00 2001 From: adi martha Date: Fri, 6 Mar 2020 17:57:17 +0000 Subject: [PATCH 225/449] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index 1a6113ecd6..0c3ef799c0 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -202,5 +202,7 @@ "Photos": "Foto", "Movies": "Film", "Alerts": "Peringatan", - "AddedOnValue": "Ditambahkan {0}" + "AddedOnValue": "Ditambahkan {0}", + "AllowFfmpegThrottling": "Transcode Tercekik", + "AllowOnTheFlySubtitleExtractionHelp": "Subtitle yang melekat di video dapat dikeluarkan dan dikirimkan kepada klien dalam bentuk text biasa dengan tujuan untuk menghalau terjadinya transcoding pada video. Pada beberapa system ini membutuhkan waktu yang lama dan dapat menyebabkan video playback menjadi terhenti dikarenakan proses ekstraksi. Non-aktifkan fitur ini untuk membiarkan subtitle langsung dilekatkan kepada video dengan cara transcoding ketika klien tidak mendukung fitur ini." } From ae35618875f211d2097826ae99a9a4c601bb7b50 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 6 Mar 2020 18:07:08 +0000 Subject: [PATCH 226/449] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 73ea163b2e..84a428f4ad 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -280,7 +280,7 @@ "EncoderPresetHelp": "Ónimdilikti jaqsartý úshin jyldam mánin, nemese sapasyn jaqsartý úshin baıaý mánin tańdańyz.", "HDPrograms": "HD-kórsetimder", "HandledByProxy": "Keri proksı arqyly óńdeldi", - "HardwareAccelerationWarning": "Apparattyq jedeldetýdi qosý keıbir ortalarda turaqsyzdyq týdyrýy múmkin. Amaldyq júıeńiz ben beıne draıverlerińiz tolyq jańartylǵanyna kóz jetkizińiz. Eger osyny qosqannan keıin beıne oınatýda qıyndyq bolsa, parametrdi qaıta Avto úshin ózgertýińiz qajet.", + "HardwareAccelerationWarning": "Apparattyq jedeldetýdi qosý keıbir ortalarda turaqsyzdyq týdyrýy múmkin. Amaldyq júıeńiz ben beıne draıverlerińiz tolyq jańartylǵanyna kóz jetkizińiz. Eger osyny qosqannan keıin beıne oınatýda qıyndyq bolsa, parametrdi qaıta Eshqanadaǵa ózgertýińiz qajet.", "HeaderAccessSchedule": "Qatynaý kestesi", "HeaderAccessScheduleHelp": "Qatynaýdy belgili saǵattarǵa shekteý úshin qatynaý kestesin jasańyz.", "HeaderActiveDevices": "Belsendi qurylǵylar", @@ -602,7 +602,7 @@ "LabelEmbedAlbumArtDidl": "DIDL ishine álbom sýretin endirý", "LabelEmbedAlbumArtDidlHelp": "Álbom sýretin alý úshin keıbir qurylǵylar osy ádisti qalaıdy. Basqalar úshin, osy opsıa qosylǵanda, oınatý sátsiz bolýy múmkin.", "LabelEnableAutomaticPortMap": "Avtomatty port salǵastyrýyn qosý", - "LabelEnableAutomaticPortMapHelp": "Jarıa portty jergilikti portqa UPnP arqyly avtomatty salǵastyrý áreketi. Bul keıbir jol josparlaǵysh ulgilerimen jumys istemeıtini múmkin.", + "LabelEnableAutomaticPortMapHelp": "Jarıa portty jergilikti portqa UPnP arqyly avtomatty salǵastyrý áreketi. Bul keıbir jol josparlaǵysh ulgilerimen jumys istemeıtini múmkin. Ózgerister server qaıta iske qosylǵansha deıin qoldanylmaıdy.", "LabelEnableBlastAliveMessages": "Belsendilikti tekserý habarlaryn jaýdyrý", "LabelEnableBlastAliveMessagesHelp": "Eger jelidegi basqa UPnP qurylǵylarymen server nyq tabylmasa buny qosyńyz.", "LabelEnableDlnaClientDiscoveryInterval": "Klıentterdi taýyp ashý aralyǵy, s", @@ -1501,5 +1501,6 @@ "HeaderNavigation": "Sharlaý", "CopyStreamURLError": "URL kóshirgende qate oryn aldy.", "ButtonSplit": "Bólý", - "AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý." + "AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý.", + "AllowFfmpegThrottling": "Qaıta kodtaýdy retteý" } From 45db8f6e70b9812a4dff9685d0e404ae9cabcdda Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 6 Mar 2020 17:44:52 +0000 Subject: [PATCH 227/449] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 5ef7fb3024..047204852c 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -273,7 +273,7 @@ "EncoderPresetHelp": "Выберите значение быстрее для улучшения производительности, или значение медленнее для улучшения качества.", "HDPrograms": "HD-передачи", "HandledByProxy": "Обрабатывается обратным прокси", - "HardwareAccelerationWarning": "Включение аппаратного ускорения может привести к нестабильности в некоторых средах. Убедитесь в том, что ваша операционная система и видеодрайверы полностью актуализированы. Если имеются проблемы с воспроизведением видео после включения этого, необходимо сменить параметр назад на Авто.", + "HardwareAccelerationWarning": "Включение аппаратного ускорения может привести к нестабильности в некоторых средах. Убедитесь в том, что ваша операционная система и видеодрайверы полностью актуализированы. Если имеются проблемы с воспроизведением видео после включения этого, необходимо сменить параметр назад на Ничего.", "HeaderAccessSchedule": "Расписание доступа", "HeaderAccessScheduleHelp": "Создайте расписание доступа, чтобы лимитировать доступ определёнными часами.", "HeaderActiveDevices": "Активные устройства", @@ -587,7 +587,7 @@ "LabelEmbedAlbumArtDidl": "Внедрять альбомные обложки в DIDL", "LabelEmbedAlbumArtDidlHelp": "Для некоторых устройств данный метод получения альбомных обложек является предпочтительным. Остальные могут быть не в состоянии воспроизводить, при включении данной опции.", "LabelEnableAutomaticPortMap": "Включить автоматическое сопоставление портов", - "LabelEnableAutomaticPortMapHelp": "Попытаться автоматически сопоставить публичный порт с локальным портом с помощью UPnP. Это может не сработать с некоторыми моделями маршрутизаторов.", + "LabelEnableAutomaticPortMapHelp": "Попытаться автоматически сопоставить публичный порт с локальным портом с помощью UPnP. Это может не работать с некоторыми моделями маршрутизаторов. Изменения не применяются до перезапуска сервера.", "LabelEnableBlastAliveMessages": "Бомбардировать сообщениями проверки активности", "LabelEnableBlastAliveMessagesHelp": "Включите, если сервер надёжно не обнаруживается иными UPnP устройствами в своей сети.", "LabelEnableDlnaClientDiscoveryInterval": "Интервал обнаружения клиентов", @@ -1466,5 +1466,6 @@ "CopyStreamURLError": "Произошла ошибка при копировании URL.", "OptionForceRemoteSourceTranscoding": "Принудительное перекодирование удалённых источников медиаданных (например, эфирное ТВ)", "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", - "AskAdminToCreateLibrary": "Запрашивать администратора для создания медиатеки." + "AskAdminToCreateLibrary": "Запрашивать администратора для создания медиатеки.", + "AllowFfmpegThrottling": "Дросселирование перекодировок" } From 6dd0d3b36147cd5da0e28b94be53f2523f64bc76 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Fri, 6 Mar 2020 13:20:04 +0000 Subject: [PATCH 228/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 56bbaf04cf..edbc343fae 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1444,7 +1444,7 @@ "LabelEnableDlnaDebugLogging": "Povoliť loggovanie DLNA debugu", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Určuje dobu trvania v sekundách medzi SSDP vyhľadávaniami vykonanými Jellyfinom.", "LabelEnableDlnaClientDiscoveryInterval": "Interval pre objavenie klienta (sekundy)", - "LabelEnableAutomaticPortMapHelp": "Pokus o automatické namapovanie vejerného portu na lokálny port cez UPnP. Toto nemusí fungovať so všetkými modelmi routerov.", + "LabelEnableAutomaticPortMapHelp": "Pokus o automatické namapovanie vejerného portu na lokálny port cez UPnP. Toto nemusí fungovať so všetkými modelmi routerov. Zmeny sa vykonajú až po reštarte servera.", "LabelEmbedAlbumArtDidlHelp": "Niektoré zariadenia preferujú túto metódu pre získavanie obrázku albumu. Ostatným môže zlyhať prehrávanie pokiaľ je táto možnosť povolená.", "LabelBlastMessageIntervalHelp": "Určuje dobu v sekundách medzi vysielaniami správ o serveri.", "LabelBindToLocalNetworkAddressHelp": "Voliteľné. Prepísať lokálnu IP adresu viazanú na http server. Pokiaľ zostane prázdna, server sa naviaže na všetky dostupné adresy. Pri zmene tejto hodnoty sa vyžaduje reštart Jellyfin Servera.", @@ -1467,5 +1467,8 @@ "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)", "NoCreatedLibraries": "Vyzerá to tak, že ste zatiaľ nevytvorili žiadnu knižnicu. {0}Chceli by ste nejakú vytvoriť teraz?{1}", - "AskAdminToCreateLibrary": "Pokiaľ chcete vytvoriť knižnicu, musíte sa spýtať administrátora." + "AskAdminToCreateLibrary": "Pokiaľ chcete vytvoriť knižnicu, musíte sa spýtať administrátora.", + "PlaybackErrorNoCompatibleStream": "Nastal problém s profilom klienta a server preto neposiela kompatibilný mediálny formát.", + "AllowFfmpegThrottlingHelp": "Keď sa transkódovanie alebo remuxovanie dostane do bodu, kedy je dostatočne vopred voči súčasnej polohe prehrávania, pozastaví proces aby spotrebovával menej zdrojov. Toto je najviac užitočné, keď sa pozerá obsah bez pretáčania. Vypnite túto možnosť, pokiaľ má vaše prehrávanie problémy.", + "AllowFfmpegThrottling": "Obmedzenie transkódovania" } From d4cef1cf4e0cc821755b0293f7c2d5d1767caaae Mon Sep 17 00:00:00 2001 From: Scott Anecito Date: Fri, 6 Mar 2020 07:17:26 +0000 Subject: [PATCH 229/449] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index f10e63bcef..b1282b3c97 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -699,7 +699,7 @@ "LabelLoginDisclaimer": "ログイン免責事項:", "LabelSendNotificationToUsers": "通知を送る:", "LabelVideoCodec": "映像コーデック:", - "LabelWeb": "ウェブ: ", + "LabelWeb": "ウェブ:", "LabelYear": "年:", "MediaInfoExternal": "外部", "MediaInfoLanguage": "言語", @@ -1125,5 +1125,14 @@ "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。", "LabelArtistsHelp": "分けますと使用;", - "Identify": "識別する" + "Identify": "識別する", + "TabRecordings": "録画", + "Recordings": "録画", + "RecordingScheduled": "録画をスケジュールしました。", + "RecordingCancelled": "録画をキャンセルしました。", + "LabelMaxChromecastBitrate": "Chromecastのストリーミング品質:", + "LabelImportOnlyFavoriteChannels": "お気に入りのチャンネルだけ", + "LabelIdentificationFieldHelp": "大文字小文字を区別しない部分文字列や正規表現です。", + "LabelCustomRating": "カスタム格付け:", + "LabelCorruptedFrames": "破損したフレーム:" } From 156d571bd63a9a8b0bf8fec56ae25f5d7a2de940 Mon Sep 17 00:00:00 2001 From: Terrance M Date: Fri, 6 Mar 2020 22:01:50 +0000 Subject: [PATCH 230/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b71d9408c1..e537cd07c9 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -289,7 +289,7 @@ "HeaderContainerProfile": "媒体载体配置", "HeaderContainerProfileHelp": "媒体载体的配置文件标明了设备播放特定媒体格式时的限制。如果在限制之内则媒体将被转码,否则媒体格式将被配置为直接播放。", "HeaderContinueListening": "继续听", - "HeaderContinueWatching": "继续观看", + "HeaderContinueWatching": "继续观影", "HeaderCustomDlnaProfiles": "自定义配置", "HeaderDateIssued": "发布日期", "HeaderDefaultRecordingSettings": "默认录制设定", @@ -360,7 +360,7 @@ "HeaderMyMediaSmall": "我的媒体 (小)", "HeaderNewApiKey": "新 API 密钥", "HeaderNewDevices": "新设备", - "HeaderNextUp": "下一步", + "HeaderNextUp": "接下来", "HeaderOnNow": "现在", "HeaderOtherItems": "其他项目", "HeaderParentalRatings": "家长分级", @@ -548,7 +548,7 @@ "LabelEmbedAlbumArtDidl": "在DIDL中嵌入专辑封面", "LabelEmbedAlbumArtDidlHelp": "有些设备首选这种方式获取专辑封面。启用该选项可能导致其他设备播放失败。", "LabelEnableAutomaticPortMap": "开启自动端口映射", - "LabelEnableAutomaticPortMapHelp": "勾选以通过 UPnP 自动映射公共端口到本地端口。这个选项在某些不支持的路由器上可能不起作用。", + "LabelEnableAutomaticPortMapHelp": "尝试通过UPnP将公共端口自动映射到本地端口。这可能不适用于某些型号的路由器。需要服务器重新启动后才会应用更改。", "LabelEnableBlastAliveMessages": "爆发活动信号", "LabelEnableBlastAliveMessagesHelp": "如果该服务器不能被网络中的其他UPnP设备检测到,请启用此选项。", "LabelEnableDlnaClientDiscoveryInterval": "客户端搜寻时间间隔(秒)", @@ -1471,5 +1471,8 @@ "EnableFastImageFadeInHelp": "为已加载的图片启用更快的图片淡入动画", "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)", "NoCreatedLibraries": "看上去您还未创建任何资料库。{0} 您想现在创建一个吗? {1}", - "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。" + "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。", + "PlaybackErrorNoCompatibleStream": "客户端配置文件存在问题,服务器未发送兼容的媒体格式。", + "AllowFfmpegThrottlingHelp": "当转码或remux距离当前播放位置足够远时,请暂停该进程,以减少资源消耗。 在不经常观看的情况下最有用。 如果遇到播放问题,请关闭此功能。", + "AllowFfmpegThrottling": "节流转码" } From f3f50ab6fa433b7865052c158818f10e492ea2d2 Mon Sep 17 00:00:00 2001 From: Nutjob Date: Fri, 6 Mar 2020 22:33:52 +0000 Subject: [PATCH 231/449] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index b4f84b0c10..72b793e15f 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -253,7 +253,7 @@ "EncoderPresetHelp": "Scegli una velocità maggiore per migliorare le performance, o minore per incrementare la qualità.", "HDPrograms": "Programmi HD", "HandledByProxy": "Gestito dal reverse proxy", - "HardwareAccelerationWarning": "L'attivazione dell'accelerazione hardware potrebbe causare instabilità in qualche sistema. Assicurarsi che il sistema operativo e i driver video siano completamente aggiornati. Se hai difficoltà a riprodurre video dopo aver abilitato questa operazione, dovrai cambiare l'impostazione in Auto.", + "HardwareAccelerationWarning": "L'attivazione dell'accelerazione hardware potrebbe causare instabilità in qualche sistema. Assicurarsi che il sistema operativo e i driver video siano completamente aggiornati. Se hai difficoltà a riprodurre video dopo aver abilitato questa operazione, dovrai cambiare l'impostazione in None.", "HeaderAccessSchedule": "Orario di accesso", "HeaderAccessScheduleHelp": "Creare un programma di accesso per limitare l'accesso a determinate ore.", "HeaderActiveDevices": "Dispositivi Connessi", @@ -276,7 +276,7 @@ "HeaderAudioBooks": "Audiolibri", "HeaderAudioSettings": "Impostazioni audio", "HeaderAutomaticUpdates": "Aggiornamenti Automatici", - "HeaderBlockItemsWithNoRating": "Blocca elementi sconosciuti o senza informazione", + "HeaderBlockItemsWithNoRating": "Blocca elementi sconosciuti o senza informazioni:", "HeaderBooks": "Libri", "HeaderBranding": "Personalizza", "HeaderCancelRecording": "Annulla la Registrazione", @@ -412,7 +412,7 @@ "HeaderSelectTranscodingPath": "Selezionare Percorso Temporaneo Transcodifica", "HeaderSelectTranscodingPathHelp": "Sfoglia o immettere il percorso da utilizzare per la transcodifica dei file temporanei. La cartella deve essere scrivibile.", "HeaderSendMessage": "Invia un messaggio", - "HeaderSeries": "Serie:", + "HeaderSeries": "Serie", "HeaderSeriesOptions": "Impostazioni Serie TV", "HeaderSeriesStatus": "Stato Serie TV", "HeaderServerSettings": "Impostazioni server", @@ -549,11 +549,11 @@ "LabelDownloadLanguages": "Scarica lingue:", "LabelDropImageHere": "Rilasciare l'immagine qui, oppure clicca per sfogliare.", "LabelDropShadow": "Ombreggiatura:", - "LabelEasyPinCode": "Codice Pin", + "LabelEasyPinCode": "Codice Pin:", "LabelEmbedAlbumArtDidl": "Inserisci le copertine degli Album in Didl", "LabelEmbedAlbumArtDidlHelp": "Alcuni dispositivi preferiscono questo metodo per ottenere le copertine degli album. Altri possono non riuscire a riprodurli con questa opzione abilitata.", "LabelEnableAutomaticPortMap": "Abilita mappatura automatica delle porte", - "LabelEnableAutomaticPortMapHelp": "Tenta di mappare automaticamente la porta pubblica sulla porta locale tramite UPnP. Questo potrebbe non funzionare con alcuni modelli di router.", + "LabelEnableAutomaticPortMapHelp": "Tenta di mappare automaticamente la porta pubblica sulla porta locale tramite UPnP. Questo potrebbe non funzionare con alcuni modelli di router. I cambiamenti non saranno applicati fino ad un riavvio del server.", "LabelEnableBlastAliveMessages": "Invia segnale di presenza", "LabelEnableBlastAliveMessagesHelp": "Attivare questa opzione se il server non viene rilevato in modo affidabile da altri dispositivi UPnP in rete.", "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dispositivi (secondi)", @@ -587,7 +587,7 @@ "LabelH264Crf": "CRF di codifica H264:", "LabelEncoderPreset": "Preset di codifica H264:", "LabelHardwareAccelerationType": "Accelerazione Hardware:", - "LabelHardwareAccelerationTypeHelp": "Questa è una componente sperimentale disponibile solo su sistemi supportati.", + "LabelHardwareAccelerationTypeHelp": "L'accelerazione hardware richiede un'ulteriore configurazione.", "LabelHomeNetworkQuality": "Qualità della rete domestica:", "LabelHomeScreenSectionValue": "Pagina iniziale Sezione {0}:", "LabelHttpsPort": "Porta HTTPS locale:", @@ -687,9 +687,9 @@ "LabelPlaceOfBirth": "Luogo di nascita:", "LabelPlayDefaultAudioTrack": "Riprodurre la traccia audio di default indipendentemente dalla lingua", "LabelPostProcessor": "Applicazione Post-processing:", - "LabelPostProcessorArguments": "Argomenti linea di comando del Post-processor", + "LabelPostProcessorArguments": "Argomenti linea di comando del Post-processor:", "LabelPostProcessorArgumentsHelp": "Usa {path} come percorso al file di registrazione.", - "LabelPreferredDisplayLanguage": "Lingua preferita visualizzata", + "LabelPreferredDisplayLanguage": "Lingua preferita visualizzata:", "LabelPreferredDisplayLanguageHelp": "La traduzione di Jellyfin è un progetto attivo.", "LabelPreferredSubtitleLanguage": "Lingua dei sottotitoli preferita:", "LabelPrevious": "Precedente", @@ -722,7 +722,7 @@ "LabelScreensaver": "Salvaschermo:", "LabelSeasonNumber": "Numero stagione:", "LabelSecureConnectionsMode": "Modalità connessione sicura:", - "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV", + "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV:", "LabelSelectFolderGroupsHelp": "Le cartelle non selezionate verranno mostrate come se stesse nelle proprie viste", "LabelSelectUsers": "Seleziona Utenti:", "LabelSelectVersionToInstall": "Selezionare la versione da installare:", @@ -780,7 +780,7 @@ "LabelUserLibrary": "Libreria utente:", "LabelUserLibraryHelp": "Selezionare la libreria utente da visualizzare sul dispositivo. Lasciare vuoto per ereditare l'impostazione predefinita.", "LabelUserRemoteClientBitrateLimitHelp": "Sovrascrive il valore globale predefinito impostato nelle impostazioni di riproduzione del server.", - "LabelUsername": "Nome utente", + "LabelUsername": "Nome utente:", "LabelVaapiDevice": "Dispositivo VA API:", "LabelVaapiDeviceHelp": "Questo è il nodo rendering usato dall'accelerazione hardware.", "LabelValue": "valore:", @@ -1030,7 +1030,7 @@ "OptionTvdbRating": "Voto TVDB", "OptionUnairedEpisode": "Episodi mai andati in onda", "OptionUnplayed": "Non visto", - "OptionWakeFromSleep": "Risveglio:", + "OptionWakeFromSleep": "Risveglio", "OptionWednesday": "Mercoledì", "OptionWeekdays": "Feriali", "OptionWeekends": "Il Weekend", @@ -1223,7 +1223,7 @@ "ThisWizardWillGuideYou": "Questa procedura ti guiderà attraverso il processo di installazione. Per iniziare, per favore scegli la tua lingua preferita.", "Thumb": "Miniatura", "Thursday": "Giovedì", - "TitleHardwareAcceleration": "Accelerazione Hardware:", + "TitleHardwareAcceleration": "Accelerazione Hardware", "TitleHostingSettings": "Impostazioni hosting", "TitlePlayback": "Riproduzione", "TrackCount": "{0} tracce", @@ -1458,5 +1458,16 @@ "HeaderNavigation": "Navigazione", "CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo.", "EnableFastImageFadeInHelp": "Abilita la dissolvenza veloce per le immagini caricate", - "EnableFastImageFadeIn": "Dissolvenza immagine veloce" + "EnableFastImageFadeIn": "Dissolvenza immagine veloce", + "PlaybackErrorNoCompatibleStream": "C'era un problema con il profiling del client e il server non sta inviando un formato compatibile.", + "OptionForceRemoteSourceTranscoding": "Forza la transcodifica da fonti di media remoti (come LiveTV)", + "NoCreatedLibraries": "Sembra che tu non abbia ancora creato delle librerie. {0}Vuoi crearne una adesso?{1}", + "LabelVideoResolution": "Risoluzione video:", + "LabelStreamType": "Tipo di stream:", + "LabelPlayerDimensions": "Dimensioni player:", + "LabelDroppedFrames": "Frame persi:", + "LabelCorruptedFrames": "Frame corrotti:", + "AskAdminToCreateLibrary": "Chiedi ad un amministratore di creare una libreria.", + "AllowFfmpegThrottlingHelp": "Quando una transcodifica o un remux sono abbastanza avanti rispetto alla corrente posizione di riproduzione, pausa il processo così da consumare meno risorse. Questo è utile quando si guarda un video senza avanzare spesso durante la riproduzione. Disattiva questa opzione se stai avendo problemi di riproduzione.", + "AllowFfmpegThrottling": "Acceleratore Transcodifica" } From e89d3e8cce57a25c66413a61a3c024c5200d5956 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 6 Mar 2020 19:55:51 +0000 Subject: [PATCH 232/449] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 047204852c..b84651ed58 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1219,8 +1219,8 @@ "Share": "Поделиться", "ShowAdvancedSettings": "Показать расширенные параметры", "ShowIndicatorsFor": "Показывать метки для:", - "ShowTitle": "Название передачи", - "ShowYear": "Год передачи", + "ShowTitle": "Отображать название", + "ShowYear": "Отображать год", "Shows": "Передачи", "Shuffle": "Перемешать", "SimultaneousConnectionLimitHelp": "Максимальное количество разрешённых одновременных потоков. Введите 0, чтобы снять ограничения.", @@ -1428,7 +1428,7 @@ "SubtitleOffset": "Сдвиг субтитров", "TabNetworking": "Работа в сети", "LabelBaseUrlHelp": "Здесь вы можете добавить пользовательский подкаталог для доступа к серверу с более уникального URL.", - "LabelPlayer": "Игрок:", + "LabelPlayer": "Проигрыватель:", "MoreMediaInfo": "О медиаданных", "LabelVideoCodec": "Видео кодек:", "LabelVideoBitrate": "Потоковая скорость аудио:", @@ -1439,7 +1439,7 @@ "LabelFolder": "Папка:", "LabelBaseUrl": "Базовый URL:", "LabelBitrate": "Поток. ск-ть:", - "LabelAudioSampleRate": "Ч-та дискр-ии аудио:", + "LabelAudioSampleRate": "Частота дискретизации аудио:", "LabelAudioCodec": "Аудио кодек:", "LabelAudioChannels": "Аудио каналы:", "LabelAudioBitrate": "Потоковая скорость аудио:", @@ -1460,12 +1460,14 @@ "LabelStreamType": "Тип потока:", "EnableFastImageFadeInHelp": "Включить быстрое появление анимации для загруженных рисунков", "EnableFastImageFadeIn": "Быстрое появление рисунка", - "LabelPlayerDimensions": "Размерности проигрывателя:", + "LabelPlayerDimensions": "Размеры проигрывателя:", "LabelDroppedFrames": "Пропущенные кадры:", "LabelCorruptedFrames": "Испорченные кадры:", "CopyStreamURLError": "Произошла ошибка при копировании URL.", "OptionForceRemoteSourceTranscoding": "Принудительное перекодирование удалённых источников медиаданных (например, эфирное ТВ)", "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", - "AskAdminToCreateLibrary": "Запрашивать администратора для создания медиатеки.", - "AllowFfmpegThrottling": "Дросселирование перекодировок" + "AskAdminToCreateLibrary": "Попросите администратора создать медиатеку.", + "AllowFfmpegThrottling": "Притормаживать перекодировку", + "PlaybackErrorNoCompatibleStream": "Возникла проблема с профилем клиента, и сервер не отправляет совместимый формат мультимедиа.", + "AllowFfmpegThrottlingHelp": "Когда перекодирование или переупаковка достаточно далеко опережают текущую позицию воспроизведения, процесс приостанавливается, так что он использует меньше ресурсов. Это наиболее полезно, когда вы редко меняете позиции в видео. Выключите это, если у вас возникли проблемы с воспроизведением." } From a76583de60c832e0a7b308ee75cdfc27ca24a31b Mon Sep 17 00:00:00 2001 From: Marcus Schelin Date: Fri, 6 Mar 2020 22:44:52 +0000 Subject: [PATCH 233/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 524a644f8b..6097bcfd6d 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -3,10 +3,10 @@ "Actor": "Skådespelare", "Add": "Lägg till", "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dem och sen högerklicka eller tappa upp menyn för att lägga till dem.", - "AddToCollection": "Lägg till samling", + "AddToCollection": "Lägg till i samling", "AddToPlayQueue": "Lägg till i spelkö", "AddToPlaylist": "Lägg till i spellista", - "AddedOnValue": "Tillagd {0}", + "AddedOnValue": "Lade till {0}", "AdditionalNotificationServices": "Sök efter fler meddelandetillägg i tilläggskatalogen.", "AirDate": "Sändningsdatum", "Aired": "Sändes", @@ -180,7 +180,7 @@ "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras.", - "DropShadow": "Visa Skugga", + "DropShadow": "Skuggning", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", @@ -245,7 +245,7 @@ "EncoderPresetHelp": "Välj ett snabbare värde för öka prestandan, eller ett långsammare värde för att utöka kvaliten.", "HDPrograms": "HD-program", "HandledByProxy": "Hanteras av reverse proxy", - "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem att spela upp videor när detta är på behöver du ändra tillbaka inställningen till Auto.", + "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem med uppspelning när detta är på behöver du ändra tillbaka inställningen till Auto.", "HeaderAccessSchedule": "Schema för åtkomst", "HeaderAccessScheduleHelp": "Skapa ett schema för att begränsa åtkomsten till vissa tider.", "HeaderActiveDevices": "Aktiva enheter", @@ -507,8 +507,8 @@ "LabelCurrentPassword": "Nuvarande lösenord:", "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", - "LabelCustomCss": "Egen CSS:", - "LabelCustomCssHelp": "Applicera din egen css till webbgränssnittet.", + "LabelCustomCss": "Egen CSS-stil:", + "LabelCustomCssHelp": "Använd din egen CSS-stil för webbgränssnittet.", "LabelCustomDeviceDisplayName": "Visningsnamn:", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", "LabelCustomRating": "Anpassad åldersgräns:", @@ -542,7 +542,7 @@ "LabelEmbedAlbumArtDidl": "Bädda in omslagsbilder i Didl", "LabelEmbedAlbumArtDidlHelp": "Vissa enheter föredrar den här metoden att ta fram omslagsbilder. Andra kanske avbryter avspelningen om detta val är aktiverat.", "LabelEnableAutomaticPortMap": "Aktivera automatisk koppling av portar", - "LabelEnableAutomaticPortMapHelp": "Automatisk länkning av publik och lokal port via UPnP. Detta kanske inte fungerar med alla routrar.", + "LabelEnableAutomaticPortMapHelp": "Automatisk länkning av publik och lokal port via UPnP. Detta kanske inte fungerar med alla routrar. Obs. Ingenting kommer att ändras förrän servern startats om.", "LabelEnableBlastAliveMessages": "Skicka ut \"jag lever\"-meddelanden", "LabelEnableBlastAliveMessagesHelp": "Aktivera detta om andra UPnP-enheter på nätverket har problem att upptäcka servern.", "LabelEnableDlnaClientDiscoveryInterval": "Intervall för upptäckt av klienter (i sekunder)", @@ -1270,7 +1270,7 @@ "HeaderFavoriteMovies": "Favoritfilmer", "HeaderAudioLanguages": "Ljudspråk", "HeaderAppearsOn": "Medverkar i", - "HeaderApp": "App", + "HeaderApp": "Applikation", "HeaderAdmin": "Administratör", "Guide": "Guide", "GenreValue": "Genre: {0}", @@ -1317,7 +1317,7 @@ "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", - "Absolute": "komplett", + "Absolute": "Komplett", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", @@ -1344,7 +1344,7 @@ "LabelStreamType": "Stream typ:", "LabelStatus": "Status:", "LabelSize": "Storlek:", - "LabelServerName": "Server namn:", + "LabelServerName": "Servernamn:", "LabelSecureConnectionsMode": "Säker uppkopplings läge:", "EnableFastImageFadeInHelp": "Aktivera snabbare fade-in animationer för laddade bilder", "EnableFastImageFadeIn": "Snabb bild fade-in", @@ -1444,11 +1444,11 @@ "ManageLibrary": "Hantera bibliotek", "Live": "Live", "LeaveBlankToNotSetAPassword": "Du kan lämna detta fält tomt för att inte ange lösenord.", - "LaunchWebAppOnStartupHelp": "Öppna webb klient i din standard webbläsare när servern startas. Detta kommer inte ske när du använder starta om servern funktionen.", - "LaunchWebAppOnStartup": "Starta webb gränssnitt när servern startas", + "LaunchWebAppOnStartupHelp": "Öppna webbgränssnittet i din standardwebbläsare när servern först startar. Detta händer inte om du använder starta om-funktionen.", + "LaunchWebAppOnStartup": "Öppna webbgränssnittet när servern startas", "LanNetworksHelp": "Kommatecken separerad lista på IP adresser eller IP/nätmask inlägg för nätverk som anses vara på lokala nätverket för att tvinga fram bandbredd begränsningar. Om angett, alla andra IP adresser kommer att anses vara på ett externt nätverk och kommer tilldelas till det externa bandbredd begränsningarna. Om lämnat tomt, endast serverns subnet anses vara på det lokala nätverket.", - "LabelXDlnaDoc": "X-DLNA doc:", - "LabelXDlnaCap": "X-DLNA cap:", + "LabelXDlnaDoc": "X-DLNA-dokumentation:", + "LabelXDlnaCap": "X-DLNA-begränsning:", "LabelWeb": "Webb:", "LabelVideoResolution": "Video upplösning:", "LabelVideoCodec": "Video codec:", @@ -1466,5 +1466,8 @@ "LabelTranscodingProgress": "Omkodning progress:", "LabelTranscodingFramerate": "Omkodning framerate:", "LabelTranscodes": "Omkodningar:", - "LabelTranscodePath": "Omkodning sökväg:" + "LabelTranscodePath": "Omkodning sökväg:", + "PlaybackErrorNoCompatibleStream": "Klienten kunde inte identifieras och servern skickar inte ett kompatibelt medieformat.", + "AllowFfmpegThrottlingHelp": "När omkodningen går uppspelningen långt i förväg pausas den tills vidare för att spara resurser. Detta fungerar bäst när du kollar utan att spola mycket; stäng av ifall spelaren krånglar.", + "AllowFfmpegThrottling": "Begränsad omkodning" } From 137acb23a808263fab4c0d38ae007a4ac1a3e45d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 7 Mar 2020 12:16:18 +0300 Subject: [PATCH 234/449] Fix arrow buttons in library options --- .../libraryoptionseditor/libraryoptionseditor.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 0480ed5072..5f3b20fda2 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -273,14 +273,19 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function adjustSortableListElement(elem) { var btnSortable = elem.querySelector(".btnSortable"); + var inner = btnSortable.querySelector("i"); if (elem.previousSibling) { + btnSortable.title = globalize.translate("ButtonUp"); btnSortable.classList.add("btnSortableMoveUp"); btnSortable.classList.remove("btnSortableMoveDown"); - btnSortable.querySelector("i").innerHTML = "keyboard_arrow_up"; + inner.classList.remove("keyboard_arrow_down"); + inner.classList.add("keyboard_arrow_up"); } else { + btnSortable.title = globalize.translate("ButtonDown"); btnSortable.classList.remove("btnSortableMoveUp"); btnSortable.classList.add("btnSortableMoveDown"); - btnSortable.querySelector("i").innerHTML = "keyboard_arrow_down"; + inner.classList.remove("keyboard_arrow_up"); + inner.classList.add("keyboard_arrow_down"); } } From 7cb83755e67205657239fc04dfc673cf80623890 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 7 Mar 2020 13:15:30 +0300 Subject: [PATCH 235/449] Fix recording button icon --- src/components/recordingcreator/recordingbutton.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index a32803e107..576fa59d59 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -21,6 +21,13 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' } } + function setButtonIcon(button, icon) { + var inner = button.querySelector('i'); + inner.classList.remove('fiber_smart_record'); + inner.classList.remove('fiber_manual_record'); + inner.classList.add(icon); + } + function RecordingButton(options) { this.options = options; @@ -30,7 +37,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' this.refresh(options.itemId, options.serverId); } var button = options.button; - button.querySelector('i').innerHTML = 'fiber_manual_record'; + setButtonIcon(button, 'fiber_manual_record'); var clickFn = onRecordingButtonClick.bind(this); this.clickFn = clickFn; @@ -80,7 +87,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' var options = this.options; var button = options.button; this.item = item; - button.querySelector('i').innerHTML = getIndicatorIcon(item); + setButtonIcon(button, getIndicatorIcon(item)); if (item.TimerId && (item.Status || 'Cancelled') !== 'Cancelled') { button.classList.add('recordingIcon-active'); From 9bf8731a59532315b8650ac7bc8f0f37dcefd918 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 7 Mar 2020 13:21:35 +0300 Subject: [PATCH 236/449] Move setting of the default icon before the actual one --- src/components/recordingcreator/recordingbutton.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index 576fa59d59..e9c174bfd6 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -31,13 +31,15 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' function RecordingButton(options) { this.options = options; + var button = options.button; + + setButtonIcon(button, 'fiber_manual_record'); + if (options.item) { this.refreshItem(options.item); } else if (options.itemId && options.serverId) { this.refresh(options.itemId, options.serverId); } - var button = options.button; - setButtonIcon(button, 'fiber_manual_record'); var clickFn = onRecordingButtonClick.bind(this); this.clickFn = clickFn; From 45353d2e26819d3c3f2e927bc3c5d932d47c7a1b Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 7 Mar 2020 08:20:16 +0000 Subject: [PATCH 237/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index f7a1700810..df6799966c 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -871,7 +871,7 @@ "LabelArtistsHelp": "Ha több van használd a következő elválasztót ;", "LabelDisplayCollectionsView": "Jelenítse meg a Gyűjtemények menüpontot a filmgyűjtemények megjelenítéséhez", "LabelDisplayCollectionsViewHelp": "Ez külön menüpontot hoz létre a filmgyűjtemények megjelenítéséhez. Gyűjtemény létrehozásához kattints jobb gombbal vagy kattints a három pontra bármelyik filmen, és válaszd a 'Hozzáadás gyűjteményhez' lehetőséget. ", - "LabelEnableAutomaticPortMapHelp": "A szerver az UPnP segítségével a routeren megpróbálja automatikusan átirányítani a nyilvános portot a helyi portra. Előfordulhat, hogy egyes router modelleken ez nem működik.", + "LabelEnableAutomaticPortMapHelp": "A szerver az UPnP segítségével a routeren megpróbálja automatikusan átirányítani a nyilvános portot a helyi portra. Előfordulhat, hogy egyes router modelleken ez nem működik. A módosítások újraindítás után lépnek életbe.", "LabelEnableBlastAliveMessagesHelp": "Engedélyezd ezt ha a szerver nem észleli megbízhatóan a hálózat más UPnP-eszközeit.", "LabelEnableDlnaClientDiscoveryInterval": "Kliens felderítési intervallum (másodperc)", "LabelEnableDlnaClientDiscoveryIntervalHelp": "A Jellyfin által végrehajtott SSDP keresések időtartamát határozza meg másodpercben.", @@ -1471,5 +1471,8 @@ "LabelBaseUrlHelp": "Ide hozzáadhatsz egy egyéni alkönyvtárat, hogy a szerverhez egyedibb URL-címről férj hozzá.", "ErrorPleaseSelectLineup": "Kérjük, válassz ki egy felhozatalt, és próbáld újra. Ha nem állnak rendelkezésre felsorolások, akkor ellenőrizd, hogy helyes-e felhasználóneved, jelszavad és irányítószámod.", "ErrorAddingListingsToSchedulesDirect": "Hiba történt a felhozatal hozzáadása közben a Schedules Direct fiókhoz. A Schedules Direct csak korlátozott számú fiók hozzáadását támogatja. Lehetséges, hogy be kell jelentkezned a Schedules Direct weboldalán és eltávolítani néhány más listát a fiókodról mielőtt továbblépsz.", - "DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket." + "DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket.", + "PlaybackErrorNoCompatibleStream": "Hiba történt a kliens felmérése közben és a szerver nem küld kompatibilis formátumot az eszközre.", + "AllowFfmpegThrottlingHelp": "Ha az átkódolás vagy remux eléggé előtöltődött a jelenlegi lejátszási pozícióhoz képest, ez megállítja a folyamatot, hogy kevesebb erőforrást vegyen igénybe. Ez akkor hasznos, ha ritkán ugrálsz előre a lejátszott videókban. Kapcsold ki, ha lejátszási problémákba ütközöl.", + "AllowFfmpegThrottling": "Átkódolás visszafogása" } From dcaa87e4cb85a4be40a44a04653b8c2c05c5fbcc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 7 Mar 2020 17:23:31 +0300 Subject: [PATCH 238/449] Fix brightness indicator --- src/components/playback/brightnessosd.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 47551e8de6..e73fc39689 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -98,15 +98,22 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia } } + function setIcon(iconElement, icon) { + iconElement.classList.remove('brightness_high'); + iconElement.classList.remove('brightness_medium'); + iconElement.classList.remove('brightness_low'); + iconElement.classList.add(icon); + } + function updateElementsFromPlayer(brightness) { if (iconElement) { if (brightness >= 80) { - iconElement.innerHTML = ''; + setIcon(iconElement, 'brightness_high'); } else if (brightness >= 20) { - iconElement.innerHTML = ''; + setIcon(iconElement, 'brightness_medium'); } else { - iconElement.innerHTML = ''; + setIcon(iconElement, 'brightness_low'); } } if (progressElement) { From acd9fe92b80b1e822ed14df26e3869565eb8ea2b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 7 Mar 2020 17:40:05 +0300 Subject: [PATCH 239/449] Fix sort button icon --- src/controllers/list.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index 6e25242a01..bcc38f27cf 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -157,6 +157,12 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" return query; } + function setSortButtonIcon(btnSortIcon, icon) { + btnSortIcon.classList.remove("arrow_downward"); + btnSortIcon.classList.remove("arrow_upward"); + btnSortIcon.classList.add(icon); + } + function updateSortText(instance) { var btnSortText = instance.btnSortText; @@ -175,7 +181,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "" : ""; + setSortButtonIcon(btnSortIcon, "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"); } } } From feacdcd1aac9c747c60ca681f21ad5717e6f3f89 Mon Sep 17 00:00:00 2001 From: sparky8251 Date: Sat, 7 Mar 2020 12:01:36 -0500 Subject: [PATCH 240/449] Reduced OSD timeout from 5 seconds to 3 --- src/controllers/playback/videoosd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index c02c9b4171..24d779f245 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -376,7 +376,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function startOsdHideTimer() { stopOsdHideTimer(); - osdHideTimeout = setTimeout(hideOsd, 5e3); + osdHideTimeout = setTimeout(hideOsd, 3e3); } function stopOsdHideTimer() { From 8eb296802796743e3ea78ba5f1cdbeae278c66e6 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 8 Mar 2020 00:24:53 +0300 Subject: [PATCH 241/449] Clear player data after stop --- src/components/playback/playbackmanager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 3a3bddd989..8de1ffc190 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3162,7 +3162,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // User clicked stop or content ended var state = self.getPlayerState(player); - var streamInfo = getPlayerData(player).streamInfo; + var data = getPlayerData(player); + var streamInfo = data.streamInfo; var nextItem = self._playNextAfterEnded ? self._playQueueManager.getNextItemInfo() : null; @@ -3210,6 +3211,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem); } else if (nextItem) { self.nextTrack(); + } else { + // Nothing more to play - clear data + data.streamInfo = null; } } From ea74e16ef65482b0536efa8693972ce8a9e08594 Mon Sep 17 00:00:00 2001 From: Leo Verto Date: Sat, 7 Mar 2020 20:15:46 +0000 Subject: [PATCH 242/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 1c5b4243b3..634db83526 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -304,7 +304,7 @@ "HeaderContainerProfile": "Containerprofil", "HeaderContainerProfileHelp": "Containerprofile weisen auf Beschränkungen einen Gerätes beim Abspielen bestimmter Formate hin. Wenn eine Beschränkung zutrifft, dann werden Medien transcodiert, auch wenn das Format für die Direktwiedergabe konfiguriert ist.", "HeaderContinueListening": "Weiterhören", - "HeaderContinueWatching": "Weiterschauen", + "HeaderContinueWatching": "Fortsetzen", "HeaderCustomDlnaProfiles": "Benutzerdefinierte Profile", "HeaderDateIssued": "Datum gesetzt", "HeaderDefaultRecordingSettings": "Standard Aufnahmeeinstellungen", From bc2305696e44c63102e3245906b4dfa7a5212293 Mon Sep 17 00:00:00 2001 From: Tomi Date: Sat, 7 Mar 2020 22:19:52 +0000 Subject: [PATCH 243/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 66ce8e837f..91e32afe63 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -18,7 +18,7 @@ "FolderTypeTvShows": "TV", "HeaderCreatePassword": "Luo Salasana:", "HeaderParentalRating": "Parental Rating", - "HeaderSeries": "Series:", + "HeaderSeries": "Jaksot", "HeaderYear": "Year:", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelConfigureSettings": "Muuta asetuksia", @@ -105,7 +105,7 @@ "Anytime": "Milloin tahansa", "AroundTime": "Noin {0}", "Art": "Taide", - "Artists": "Artistit", + "Artists": "Esiintyjät", "AsManyAsPossible": "Niin monta kuin mahdollista", "Ascending": "Nousevassa järjestyksessä", "AspectRatio": "Kuvasuhde", @@ -275,8 +275,8 @@ "HeaderFavoriteArtists": "Lempiartistit", "HeaderFavoriteAlbums": "Lempialbumit", "HeaderContinueWatching": "Jatka katsomista", - "HeaderAlbumArtists": "Albumin artistit", - "Genres": "Tyylilaji", + "HeaderAlbumArtists": "Albumin esittäjä", + "Genres": "Tyylilajit", "Folders": "Kansiot", "Favorites": "Suosikit", "Display": "Näytä", From f63f8543fa3735cd70d0fb4c221ef5f909dc0e26 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Sat, 7 Mar 2020 19:38:29 +0000 Subject: [PATCH 244/449] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 192 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 171 insertions(+), 21 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index d2e7263177..037552520c 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -13,7 +13,7 @@ "AroundTime": "בסביבות {0}", "AsManyAsPossible": "כמה שיותר", "AttributeNew": "חדש", - "Backdrops": "תפאורות", + "Backdrops": "תמונות רקע", "BirthLocation": "מיקום לידה", "BrowsePluginCatalogMessage": "עבור לקטלוג התוספים לראות אילו זמינים.", "ButtonAdd": "הוסף", @@ -76,7 +76,7 @@ "FileReadError": "חלה שגיאה בקריאת הקובץ.", "FolderTypeMovies": "סרטים", "FolderTypeMusic": "מוזיקה", - "FolderTypeMusicVideos": "וידאו קליפ", + "FolderTypeMusicVideos": "קליפים", "FolderTypeTvShows": "תוכניות טלויזיה", "Friday": "שישי", "Genres": "ז'אנרים", @@ -102,7 +102,7 @@ "HeaderEditImages": "ערוך תמונות", "HeaderEnabledFields": "שדות זמינים", "HeaderEnabledFieldsHelp": "בטל את הסימון בשדה כדי לנעול אותו ולמנוע שינוי בנתונים.", - "HeaderExternalIds": "מזהים חיצוניים:", + "HeaderExternalIds": "‮מזהים חיצוניים:", "HeaderFeatureAccess": "גישה למאפיינים", "HeaderFetchImages": "הבא תמונות:", "HeaderFrequentlyPlayed": "נוגנו לרוב", @@ -111,15 +111,15 @@ "HeaderKeepRecording": "שמור על הקלטה", "HeaderKeepSeries": "שמור סדרה", "HeaderLatestEpisodes": "פרקים אחרונים", - "HeaderLatestMovies": "סרטים אחרונים שהוספו.", - "HeaderLatestMusic": "מוזיקה אחרונה.", + "HeaderLatestMovies": "סרטים אחרונים שהוספו", + "HeaderLatestMusic": "מוזיקה אחרונה", "HeaderLatestRecordings": "הקלטות אחרונות", - "HeaderLiveTV": "טלוויזיה בשידור חי", + "HeaderLiveTV": "שידורים חיים", "HeaderMediaFolders": "ספריות מדיה", "HeaderMetadataSettings": "הגדרות מטא נתונים", "HeaderMovies": "סרטים", "HeaderMusicVideos": "קליפים", - "HeaderMyMedia": "הספרייה שלי.", + "HeaderMyMedia": "הספרייה שלי", "HeaderNextUp": "הבא", "HeaderPaths": "נתיבים", "HeaderPlayAll": "נגן הכל", @@ -240,7 +240,7 @@ "LabelPrevious": "הקודם", "LabelProfileAudioCodecs": "מקודדי צליל", "LabelProfileCodecs": "מקודדים", - "LabelProfileVideoCodecs": "מקודדי וידאו", + "LabelProfileVideoCodecs": "‮מקודדי וידאו:", "LabelPublicHttpPort": "מספר פורט HTTP פומבי", "LabelReadHowYouCanContribute": "למד איך תוכל לתרום", "LabelRecord": "הקלטה:", @@ -277,7 +277,7 @@ "MarkUnplayed": "סמן לא נוגן", "MaxParentalRatingHelp": "תוכן עם דירוג גובה יותר יוסתר מהמשתמש.", "MessageAreYouSureDeleteSubtitles": "האם אתה בטוח שברצונך למחוק קובץ כתובית זה?", - "MessageConfirmRecordingCancellation": "האם אתה בטוח שברצונך לבטל הקלטה זו?", + "MessageConfirmRecordingCancellation": "‏האם אתה בטוח שברצונך לבטל הקלטה זו?", "MessageDownloadQueued": "הורד תור", "MessageItemSaved": "הפריט נשמר.", "MessageItemsAdded": "פריטים נוספו.", @@ -406,7 +406,7 @@ "ReleaseDate": "תאריך שיחרור", "RemoveFromCollection": "הסר מאוספים", "RemoveFromPlaylist": "הסר מרשימת הניגון", - "Repeat": "חזור", + "Repeat": "חזרה", "RepeatEpisodes": "חזור על פרקים", "ReplaceAllMetadata": "החלף את כל המטא נתונים", "ReplaceExistingImages": "החלף תמונות קיימות", @@ -431,7 +431,7 @@ "SettingsSaved": "ההגדרות נשמרו.", "Share": "שיתוף", "ShowIndicatorsFor": "הצג מחוונים עבור:", - "Shuffle": "ערבב", + "Shuffle": "ערבוב", "SkipEpisodesAlreadyInMyLibrary": "אל תקליטו פרקים שכבר נמצאים בספרייה שלי", "SkipEpisodesAlreadyInMyLibraryHelp": "פרקים יושוו באמצעות העונה ואת הפרק פרק, כאשר זמין.", "SortChannelsBy": "מיין ערוצים לפי:", @@ -508,7 +508,7 @@ "WelcomeToProject": "ברוך הבא ל Jellyfin!", "Writer": "כותב", "Albums": "אלבומים", - "Artists": "אמנים", + "Artists": "אומנים", "Books": "ספרים", "Absolute": "מוחלט", "AccessRestrictedTryAgainLater": "הגישה כרגע מוגבלת. אנא נסה שוב מאוחר יותר.", @@ -521,14 +521,14 @@ "AllowMediaConversion": "אפשר המרת מדיה", "AllLanguages": "כל השפות", "Alerts": "התראות", - "Box": "קופסה", + "Box": "מארז", "BirthPlaceValue": "מיקום לידה: {0}", "BirthDateValue": "תאריך לידה: {0}", "Backdrop": "רקע", "AuthProviderHelp": "בחר ספק אימות שישמש לאימות הסיסמה של משתמש זה.", "Audio": "שמע", "AspectRatio": "יחס גובה-רוחב", - "AlwaysPlaySubtitlesHelp": "כתוביות תואמות להעדפת שפה יטענו ללא קשר לשפת השמע.", + "AlwaysPlaySubtitlesHelp": "כתוביות בשפה המועדפת ייטענו ללא קשר לשפת השמע.", "AlwaysPlaySubtitles": "הפעל כתוביות תמיד", "AllowRemoteAccessHelp": "אם לא מסומן, כל החיבורים המרוחקים ייחסמו.", "AllowRemoteAccess": "אפשר חיבור מרוחק לשרת Jellyfin זה.", @@ -537,14 +537,14 @@ "AirDate": "תאריך שידור", "Yesterday": "אתמול", "HeaderAlbumArtists": "אמני האלבום", - "Favorites": "אהובים", + "Favorites": "מועדפים", "HeaderFavoriteAlbums": "אלבומים שאהבתי", - "HeaderFavoriteArtists": "אמנים שאהבתי", + "HeaderFavoriteArtists": "אמנים מועדפים", "Folders": "תיקיות", - "HeaderFavoriteShows": "תוכניות אהובות", - "HeaderFavoriteEpisodes": "פרקים אהובים", - "HeaderFavoriteSongs": "שירים שאהבתי", - "Collections": "קולקציות", + "HeaderFavoriteShows": "סדרות מועדפות", + "HeaderFavoriteEpisodes": "פרקים מועדפים", + "HeaderFavoriteSongs": "שירים מועדפים", + "Collections": "אוספים", "Channels": "ערוצים", "HeaderContinueWatching": "המשך לצפות", "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", @@ -592,5 +592,155 @@ "ButtonAddImage": "הוסף תמונה", "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", "Ascending": "סדר עולה", - "Photos": "תמונות" + "Photos": "תמונות", + "TabCollections": "אוספים", + "MessageConfirmShutdown": "‫האם אתה בטוח שברצונך לכבות את השרת?", + "MessageConfirmRestart": "‫האם אתה בטוח שברצונך לאתחל את שרת ה-Jellyfin‏?", + "HeaderThisUserIsCurrentlyDisabled": "משתמש זה אינו פעיל כרגע", + "HeaderTaskTriggers": "טריגרים של המשימה", + "HeaderTags": "תגיות", + "HeaderStopRecording": "עצור הקלטה", + "HeaderSortOrder": "סדר מיון", + "HeaderSortBy": "מיין לפי", + "HeaderShutdown": "כיבוי", + "HeaderSettings": "הגדרות", + "HeaderSendMessage": "שלח הודעה", + "HeaderSelectServer": "בחר שרת", + "HeaderSecondsValue": "{0} שניות", + "HeaderSeasons": "עונות", + "HeaderRestartingServer": "מאתחל שרת", + "HeaderRestart": "הפעלה מחדש", + "HeaderProfileInformation": "מידע פרופיל", + "HeaderProfile": "פרופיל", + "HeaderPreferredMetadataLanguage": "שפת מטא-נתונים מועדפת", + "HeaderPluginInstallation": "התקנת תוסף", + "HeaderPlayOn": "נגן על", + "HeaderPinCodeReset": "איפוס קוד סיכה", + "HeaderPhotoAlbums": "אלבומי תמונות", + "HeaderPeople": "אנשים", + "HeaderPendingInvitations": "הזמנות ממתינות", + "HeaderPasswordReset": "איפוס סיסמה", + "HeaderPassword": "סיסמה", + "HeaderOtherItems": "פריטים אחרים", + "HeaderNextVideoPlayingInValue": "הוידאו הבא יתחיל להתנגן בעוד {0}", + "HeaderNextEpisodePlayingInValue": "הפרק הבא יתחיל להתנגן בעוד {0}", + "HeaderNewDevices": "מכשירים חדשים", + "HeaderNewApiKey": "‫מפתח API חדש", + "HeaderNavigation": "ניווט", + "HeaderMyDevice": "המכשיר שלי", + "HeaderLiveTv": "שידורים חיים", + "HeaderLibrarySettings": "הגדרות ספרייה", + "HeaderLibraryFolders": "תיקיות הספרייה", + "HeaderLibraries": "ספריות", + "HeaderItems": "פריטים", + "HeaderInstall": "התקנה", + "HeaderImageOptions": "הגדרות תמונה", + "HeaderHome": "בית", + "HeaderGenres": "ז'אנרים", + "HeaderForKids": "עבור ילדים", + "HeaderFilters": "מסננים", + "HeaderFavoriteVideos": "סרטונים מועדפים", + "HeaderFavoritePeople": "אנשים מועדפים", + "HeaderFavoriteMovies": "סרטים מועדפים", + "HeaderFavoriteBooks": "ספרים מועדפים", + "HeaderError": "שגיאה", + "HeaderEpisodes": "פרקים", + "HeaderDownloadSync": "הורדה וסנכרון", + "TabDevices": "מכשירים", + "HeaderDevices": "מכשירים", + "HeaderDeveloperInfo": "מידע למפתח", + "HeaderDeleteTaskTrigger": "מחק טריגר משימה", + "HeaderDeleteProvider": "מחק ספק", + "HeaderDeleteDevice": "מחק מכשיר", + "HeaderContinueListening": "המשך להאזין", + "HeaderConnectToServer": "התחבר לשרת", + "HeaderConfirmRevokeApiKey": "‫בטל מפתח API", + "HeaderCastAndCrew": "שחקנים וצוות", + "HeaderBranding": "מיתוג", + "HeaderBooks": "ספרים", + "HeaderAudioSettings": "הגדרות שמע", + "HeaderAudioBooks": "ספרים מוקלטים", + "HeaderApiKeys": "‫מפתחות API", + "HeaderApiKey": "‫מפתח API", + "HeaderAlbums": "אלבומים", + "HeaderAddUpdateImage": "הוסף/עדכן תמונה", + "HeaderAddScheduledTaskTrigger": "הוסף טריגר", + "HeaderActivity": "פעילות", + "Guide": "מדריך", + "GenresValue": "ז'אנרים: {0}", + "GenreValue": "ז'אנר: {0}", + "General": "כללי", + "Fullscreen": "מסך מלא", + "FolderTypeUnset": "תוכן מעורבב", + "FolderTypeBooks": "ספרים", + "Filters": "מסננים", + "Rewind": "הרצה לאחור", + "FastForward": "הרצה קדימה", + "Extras": "תוספות", + "ExtraLarge": "גדול מאוד", + "ExitFullscreen": "צא ממסך מלא", + "EveryNDays": "כל {0} ימים", + "ErrorMessageStartHourGreaterThanEnd": "שעת הסיום חייבת להיות לאחר שעת ההתחלה.", + "Episodes": "פרקים", + "EnableThemeSongsHelp": "נגן שירי פתיח ברגע בעת העיון בספרייה.", + "ThemeSongs": "שירי פתיח", + "EnableThemeSongs": "שירי פתיח", + "EnablePhotos": "הצג תמונות", + "EnableHardwareEncoding": "הפעל קידוד חומרה", + "EnableExternalVideoPlayers": "נגני וידאו חיצוניים", + "EnableCinemaMode": "מצב קולנוע", + "EnableBackdrops": "תמונות רקע", + "EditMetadata": "ערוך מטא-נתונים", + "DrmChannelsNotImported": "‫ערוצים בעלי ניהול זכויות דיגיטלי (DRM) לא ייובאו.", + "Down": "למטה", + "Display": "תצוגה", + "Disc": "דיסק", + "Disabled": "לא מאופשר", + "DirectStreaming": "הזרמה ישירה", + "DirectPlaying": "ניגון ישיר", + "DetectingDevices": "מזהה מכשירים", + "DefaultMetadataLangaugeDescription": "אלו הגדרות ברירת המחדל שלך וניתן להתאים אותן לכל ספרייה בנפרד.", + "CopyStreamURLError": "אירעה שגיאה במהלך העתקת הקישור.", + "CopyStreamURLSuccess": "הקישור הועתק בהצלחה.", + "CopyStreamURL": "העתק קישור זרם", + "Connect": "התחבר", + "ConfirmEndPlayerSession": "‫האם לכבות את Jellyfin על {0}?", + "CommunityRating": "דירוג קהילה", + "ButtonViewWebsite": "צפה באתר האינטרנט", + "ButtonWebsite": "אתר אינטרנט", + "ButtonUp": "למעלה", + "ButtonSubmit": "שלח", + "ButtonStart": "התחל", + "ButtonShuffle": "ערבוב", + "ButtonScanAllLibraries": "סרוק את כל הספריות", + "ButtonRevoke": "בטל", + "TabScheduledTasks": "משימות מתוזמנות", + "TabResumeSettings": "המשך צפייה", + "ButtonResume": "המשך", + "ButtonRepeat": "חזרה", + "ButtonRefresh": "רענון", + "ButtonProfile": "פרופיל", + "ButtonOpen": "פתח", + "HeaderTracks": "רצועות", + "ButtonPreviousTrack": "הרצועה הקודמת", + "ButtonNextTrack": "הרצועה הבאה", + "ButtonGuide": "מדריך", + "HeaderForgotPassword": "שחזור סיסמה", + "ButtonForgotPassword": "שכחתי את הסיסמה", + "ButtonEditOtherUserPreferences": "ערוך את הפרופיל, התמונה וההגדרות האישיות של משתמש זה.", + "ButtonDownload": "הורדה", + "ButtonDown": "למטה", + "ButtonChangeServer": "החלף שרת", + "AutoBasedOnLanguageSetting": "אוטומטי (לפי הגדרות שפה)", + "ButtonBack": "חזרה", + "OptionBanner": "באנר", + "ButtonAudioTracks": "רצועות שמע", + "ButtonArrowDown": "למטה", + "ButtonArrowUp": "למעלה", + "ButtonArrowRight": "ימינה", + "ButtonArrowLeft": "שמאלה", + "ButtonAddScheduledTaskTrigger": "הוסף טריגר", + "Browse": "עיין", + "BoxRear": "מארז (מאחור)", + "BookLibraryHelp": "ניתן להוסיף ספרים מוקלטים וספרים כתובים. עיינו {0}במדריך מתן שמות לספרים{1}." } From a2a04dc6b06ef5ef870969ad0233c891bccb2cd9 Mon Sep 17 00:00:00 2001 From: Constantin Matel Date: Sun, 8 Mar 2020 01:18:21 +0000 Subject: [PATCH 245/449] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 3880d14d10..34907d09f1 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -512,7 +512,7 @@ "GuestStar": "Vedeta invitata", "GuideProviderSelectListings": "Selectați Listări", "EncoderPresetHelp": "Alegeți o valoare mai rapidă pentru a îmbunătăți performanța sau o valoare mai lentă pentru a îmbunătăți calitatea.", - "HardwareAccelerationWarning": "Activarea accelerării hardware poate provoca instabilitate în anumite medii. Asigurați-vă că sistemul de operare și driverele video sunt complet actualizate. Dacă întâmpinați dificultăți pentru a reda video după activarea acestei opțiuni, va trebui să schimbați setarea la Auto.", + "HardwareAccelerationWarning": "Activarea accelerării hardware poate provoca instabilitate în anumite medii. Asigurați-vă că sistemul de operare și driverele video sunt complet actualizate. Dacă întâmpinați dificultăți pentru a reda video după activarea acestei opțiuni, va trebui să schimbați setarea la Nimic.", "HeaderAccessSchedule": "Program de Acces", "HeaderAccessScheduleHelp": "Creați un program de acces pentru a limita accesul la anumite ore.", "HeaderActiveDevices": "Dispozitive active", @@ -801,10 +801,10 @@ "LabelImageType": "Tipul imaginii:", "LabelImageFetchersHelp": "Activați și clasificați colectorul de imagini preferat în ordinea priorității.", "LabelIdentificationFieldHelp": "Un substring cu majuscule, minuscule sau expresie regex.", - "LabelIconMaxWidthHelp": "Rezoluția maximă a imaginii expusă via upnp:icon.", - "LabelIconMaxWidth": "Lățimea maximă a imaginii:", - "LabelIconMaxHeightHelp": "Rezoluția maximă a imaginii expusă via upnp:icon.", - "LabelIconMaxHeight": "Înălțimea maximă a imaginii:", + "LabelIconMaxWidthHelp": "Rezoluția maximă a pictogramelor expuse via upnp:icon.", + "LabelIconMaxWidth": "Lățimea maximă a pictogramei:", + "LabelIconMaxHeightHelp": "Rezoluția maximă a pictogramelor expuse via upnp:icon.", + "LabelIconMaxHeight": "Înălțimea maximă a pictogramei:", "LabelHttpsPortHelp": "Portul TCP pe care serverul HTTPS Jellyfin ar trebui sa îl utilizeze.", "LabelHttpsPort": "Portul local HTTPS:", "LabelHomeScreenSectionValue": "Secțiunea ecranului de pornire {0}:", @@ -846,7 +846,7 @@ "LabelEnableDlnaClientDiscoveryInterval": "Interval de descoperire a clientului (secunde)", "LabelEnableBlastAliveMessagesHelp": "Activați acest lucru dacă serverul nu este detectat în mod fiabil de alte dispozitive UPnP din rețeaua dvs.", "LabelEnableBlastAliveMessages": "Trimitere mesaje de disponibilitate", - "LabelEnableAutomaticPortMapHelp": "Încercați să mapați automat portul public către portul local prin UPnP. Este posibil să nu funcționeze cu unele modele de router.", + "LabelEnableAutomaticPortMapHelp": "Încercați să mapați automat portul public către portul local prin UPnP. Este posibil să nu funcționeze cu unele modele de router. Modificările nu se vor aplica decât după repornirea serverului.", "LabelEnableAutomaticPortMap": "Activați maparea automată a porturilor", "LabelEmbedAlbumArtDidlHelp": "Unele dispozitive preferă această metodă pentru obținerea artei albumelor. Alții pot să nu redea cu această opțiune activată.", "LabelEmbedAlbumArtDidl": "Încorporați arta albumului în Didl", @@ -977,7 +977,7 @@ "HeaderSpecialEpisodeInfo": "Informații Episod Special", "ButtonSplit": "Împarte", "OptionCustomUsers": "Personalizat", - "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionCaptionInfoExSamsung": "Informații pentru legendă ex: (Samsung)", "OptionBluray": "BluRay", "OptionBlockTvShows": "Seriale TV", "OptionBlockTrailers": "Trailere", @@ -1465,5 +1465,8 @@ "LabelCorruptedFrames": "Cadre corupte:", "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)", "NoCreatedLibraries": "Se pare că nu ați creat încă biblioteci. {0} Doriți să creați una acum? {1}", - "AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă." + "AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă.", + "PlaybackErrorNoCompatibleStream": "A apărut o problemă cu profilarea clientului, iar serverul nu trimite un format media compatibil.", + "AllowFfmpegThrottlingHelp": "Când un transcod sau un remux se află destul de departe înainte de poziția actuală de redare, întrerupeți procesul, astfel încât să consume mai puține resurse. Acest lucru este cel mai util când priviți fără a derula des. Dezactivați acestă opțiune dacă întâmpinați probleme de redare.", + "AllowFfmpegThrottling": "Accelerare Transcod-uri" } From ef0df64357588e8a2f0231c8c174476c69632a73 Mon Sep 17 00:00:00 2001 From: Scott Anecito Date: Sun, 8 Mar 2020 00:02:04 +0000 Subject: [PATCH 246/449] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index b1282b3c97..8450f01f4d 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -53,7 +53,7 @@ "BoxRear": "ボックス(後)", "Browse": "ブラウズ", "BrowsePluginCatalogMessage": "利用可能なプラグインを表示するには、プラグインカタログを参照してください。", - "BurnSubtitlesHelp": "字幕フォーマットに応じて、ビデオを変換するときにサーバーが字幕を直接書き込むかどうかを決定します。 字幕の書き込みを避けると、サーバーのパフォーマンスが向上します。 特定のASS / SSA字幕だけでなく画像ベースのフォーマット(e.g. VOBSUB, PGS, SUB/IDX, etc.)を焼くには自動を選択します", + "BurnSubtitlesHelp": "字幕フォーマットに応じて、ビデオを変換するときにサーバーが字幕を直接書き込むかどうかを決定します。 字幕の書き込みを避けると、サーバーのパフォーマンスが向上します。 特定のASS / SSA字幕だけでなく画像ベースのフォーマット(VOBSUB, PGS, SUB/IDX, etc)を焼くには自動を選択します", "ButtonAdd": "追加", "ButtonAddMediaLibrary": "メディアライブラリを追加", "ButtonAddScheduledTaskTrigger": "トリガーを追加", @@ -279,7 +279,7 @@ "EncoderPresetHelp": "パフォーマンスを向上させるには小さい値を、品質を向上させるには大きい値を選択してください。", "HDPrograms": "HD番組", "HandledByProxy": "リバースプロキシで処理", - "HardwareAccelerationWarning": "ハードウェアアクセラレーションを有効にすると、環境によっては不安定になる可能性があります。 オペレーティングシステムとビデオドライバが完全に最新であることを確認してください。 これを有効にした後でビデオの再生が困難な場合は、設定を[自動]に戻す必要があります。", + "HardwareAccelerationWarning": "ハードウェアアクセラレーションを有効にすると、環境によっては不安定になる可能性があります。 オペレーティングシステムとビデオドライバが完全に最新であることを確認してください。 これを有効にした後でビデオの再生が困難な場合は、設定を[なし]に戻す必要があります。", "HeaderAccessSchedule": "アクセススケジュール", "HeaderAccessScheduleHelp": "アクセススケジュールを作成して、アクセスを特定の時間に制限します。", "HeaderActiveDevices": "アクティブデバイス", @@ -1134,5 +1134,12 @@ "LabelImportOnlyFavoriteChannels": "お気に入りのチャンネルだけ", "LabelIdentificationFieldHelp": "大文字小文字を区別しない部分文字列や正規表現です。", "LabelCustomRating": "カスタム格付け:", - "LabelCorruptedFrames": "破損したフレーム:" + "LabelCorruptedFrames": "破損したフレーム:", + "LabelFriendlyName": "フレンドリ名:", + "LabelEveryXMinutes": "毎:", + "LabelEnableSingleImageInDidlLimit": "単一の埋め込み画像に制限", + "LabelEnableBlastAliveMessages": "アライブメッセージを配信する", + "LabelDateAddedBehaviorHelp": "メタデータある場合、これらのオプションの前にメタデータ使います。", + "AskAdminToCreateLibrary": "管理者にライブラリを作成する依頼をしてください。", + "AllowFfmpegThrottling": "トランスコードをスロットルする" } From 1eaaa0fbab904444d0634686c978b0d17ad08a79 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Sun, 8 Mar 2020 10:48:39 +0000 Subject: [PATCH 247/449] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index 037552520c..a334f312b7 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -46,7 +46,7 @@ "ChannelNameOnly": "ערוץ {0} בלבד", "ChannelNumber": "מספר ערוץ", "Composer": "מלחין", - "ConfigureDateAdded": "הגדר כיצד תאריך התוספת נקבע בלוח המחוונים של שרת Amby תחת הגדרות ספריה", + "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים של שרת ה-Jellyfin תחת הגדרות הספרייה", "ConfirmDeleteImage": "למחוק את התמונה?", "ConfirmDeleteItem": "מחיקת פריט זה תמחק אותו הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", "ConfirmDeleteItems": "מחיקת פריטים אלה תמחק אותם הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", @@ -726,7 +726,7 @@ "ButtonNextTrack": "הרצועה הבאה", "ButtonGuide": "מדריך", "HeaderForgotPassword": "שחזור סיסמה", - "ButtonForgotPassword": "שכחתי את הסיסמה", + "ButtonForgotPassword": "שחזור סיסמה", "ButtonEditOtherUserPreferences": "ערוך את הפרופיל, התמונה וההגדרות האישיות של משתמש זה.", "ButtonDownload": "הורדה", "ButtonDown": "למטה", @@ -742,5 +742,6 @@ "ButtonAddScheduledTaskTrigger": "הוסף טריגר", "Browse": "עיין", "BoxRear": "מארז (מאחור)", - "BookLibraryHelp": "ניתן להוסיף ספרים מוקלטים וספרים כתובים. עיינו {0}במדריך מתן שמות לספרים{1}." + "BookLibraryHelp": "ניתן להוסיף ספרים מוקלטים וספרים כתובים. עיינו {0}במדריך מתן שמות לספרים{1}.", + "Desktop": "שולחן עבודה" } From 108c36c35969b2b778f58ec801c3a14621f94086 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 8 Mar 2020 12:53:06 +0000 Subject: [PATCH 248/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 9ea6a72c88..292b84b38a 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -451,7 +451,7 @@ "HeaderActiveDevices": "Aktivne naprave", "HeaderAccessScheduleHelp": "Ustvarite urnik dostopa in omejite dostop v določenih urah.", "HeaderAccessSchedule": "Urnik dostopa", - "HardwareAccelerationWarning": "Omogočanje strojnega pospeševanja lahko povzroči nestabilnost v določenih okoljih. Zagotovite, da so vaš operacijski sistem in gonilniki posodobljeni. Če imate po omogočanju te nastavitve težave s predvajanjem videa, jo nastavite nazaj na samodejno.", + "HardwareAccelerationWarning": "Omogočanje strojnega pospeševanja lahko povzroči nestabilnost v določenih okoljih. Zagotovite, da so vaš operacijski sistem in gonilniki posodobljeni. Če imate po omogočanju te nastavitve težave s predvajanjem videa, jo nastavite nazaj na brez.", "HandledByProxy": "Upravlja reverse proxy", "HDPrograms": "HD programi", "EncoderPresetHelp": "Izberite hitrejšo vrednost za boljšo zmogljivost ali počasnejšo vrednost za boljšo kakovost.", @@ -658,7 +658,7 @@ "LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja sprejemnikov (sekunde)", "LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.", "LabelEnableBlastAliveMessages": "Oddajaj sporočila o dostopnosti", - "LabelEnableAutomaticPortMapHelp": "Poskuša avtomatično povezati javna vrata z lokalnimi preko UPnP. To ne deluje z nekaterimi usmerjevalniki.", + "LabelEnableAutomaticPortMapHelp": "Poskuša avtomatično povezati javna vrata z lokalnimi preko UPnP. To ne deluje z nekaterimi usmerjevalniki. Spremembe bodo uveljavljene po ponovnem zagonu strežnika.", "LabelEnableAutomaticPortMap": "Omogoči avtomatično mapiranje vrat", "LabelEmbedAlbumArtDidl": "Vdelaj grafike albuma v Didl", "LabelEasyPinCode": "Enostavna PIN koda:", @@ -689,7 +689,7 @@ "LabelGroupMoviesIntoCollections": "Združi filme v zbirke", "LabelEncoderPreset": "Predloga kodiranja H264:", "LabelHardwareAccelerationType": "Strojno pospeševanje:", - "LabelHardwareAccelerationTypeHelp": "To je eksperimentalna funkcija, ki je na voljo zgolj na podprtih sistemih.", + "LabelHardwareAccelerationTypeHelp": "Strojno pospeševanje zahteva dodatno konfiguracijo.", "LabelHomeNetworkQuality": "Kvaliteta v domačem omrežju:", "LabelHttpsPort": "Lokalna HTTPS vrata:", "LabelHttpsPortHelp": "Vrata TCP s katerimi se poveže Jellyfin HTTPS strežnik.", From 73df9a0de88e28c742b13ce98221239cd26f0b79 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 8 Mar 2020 13:30:27 +0000 Subject: [PATCH 249/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index 634db83526..1415f276b3 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -10,7 +10,7 @@ "AddToPlaylist": "Zur Wiedergabeliste hinzufügen", "AddUser": "Benutzer anlegen", "AddUserByManually": "Lege einen lokalen User durch manuelle Eingabe der User-Informationen an.", - "AddedOnValue": "Hinzugefügt {0}", + "AddedOnValue": "{0} hinzugefügt", "AdditionalNotificationServices": "Schau im Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.", "AirDate": "Erstausstrahlung", "Aired": "Ausgestrahlt", @@ -26,7 +26,7 @@ "AllowMediaConversion": "Erlaube Medienkonvertierung", "AllowMediaConversionHelp": "Erlaube oder unterbinde Zugriff auf die Medienkonvertierung.", "AllowOnTheFlySubtitleExtraction": "Erlaube Untertitelextraktion \"on-the-fly\"", - "AllowOnTheFlySubtitleExtractionHelp": "Eingebettete Untertitel können aus Videos extrahiert und in Textformat an Clients gesendet werden um Transkodieren zu vermeiden. Auf manchen Systemen kann dieser Vorgang eine lange Zeit in Anspruch nehmen und die Videowiedergabe zum Halten bringen während der Extraktion. Deaktiviere diese Option um eingebettete Untertitel während der Videotranskodierung einbrennen zu lassen, wenn sie nicht nativ vom Client unterstützt werden.", + "AllowOnTheFlySubtitleExtractionHelp": "Eingebettete Untertitel können aus Videos extrahiert und im Textformat an Clients gesendet werden um die Videotranskodierung zu vermeiden. Auf manchen Systemen kann dieser Vorgang eine lange Zeit in Anspruch nehmen und die Videowiedergabe während der Extraktion unterbrochen werden. Deaktiviere diese Option um eingebettete Untertitel während der Videotranskodierung einbrennen zu lassen, wenn sie nicht nativ vom Client unterstützt werden.", "AllowRemoteAccess": "Erlaube externe Verbindungen zu diesem Jellyfin Server.", "AllowRemoteAccessHelp": "Wenn deaktiviert werden alle externen Verbindungen blockiert.", "AllowSeasonalThemes": "Erlaube automatische Jahreszeitenmotive", @@ -560,7 +560,7 @@ "LabelEmbedAlbumArtDidl": "Integrierte Alben-Cover in Didl", "LabelEmbedAlbumArtDidlHelp": "Einige Geräte bevorzugen diese Methode um Album Art darstellen zu können. Andere wiederum können evtl. nichts abspielen, wenn diese Funktion aktiviert ist.", "LabelEnableAutomaticPortMap": "Aktiviere das automatische Port-Mapping", - "LabelEnableAutomaticPortMapHelp": "Versuche automatisch den öffentlichen Port dem lokalen Port mit Hilfe von UPnP zuzuordnen. Dies kann mit einigen Router-Modellen nicht funktionieren.", + "LabelEnableAutomaticPortMapHelp": "Versuche automatisch den öffentlichen Port dem lokalen Port mit Hilfe von UPnP zuzuordnen. Dies kann mit einigen Router-Modellen nicht funktionieren. Die Änderungen werden erst nach einem Neustart des Server aktiv.", "LabelEnableBlastAliveMessages": "Erzeuge Alive Meldungen", "LabelEnableBlastAliveMessagesHelp": "Aktiviere dies, wenn der Server nicht zuverlässig von anderen UPnP Geräten in ihrem Netzwerk erkannt wird.", "LabelEnableDlnaClientDiscoveryInterval": "Client-Entdeckungs Intervall (Sekunden)", @@ -1488,5 +1488,8 @@ "LabelCorruptedFrames": "Fehlerhafte Frames:", "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)", "AskAdminToCreateLibrary": "Bitten Sie einen Administrator, eine Bibliothek zu erstellen.", - "NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}" + "NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}", + "AllowFfmpegThrottling": "Transkodierung drosseln", + "PlaybackErrorNoCompatibleStream": "Es gab ein Problem bei der Erkennung des Wiedergabeprofils des Clients und der Server sendet kein kompatibles Format.", + "AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden." } From 24ea7fb0866b34f032221729295bc0159596a95b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=84?= Date: Sun, 8 Mar 2020 14:56:25 +0000 Subject: [PATCH 250/449] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 9cfacb6c34..46121f9fe2 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -209,7 +209,7 @@ "HeaderRemoteControl": "원격 제어", "HeaderRemoveMediaFolder": "미디어 폴더 제거", "HeaderRemoveMediaLocation": "미디어 위치 제거", - "HeaderResponseProfile": "프로필 회신", + "HeaderResponseProfile": "응답 프로파일", "HeaderRestart": "다시 시작", "HeaderRevisionHistory": "리비전 이력", "HeaderRunningTasks": "실행중인 작업", @@ -231,7 +231,7 @@ "HeaderSetupLibrary": "미디어 라이브러리 설정", "HeaderShutdown": "종료", "HeaderSpecialEpisodeInfo": "스페셜 에피소드 정보", - "HeaderSpecialFeatures": "특수 기능", + "HeaderSpecialFeatures": "특별 배역", "HeaderStatus": "상태", "HeaderSubtitleProfile": "자막 프로필", "HeaderSubtitleProfilesHelp": "자막 프로필은 장치에서 지원하는 자막 형식을 나타냅니다.", @@ -1142,7 +1142,7 @@ "HeaderBlockItemsWithNoRating": "등급 정보가 없거나 인식 불가능한 항목 차단:", "HeaderApiKeysHelp": "외부 애플리케이션은 Jellyfin 서버와 통신하기 위해 API키를 가지고 있어야 합니다. 키는 Jellyfin 계정으로 로그인하거나 수동으로 키를 부여하여 발급할 수 있습니다.", "HeaderAllowMediaDeletionFrom": "미디어 제거 허용", - "HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 자동으로 변경하십시오.", + "HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 '사용 안 함'으로 변경하십시오.", "GuestStar": "게스트 스타", "GroupBySeries": "시리즈별로 그룹화", "GenresValue": "장르: {0}", @@ -1190,7 +1190,7 @@ "LabelCertificatePasswordHelp": "인증서가 비밀번호를 요구하면, 여기에 입력하십시오.", "LabelCertificatePassword": "인증서 비밀번호:", "LabelBurnSubtitles": "자막 굽기:", - "LabelAppNameExample": "예시: Sickbeard, NzbDrone", + "LabelAppNameExample": "예시: Sickbeard, Sonarr", "LabelAllowedRemoteAddressesMode": "원격 IP 주소 필터 모드:", "LabelAllowedRemoteAddresses": "원격 IP 주소 필터:", "LabelAllowHWTranscoding": "하드웨어 트랜스코딩 허용", @@ -1295,5 +1295,25 @@ "ErrorAddingListingsToSchedulesDirect": "Schedules Direct 계정에 라인업을 추가하는 중에 오류가 발생했습니다. Schedules Direct는 계정 당 제한된 수의 라인업만이 허용됩니다. 계속하려면 Schedules Direct 웹사이트에 로그인하여 다른 항목을 삭제해야 할 수 있습니다.", "CopyStreamURLError": "URL을 복사하는 중에 오류가 발생했습니다.", "ColorTransfer": "컬러 변환", - "AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오." + "AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오.", + "LabelCorruptedFrames": "손상된 프레임:", + "LabelBindToLocalNetworkAddressHelp": "(선택) 로컬 IP 주소 대신 이 주소로 http 서버를 바인딩합니다. 비어있으면 서버가 가능한 모든 주소로 바인딩합니다. 이 항목을 수정하면 Jellyfin 서버를 재시작해야 합니다.", + "LabelAirsBeforeSeason": "시즌 이전 방송:", + "LabelAirsBeforeEpisode": "에피소드 이전 방송:", + "LabelAirsAfterSeason": "시즌 이후 방송:", + "HttpsRequiresCert": "암호화 접속을 위해서는 Let's Encrypt 등의 신뢰할 수 있는 SSL 인증서가 필요합니다. 인증서를 제공하거나 암호화 접속을 비활성화하십시오.", + "Horizontal": "수평", + "HeaderUpcomingOnTV": "방송 예정", + "HeaderTranscodingProfileHelp": "트랜스코딩이 필요할 때 사용될 포맷을 지정하기 위해 트랜스코딩 프로파일을 추가합니다.", + "HeaderResponseProfileHelp": "응답 프로파일을 통해 특정 미디어를 재생했을 때 장치로 전송되는 정보를 사용자화할 수 있습니다.", + "HeaderPlayOn": "여기부터 재생", + "HeaderNavigation": "탐색", + "HeaderKeepSeries": "시리즈 유지", + "HeaderFavoritePeople": "즐겨찾는 인물", + "HeaderEnabledFieldsHelp": "데이터 변경을 방지하고 잠그기 위해서는 필드를 비활성화하십시오.", + "HeaderEnabledFields": "활성화된 필드", + "HeaderDirectPlayProfileHelp": "디바이스가 원본 재생할 수 있는 파일 형식을 표시하기 위해 다이렉트 재생 프로파일을 추가합니다.", + "Extras": "기타 항목", + "AllowFfmpegThrottlingHelp": "트랜스코딩이나 리먹스 작업이 현재 재생 중인 위치를 넘어 충분히 진행되면 리소스를 절약하기 위해 작업을 중지합니다. 이는 재생 구간을 자주 변경하지 않을 경우에 가장 적합합니다. 재생 시 문제가 발생하면 이 항목을 비활성화하십시오.", + "AllowFfmpegThrottling": "트랜스코딩 시 스로틀링" } From 430c44dc55b48570816d3359f78f0f40b6f44fd6 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 8 Mar 2020 14:29:33 +0000 Subject: [PATCH 251/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 46 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 292b84b38a..d4c8a36a1c 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1118,5 +1118,49 @@ "MySubtitles": "Moji podnapisi", "Mute": "Utišaj", "MoveLeft": "Premakni levo", - "MoveRight": "Premakni desno" + "MoveRight": "Premakni desno", + "LabelSkin": "Preobleka:", + "LabelSize": "Velikost:", + "LabelSimultaneousConnectionLimit": "Omejitev števila sočasnih predvajanj:", + "LabelServerName": "Ime strežnika:", + "LabelServerHostHelp": "192.168.1.100:8096 ali https://myserver.com", + "LabelServerHost": "Naslov:", + "LabelSeriesRecordingPath": "Pot za snemanje serij (neobvezno):", + "LabelSerialNumber": "Serijska številka", + "LabelSendNotificationToUsers": "Pošlji obvestila na:", + "LabelSecureConnectionsMode": "Način varne povezave:", + "LabelSeasonNumber": "Številka sezone:", + "LabelScreensaver": "Ohranjevalnik zaslona:", + "LabelSaveLocalMetadataHelp": "Shranjevanje slik v mape predstavnosti omogoča lažji dostop in urejanje slik.", + "LabelSaveLocalMetadata": "Shrani slike v mape predstavnosti", + "LabelRuntimeMinutes": "Čas trajanja (minute):", + "LabelRemoteClientBitrateLimit": "Omejitev bitne hitrosti pretakanja preko interneta (Mbps):", + "LabelRecordingPathHelp": "Določite privzeto lokacijo za shranjevanje posnetkov. Če pustite prazno bo uporabljena mapa namestitve strežnika.", + "LabelRecordingPath": "Privzeta pot posnetkov:", + "LabelRecord": "Snemaj:", + "LabelReasonForTranscoding": "Razlog za prekodiranje:", + "LabelReadHowYouCanContribute": "Naučite se, kako lahko prispevate.", + "LabelPublicHttpsPortHelp": "Številka javnih vrat ki bodo povezana na lokalna HTTPS vrata.", + "LabelPublicHttpsPort": "Številka javnih HTTPS vrat:", + "LabelPublicHttpPortHelp": "Številka javnih vrat ki bodo povezana na lokalna HTTP vrata.", + "LabelProfileContainersHelp": "Ločeno z vejico. Lahko pustite prazno da velja za vse kontejnerje.", + "LabelProfileContainer": "Kontejner:", + "LabelProfileCodecs": "Kodeki:", + "LabelProfileAudioCodecs": "Zvočni kodeki:", + "LabelPostProcessorArgumentsHelp": "Uporabi {path} kot pot do datoteke posnetka.", + "LabelPostProcessorArguments": "Argumenti ukazne vrstice za naknadno obdelavo:", + "LabelPostProcessor": "Aplikacija za naknadno obdelavo:", + "LabelPlayMethod": "Način predvajanja:", + "LabelPlayerDimensions": "Velikost predvajalnika:", + "LabelPlayer": "Predvajalnik:", + "LabelOverview": "Pregled:", + "LabelOriginalAspectRatio": "Izvirno razmerje stranic:", + "LabelNumberOfGuideDaysHelp": "Prenos TV vodiča za več dni omogoča nastavitev snemanja za več dni vnaprej vendar bo prenos trajal dlje. Samodejno prilagodi število dni za prenos glede na število kanalov.", + "LabelNumberOfGuideDays": "Število dni vodiča za prenos:", + "LabelNumber": "Številka:", + "LabelNotificationEnabled": "Omogoči to obvestilo", + "CopyStreamURLError": "Pri kopiranju naslova URL je prišlo do napake.", + "AskAdminToCreateLibrary": "Prosite skrbnika, da ustvari knjižnico.", + "AllowFfmpegThrottlingHelp": "Ko je napredek prekodiranja dovolj pred mestom predvajanja se proces ustavi in porablja manj sredstev. To je najbolj uporabno pri gledanju brez pogostega premikanja mesta predvajanja. Če naletite na težave s predvajanjem onemogočite to možnost.", + "AllowFfmpegThrottling": "Zaviraj prekodiranje" } From 9a4d992c7ce5080d6f3f09d62b680d618a42c760 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 8 Mar 2020 16:54:24 +0000 Subject: [PATCH 252/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index d4c8a36a1c..5c7556c71c 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1162,5 +1162,14 @@ "CopyStreamURLError": "Pri kopiranju naslova URL je prišlo do napake.", "AskAdminToCreateLibrary": "Prosite skrbnika, da ustvari knjižnico.", "AllowFfmpegThrottlingHelp": "Ko je napredek prekodiranja dovolj pred mestom predvajanja se proces ustavi in porablja manj sredstev. To je najbolj uporabno pri gledanju brez pogostega premikanja mesta predvajanja. Če naletite na težave s predvajanjem onemogočite to možnost.", - "AllowFfmpegThrottling": "Zaviraj prekodiranje" + "AllowFfmpegThrottling": "Zaviraj prekodiranje", + "LabelStreamType": "Vrsta pretakanja:", + "LabelStopping": "Ustavljanje", + "LabelStopWhenPossible": "Ustavi, ko je mogoče:", + "LabelStatus": "Status:", + "LabelStartWhenPossible": "Začni, ko je mogoče:", + "LabelSportsCategories": "Športne kategorije:", + "LabelSource": "Vir:", + "LabelSoundEffects": "Zvočni učinki:", + "LabelSkipIfGraphicalSubsPresentHelp": "Ohranjanje besedilnih različic podnapisov omogoča učinkovitejše predvajanje in zmanjša potrebo po prekodiranju." } From f816f5267f3cd733c5649ff906e52d787f07c7a5 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 8 Mar 2020 19:08:07 +0100 Subject: [PATCH 253/449] Improve image loading speed and sizes --- src/components/backdrop/backdrop.js | 2 ++ src/components/cardbuilder/cardBuilder.js | 27 +++++++++++++++++++++-- src/components/dom.js | 19 ++++++++++++++++ src/components/listview/listview.js | 2 +- src/controllers/itemdetailpage.js | 12 ++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index 7320978f71..ec5b411853 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -182,6 +182,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings" return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, { type: "Backdrop", tag: imgTag, + maxWidth: dom.getScreenWidth(), index: index })); }); @@ -192,6 +193,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings" return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, { type: "Backdrop", tag: imgTag, + maxWidth: dom.getScreenWidth(), index: index })); }); diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3e54f91ee8..c20f6999f9 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -233,9 +233,9 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function getImageWidth(shape, screenWidth, isOrientationLandscape) { var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); - var shapeWidth = screenWidth / imagesPerRow; + var shapeWidth = Math.round(screenWidth / imagesPerRow) * 2; - return Math.round(shapeWidth); + return shapeWidth; } function setCardData(items, options) { @@ -463,6 +463,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -470,6 +471,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Banner", + maxWidth: width, tag: item.ImageTags.Banner }); @@ -477,6 +479,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Disc", + maxWidth: width, tag: item.ImageTags.Disc }); @@ -484,6 +487,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Logo", + maxWidth: width, tag: item.ImageTags.Logo }); @@ -491,6 +495,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { type: "Logo", + maxWidth: width, tag: item.ParentLogoImageTag }); @@ -498,6 +503,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Thumb", + maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -505,6 +511,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { type: "Thumb", + maxWidth: width, tag: item.ParentThumbImageTag }); @@ -512,6 +519,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -521,6 +529,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: width, tag: item.ParentBackdropImageTags[0] }); @@ -530,6 +539,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.ImageTags.Primary }); @@ -550,6 +561,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.PrimaryImageItemId || item.Id || item.ItemId, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.PrimaryImageTag }); @@ -567,12 +580,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", + maxWidth: width, tag: item.ParentPrimaryImageTag }); } else if (item.SeriesPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", + maxWidth: width, tag: item.SeriesPrimaryImageTag }); } else if (item.AlbumId && item.AlbumPrimaryImageTag) { @@ -581,6 +596,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.AlbumPrimaryImageTag }); @@ -594,6 +611,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -601,6 +619,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -608,6 +627,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -615,6 +635,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Thumb", + maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -622,6 +643,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { type: "Thumb", + maxWidth: width, tag: item.ParentThumbImageTag }); @@ -629,6 +651,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: width, tag: item.ParentBackdropImageTags[0] }); diff --git a/src/components/dom.js b/src/components/dom.js index 072ff5c77c..a000373b6d 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -112,6 +112,24 @@ define([], function () { return windowSize; } + var standardWidths = [480, 720, 1280, 1440, 1920, 2560, 3840, 5120, 7680]; + function getScreenWidth() { + var width = window.innerWidth * window.devicePixelRatio; + var height = window.innerHeight * window.devicePixelRatio; + + if (height > width) { + /* If we're in portrait, compute the proper width for this height, + taking 16:9 as the most common ratio */ + width = height * 1.78; + } + + var closest = standardWidths.sort(function (a, b) { + return Math.abs(width - a) - Math.abs(width - b); + })[0]; + + return closest; + } + var _animationEvent; function whichAnimationEvent() { @@ -175,6 +193,7 @@ define([], function () { addEventListener: addEventListenerWithOptions, removeEventListener: removeEventListenerWithOptions, getWindowSize: getWindowSize, + getScreenWidth: getScreenWidth, whichTransitionEvent: whichTransitionEvent, whichAnimationEvent: whichAnimationEvent, whichAnimationCancelEvent: whichAnimationCancelEvent diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index b38d601e3b..d054d8172c 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -72,7 +72,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { - width: width, + maxWidth: width, type: "Primary" }; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index e18311048c..8e03947783 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -469,6 +469,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); @@ -478,6 +479,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Primary }); @@ -487,6 +489,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } else if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.BackdropImageTags[0] }); @@ -496,6 +499,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ParentBackdropImageTags[0] }); @@ -505,6 +509,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } else if (item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); @@ -765,41 +770,48 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (imageTags.Primary) { url = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.ImageTags.Primary }); detectRatio = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { url = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.BackdropImageTags[0] }); shape = "thumb"; } else if (imageTags.Thumb) { url = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.ImageTags.Thumb }); shape = "thumb"; } else if (imageTags.Disc) { url = apiClient.getScaledImageUrl(item.Id, { type: "Disc", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.ImageTags.Disc }); shape = "square"; } else if (item.AlbumId && item.AlbumPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.AlbumPrimaryImageTag }); shape = "square"; } else if (item.SeriesId && item.SeriesPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.SeriesPrimaryImageTag }); } else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", + maxWidth: dom.getScreenWidth() * 0.5, tag: item.ParentPrimaryImageTag }); } From 457d37450e8709037ac845e2f29a0c0fbba57200 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 8 Mar 2020 22:20:16 +0100 Subject: [PATCH 254/449] Further improvements to max size of image requests --- src/components/listview/listview.js | 1 - src/controllers/auth/login.js | 2 +- src/controllers/itemdetailpage.js | 1 - src/controllers/userprofilespage.js | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index d054d8172c..f0f5440aae 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -105,7 +105,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { - width: width, type: "Primary" }; diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 4296b8bfb3..a97f2e849d 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -106,7 +106,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout if (user.PrimaryImageTag) { imgUrl = apiClient.getUserImageUrl(user.Id, { - width: 300, + width: 300 * window.devicePixelRatio, tag: user.PrimaryImageTag, type: "Primary" }); diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 8e03947783..a1be8162be 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1871,7 +1871,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti itemsContainer: castContent, coverImage: true, serverId: item.ServerId, - width: 160, shape: "overflowPortrait" }); }); diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 2a2387ab60..3e41c04858 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -88,7 +88,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", if (user.PrimaryImageTag) { imgUrl = ApiClient.getUserImageUrl(user.Id, { - width: 300, + width: 300 * window.devicePixelRatio, tag: user.PrimaryImageTag, type: "Primary" }); From 6ae0d2df9de5677edcc84055f2c8109240980a04 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 8 Mar 2020 18:14:58 +0000 Subject: [PATCH 255/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 5c7556c71c..b203d1d1b8 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -26,7 +26,7 @@ "LabelNext": "Naprej", "LabelPrevious": "Nazaj", "LabelSelectUsers": "Izberi uporabnike:", - "LabelTimeLimitHours": "Casovna omejitev (ure):", + "LabelTimeLimitHours": "Časovna omejitev (ure):", "LabelYourFirstName": "Ime:", "LabelYoureDone": "Koncano!", "MoreUsersCanBeAddedLater": "Uporabnike lahko dodate tudi kasneje preko Nadzorne plošče.", @@ -1171,5 +1171,24 @@ "LabelSportsCategories": "Športne kategorije:", "LabelSource": "Vir:", "LabelSoundEffects": "Zvočni učinki:", - "LabelSkipIfGraphicalSubsPresentHelp": "Ohranjanje besedilnih različic podnapisov omogoča učinkovitejše predvajanje in zmanjša potrebo po prekodiranju." + "LabelSkipIfGraphicalSubsPresentHelp": "Ohranjanje besedilnih različic podnapisov omogoča učinkovitejše predvajanje in zmanjša potrebo po prekodiranju.", + "LabelTriggerType": "Tip sprožilca:", + "LabelTranscodingVideoCodec": "Video kodek:", + "LabelTranscodingProgress": "Napredek prekodiranja:", + "LabelTranscodingFramerate": "Hitrost prekodiranja:", + "LabelTranscodes": "Prekodiranje:", + "LabelTranscodingTempPathHelp": "Določite pot po meri za datoteke prekodiranja. Pustite prazno za uporabo privzete lokacije.", + "LabelTranscodePath": "Pot prekodiranja:", + "LabelTranscodingContainer": "Kontejner:", + "LabelTranscodingAudioCodec": "Zvočni kodek:", + "LabelTrackNumber": "Številka skladbe:", + "LabelTime": "Čas:", + "LabelTextColor": "Barva besedila:", + "LabelTextBackgroundColor": "Barva ozadja besedila:", + "LabelTag": "Oznaka:", + "LabelSupportedMediaTypes": "Podprti tipi predstavnosti:", + "LabelSubtitles": "Podnapisi:", + "LabelSubtitlePlaybackMode": "Način podnapisov:", + "LabelSubtitleFormatHelp": "Primer: srt", + "LabelSubtitleDownloaders": "Pridobivanje podnapisov:" } From 9674b4ef54e144db077902bc8a3549dcf4595e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Fonseca?= Date: Mon, 9 Mar 2020 10:03:31 +0000 Subject: [PATCH 256/449] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index bece117113..da6d26d947 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -18,7 +18,7 @@ "ValueVideoCodec": "Codec de Vídeo: {0}", "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", - "ValueSpecialEpisodeName": "Especial - {0}", + "ValueSpecialEpisodeName": "Episódio Especial - {0}", "ValueConditions": "Condições: {0}", "ValueAudioCodec": "Codec de Áudio: {0}", "UserProfilesIntro": "O Jellyfin suporta perfis de utilizadores, permitindo que cada utilizador tenha as suas configurações de visualização, estado da reprodução e controlos parentais.", @@ -595,7 +595,7 @@ "HeaderMedia": "Multimédia", "HeaderLiveTvTunerSetup": "Configurar Sintonizador de TV", "HeaderLiveTv": "TV ao Vivo", - "HeaderLiveTV": "TV ao Vivo", + "HeaderLiveTV": "TV em Directo", "HeaderLibrarySettings": "Configurações da Biblioteca", "HeaderLibraryOrder": "Ordenação da Biblioteca", "HeaderLibraryFolders": "Pastas Multimédia", @@ -1134,7 +1134,7 @@ "HeaderDefaultRecordingSettings": "Definições de Gravação por Omissão", "HeaderDateIssued": "Data da Emissão", "HeaderCustomDlnaProfiles": "Perfis Personalizados", - "HeaderContinueWatching": "Continuar a Ver", + "HeaderContinueWatching": "Continuar a Assistir", "HeaderContinueListening": "Continuar a Ouvir", "HeaderContainerProfileHelp": "Os Perfis do Contentor indicam as limitações de um dispositivo ao reproduzir formatos específicos. Se hourver alguma limitação, o ficheiro multimédia será transcodificado, mesmo se o formato estiver configurado para reprodução directa.", "HeaderContainerProfile": "Perfil do Contentor", @@ -1176,7 +1176,7 @@ "HeaderActiveDevices": "Dispositivos Activos", "HeaderAccessScheduleHelp": "Crie uma restrição horária de acesso para limitar o acesso ao Jellyfin a determinadas horas.", "HeaderAccessSchedule": "Restrição Horária de Acesso", - "HardwareAccelerationWarning": "Activar a aceleração por hardware pode causar instabilidade em alguns ambientes. Garanta que o sistema operativo e os controladores da placa gráfica estão completamente actualizados. Se tiver dificuldades em reproduzir vídeo depois de alterar esta opção, pode ser necessário repôr \\\"Auto\\\".", + "HardwareAccelerationWarning": "Activar a aceleração por hardware pode causar instabilidade em alguns ambientes. Garanta que o sistema operativo e os controladores da placa gráfica estão actualizados. Se tiver dificuldades em reproduzir vídeo depois de alterar esta opção, pode ser necessário repor a configuração \\\"None\\\".", "HandledByProxy": "Gerido pelo proxy inverso", "HDPrograms": "Programas HD", "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", @@ -1196,7 +1196,7 @@ "Fullscreen": "Ecrã inteiro", "Friday": "Sexta", "FormatValue": "Formato: {0}", - "Folders": "Pastas", + "Folders": "Directórios", "FolderTypeUnset": "Conteúdo Misto", "FolderTypeTvShows": "Programas TV", "FolderTypeMusicVideos": "Videoclips", @@ -1207,5 +1207,11 @@ "OptionDownloadDiscImage": "Disco", "FetchingData": "Buscando Dados Adicionais", "EnableStreamLooping": "Habilitar loop do streaming", - "Down": "Baixar" + "Down": "Baixar", + "HeaderTags": "Tags", + "HeaderNavigation": "Navegar", + "CopyStreamURLError": "Ocorreu um erro ao copiar o URL.", + "ButtonSplit": "Dividir", + "AskAdminToCreateLibrary": "Peça a um administrador para criar a biblioteca.", + "AllowFfmpegThrottling": "Transcodificação com falhas" } From 76b085982b2ca0183f946d1cd5b4c3f2d00cc57e Mon Sep 17 00:00:00 2001 From: Nutjob Date: Mon, 9 Mar 2020 14:49:37 +0000 Subject: [PATCH 257/449] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 56 ++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 72b793e15f..eec45f42b8 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -40,7 +40,7 @@ "BirthDateValue": "Nato il: {0}", "BirthLocation": "Luogo di nascita", "BirthPlaceValue": "nato a: {0}", - "BookLibraryHelp": "Libri e audiolibri sono supportati. Rivedere {0}la guida ai nomi dei libri di Jellyfin{1}", + "BookLibraryHelp": "Libri e audiolibri sono supportati. Rivedere {0}la guida ai nomi dei libri di Jellyfin{1}.", "Books": "Libri", "BoxRear": "Box (retro)", "Browse": "Esplora", @@ -123,14 +123,14 @@ "ChannelAccessHelp": "Seleziona i canali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutti i canali usando il gestore dei metadati.", "ChannelNameOnly": "Solo il canale {0}", "ChannelNumber": "Numero canale", - "CinemaModeConfigurationHelp": "La modalità Cinema porta l'esperienza del teatro direttamente nel tuo salotto con la possibilità di vedere trailer e intro personalizzati", + "CinemaModeConfigurationHelp": "La modalità Cinema porta l'esperienza del teatro direttamente nel tuo salotto con la possibilità di vedere trailer e intro personalizzati prima della visione.", "Collections": "Collezioni", "ColorPrimaries": "Colori primari", "ColorSpace": "Spazio Colore", "ColorTransfer": "Trasferimento Colore", "CommunityRating": "Voto del pubblico", "Composer": "Compositore", - "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal Pannello di Controllo del Server Jellyfin, nelle impostazioni della Libreria.", + "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal pannello di controllo del Server Jellyfin, nelle impostazioni della Libreria.", "ConfirmDeleteImage": "Elimina immagine?", "ConfirmDeleteItem": "L'eliminazione di questo elemento lo cancellerà sia dal disco che dalla libreria multimediale. Sei sicuro di voler continuare?", "ConfirmDeleteItems": "L'eliminazione di questi elementi li cancellerà sia dal disco che dalla tua libreria multimediale. Sei sicuro di voler continuare?", @@ -140,7 +140,7 @@ "ContinueWatching": "Continua a guardare", "Continuing": "In corso", "CriticRating": "Voto della critica", - "CustomDlnaProfilesHelp": "Crea un profilo personalizzato per un nuovo dispositivo o sovrascrivi quello di sistema", + "CustomDlnaProfilesHelp": "Crea un profilo personalizzato per un nuovo dispositivo o sovrascrivi quello di sistema.", "DateAdded": "Aggiunto il", "DatePlayed": "Visto il", "DeathDateValue": "Morto: {0}", @@ -162,7 +162,7 @@ "DeviceAccessHelp": "Si applica solo ai dispositivi che possono essere identificati univocamente e non impedirà l'accesso dal browser. Filtrare l'accesso ai dispositivi dell'utente impedirà di usare nuovi dispositivi fino a quando non saranno stati approvati qui.", "DirectPlaying": "Riproduzione Diretta", "DirectStreamHelp1": "Il file multimediale è compatibile con il dispositivo per quanto riguarda la risoluzione e il tipo di supporto (H. 264, AC3, ecc), ma è in un contenitore file incompatibile (mkv, avi, wmv, ecc). Il video sarà ri-confezionato al volo prima di streammarlo sul dispositivo.", - "DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video", + "DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video.", "DirectStreaming": "Streaming Diretto", "Director": "Regista", "DirectorValue": "Regista: {0}", @@ -200,7 +200,7 @@ "EnablePhotos": "Mostra foto", "EnablePhotosHelp": "Le immagini saranno rilevate e visualizzate accanto ad altri file multimediali.", "EnableStreamLooping": "Auto-loop streaming in diretta", - "EnableStreamLoopingHelp": "Abilita questo se gli streaming in diretta contengono solo pochi secondi di dati e devono essere costantemente richiesti. L'abilitazione di questa funzione quando non è servita può causare problemi", + "EnableStreamLoopingHelp": "Abilita questo se gli streaming in diretta contengono solo pochi secondi di dati e devono essere costantemente richiesti. L'abilitazione di questa funzione quando non è servita può causare problemi.", "EnableThemeSongs": "Canzoni a tema", "EnableThemeSongsHelp": "Le canzoni a tema saranno riprodotte mentre visualizzi la tua libreria.", "EnableThemeVideos": "VIdeo a tema", @@ -265,7 +265,7 @@ "HeaderAddUpdateImage": "Aggiungi/aggiorna Immagine", "HeaderAddUser": "Aggiungi utente", "HeaderAdditionalParts": "Parti addizionali", - "HeaderAdmin": "Ammin.", + "HeaderAdmin": "Admin", "HeaderAlbumArtists": "Artisti dell' Album", "HeaderAlbums": "Album", "HeaderAlert": "Avviso", @@ -408,7 +408,7 @@ "HeaderSelectPath": "Seleziona Percorso", "HeaderSelectServer": "Scegli Server", "HeaderSelectServerCachePath": "Seleziona percorso Cache Server", - "HeaderSelectServerCachePathHelp": "Sfoglia o immetti il percorso da utilizzare per i file di cache server. La cartella deve essere scrivibile", + "HeaderSelectServerCachePathHelp": "Sfoglia o immetti il percorso da utilizzare per i file di cache server. La cartella deve essere scrivibile.", "HeaderSelectTranscodingPath": "Selezionare Percorso Temporaneo Transcodifica", "HeaderSelectTranscodingPathHelp": "Sfoglia o immettere il percorso da utilizzare per la transcodifica dei file temporanei. La cartella deve essere scrivibile.", "HeaderSendMessage": "Invia un messaggio", @@ -417,7 +417,7 @@ "HeaderSeriesStatus": "Stato Serie TV", "HeaderServerSettings": "Impostazioni server", "HeaderSettings": "Impostazioni", - "HeaderSetupLibrary": "Imposta le tue librerie multimediali.", + "HeaderSetupLibrary": "Imposta le tue librerie multimediali", "HeaderShutdown": "Spegni", "HeaderSortBy": "Ordina per", "HeaderSortOrder": "Ordinamento", @@ -480,9 +480,9 @@ "LabelAirsBeforeSeason": "In onda prima della stagione:", "LabelAlbumArtHelp": "PN utilizzato per le copertine degli album, all'interno dell'attributo dlna:profileID su upnp:albumArtURI. Alcuni dispositivi richiedono un valore specifico, indipendentemente dalla dimensione dell'immagine.", "LabelAlbumArtMaxHeight": "Altezza massima copertina Album:", - "LabelAlbumArtMaxHeightHelp": "Risoluzione massima copertina Album inviata tramite upnp:albumArtURI", + "LabelAlbumArtMaxHeightHelp": "Risoluzione massima copertina Album inviata tramite upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Larghezza massima copertina Album:", - "LabelAlbumArtMaxWidthHelp": "Risoluzione massima copertina Album inviata tramite upnp:albumArtURI", + "LabelAlbumArtMaxWidthHelp": "Risoluzione massima copertina album inviata tramite upnp:albumArtURI.", "LabelAlbumArtPN": "Copertine Album PN:", "LabelAlbumArtists": "Artisti album:", "LabelAll": "Tutti", @@ -509,7 +509,7 @@ "LabelCachePathHelp": "Specificare un percorso personalizzato per i file della cache del server, ad esempio le immagini. Lasciare vuoto per usare il predefinito del server.", "LabelCancelled": "Annullato", "LabelCertificatePassword": "Password Certificato:", - "LabelCertificatePasswordHelp": "Se il tuo certificato richiede una password, per favore inseriscila qui", + "LabelCertificatePasswordHelp": "Se il tuo certificato richiede una password, per favore inseriscila qui.", "LabelChannels": "Canali:", "LabelCollection": "Collezione:", "LabelCommunityRating": "Voto del pubblico:", @@ -557,7 +557,7 @@ "LabelEnableBlastAliveMessages": "Invia segnale di presenza", "LabelEnableBlastAliveMessagesHelp": "Attivare questa opzione se il server non viene rilevato in modo affidabile da altri dispositivi UPnP in rete.", "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dispositivi (secondi)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP effettuate da Jellyfin", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP effettuate da Jellyfin.", "LabelEnableDlnaDebugLogging": "Abilita il debug del DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea file di grandi dimensioni e dovrà essere usato solo quando necessario per risolvere problemi.", "LabelEnableDlnaPlayTo": "Abilita DLNA su", @@ -600,7 +600,7 @@ "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", "LabelImageType": "Tipo immagine:", "LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come", - "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN.", + "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice pin", "LabelInNetworkSignInWithEasyPasswordHelp": "Usa il codice pin facile per accedere alle app all'interno della tua rete domestica. La tua password usuale sarà necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", "LabelInternetQuality": "Qualità Internet:", "LabelKeepUpTo": "Conservane fino a:", @@ -608,7 +608,7 @@ "LabelKodiMetadataDateFormat": "Data di uscita Formato:", "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno dei files NFO verranno analizzate utilizzando questo formato.", "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart nel campo extrathumbs", - "LabelKodiMetadataEnableExtraThumbsHelp": "Copia extrafanart in extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "Quando scarichi delle immagini, queste possono essere salvate entrambe sia in extrafanart e extrathumbs per la massima compatibilità di skin con Kodi.", "LabelKodiMetadataEnablePathSubstitution": "Abilita sostituzione di percorso", "LabelKodiMetadataEnablePathSubstitutionHelp": "Consente percorso sostituzione dei percorsi delle immagini utilizzando le impostazioni di sostituzione percorso del server.", "LabelKodiMetadataSaveImagePaths": "Salva percorsi delle immagini all'interno dei file NFO", @@ -643,7 +643,7 @@ "LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.", "LabelMetadataReaders": "Lettori Metadati:", "LabelMetadataReadersHelp": "Classificare le origini metadati locali preferite in ordine di priorità. Il primo file trovato verrà letto.", - "LabelMetadataSaversHelp": "Scegliere i formati di file per salvare i metadati", + "LabelMetadataSaversHelp": "Scegliere i formati di file per salvare i metadati.", "LabelMethod": "Metodo:", "LabelMinBackdropDownloadWidth": "Massima larghezza sfondo:", "LabelMinResumeDuration": "Durata minima per il riprendi:", @@ -723,7 +723,7 @@ "LabelSeasonNumber": "Numero stagione:", "LabelSecureConnectionsMode": "Modalità connessione sicura:", "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV:", - "LabelSelectFolderGroupsHelp": "Le cartelle non selezionate verranno mostrate come se stesse nelle proprie viste", + "LabelSelectFolderGroupsHelp": "Le cartelle non selezionate verranno mostrate come se stesse nelle proprie viste.", "LabelSelectUsers": "Seleziona Utenti:", "LabelSelectVersionToInstall": "Selezionare la versione da installare:", "LabelSendNotificationToUsers": "Invia notifiche a:", @@ -735,7 +735,7 @@ "LabelSkipIfAudioTrackPresent": "Ignora se la traccia audio di default corrisponde alla lingua di download", "LabelSkipIfAudioTrackPresentHelp": "Deselezionare questa opzione per assicurare che tutti i video abbiano i sottotitoli, a prescindere dalla lingua audio.", "LabelSkipIfGraphicalSubsPresent": "Ignora se il video integra già dei sottotitoli", - "LabelSkipIfGraphicalSubsPresentHelp": "Mantenere le versioni testuali dei sottotitoli si tradurrà in una riproduzione più efficiente e diminuirà la probabilità che sia necessaria la transcodifica video", + "LabelSkipIfGraphicalSubsPresentHelp": "Mantenere le versioni testuali dei sottotitoli si tradurrà in una riproduzione più efficiente e diminuirà la probabilità che sia necessaria la transcodifica video.", "LabelSonyAggregationFlagsHelp": "Determina il contenuto dell'elemento aggregationFlags in urn:schemas-sonycom: namespace av.", "LabelSortBy": "Ordina per:", "LabelSortOrder": "Ordinato per:", @@ -828,7 +828,7 @@ "MediaInfoProfile": "Profilo", "MediaInfoRefFrames": "Ref frame", "MediaInfoResolution": "Risoluzione", - "MediaInfoSampleRate": "frequenza di campion.", + "MediaInfoSampleRate": "Frequenza di campione", "MediaInfoSize": "Dimensione", "MediaIsBeingConverted": "Il file multimediale viene convertito in un formato che è compatibile con il dispositivo che sta riproducendo il file multimediale.", "Menu": "Menù", @@ -841,13 +841,13 @@ "MessageConfirmRecordingCancellation": "Cancellare la registrazione?", "MessageConfirmRemoveMediaLocation": "Sei sicuro di voler rimuovere questa posizione?", "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Jellyfin?", - "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente", + "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente.", "MessageConfirmShutdown": "Sei sicuro di voler spegnere il server?", "MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.", "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", - "MessageDirectoryPickerInstruction": "Percorsi di rete possono essere inseriti manualmente nel caso in cui il pulsante Rete non riesce a individuare i vostri dispositivi. Ad esempio, {0} o {1}", + "MessageDirectoryPickerInstruction": "Percorsi di rete possono essere inseriti manualmente nel caso in cui il pulsante Rete non riesce a individuare i vostri dispositivi. Ad esempio, {0} o {1}.", "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", @@ -856,14 +856,14 @@ "MessageForgotPasswordInNetworkRequired": "Riprova all'interno della rete domestica per avviare il processo di reimpostazione della password.", "MessageInstallPluginFromApp": "Questo plugin deve essere installato dall'app in cui vuoi farlo funzionare.", "MessageInvalidForgotPasswordPin": "É stato inserito un codice pin invalido o scaduto . Riprova.", - "MessageInvalidUser": "Utente o password errato. Riprova", + "MessageInvalidUser": "Utente o password errato. Riprova.", "MessageItemSaved": "Elemento salvato.", "MessageItemsAdded": "Elementi aggiunti.", "MessageLeaveEmptyToInherit": "Lascia vuoto per ereditare le impostazioni dall'elemento principale o il valore predefinito globale.", "MessageNoAvailablePlugins": "Nessun plugin disponibile.", "MessageNoMovieSuggestionsAvailable": "Nessun suggerimento di film attualmente disponibile. Iniziare a guardare e valutare i vostri film, e poi tornare per i suggerimenti.", - "MessageNoPluginsInstalled": "Non hai plugin installati", - "MessageNoTrailersFound": "Nessun Trailer trovato.Installa Il plug in dei trailer per importare la libreria dei trailer da internet", + "MessageNoPluginsInstalled": "Non hai plugin installati.", + "MessageNoTrailersFound": "Nessun trailer trovato. Installa il canale dei Trailer per migliorare la tua esperienza cinematografica importando una libreria di trailer da internet.", "MessageNothingHere": "Non c'è niente qui.", "MessagePasswordResetForUsers": "I seguenti utenti havvo avuto le loro password resettate. Adesso possono accedere con i codici pin che sono stati utilizzati per eseguire il reset.", "MessagePlayAccessRestricted": "Le riproduzione di questi contenuti è bloccata. Per favore contatta il tuo amministratore del server per maggiori informazioni.", @@ -987,7 +987,7 @@ "OptionHasThemeSong": "Sigla", "OptionHasThemeVideo": "Video Sigla", "OptionHideUser": "Nascondi questo utente dalla schermata di accesso", - "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avrà bisogno di accedere manualmente utilizzando la propria username e password", + "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avrà bisogno di accedere manualmente utilizzando la propria username e password.", "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", @@ -1049,7 +1049,7 @@ "People": "Attori", "PerfectMatch": "Corrispondenza perfetta", "Photos": "Foto", - "PinCodeResetComplete": "Il codice PIN è stato resettato", + "PinCodeResetComplete": "Il codice pin è stato resettato.", "PinCodeResetConfirmation": "Sei sicuro di voler resettare il codice PIN?", "PlaceFavoriteChannelsAtBeginning": "Mostra prima i canali preferiti", "Play": "Riproduci", @@ -1306,11 +1306,11 @@ "HeaderCastCrew": "Cast", "HeaderMedia": "Media", "HeaderPassword": "Password", - "AuthProviderHelp": "Selezionare un Provider di Autenticazione da utilizzare per autenticare la password dell'utente", + "AuthProviderHelp": "Selezionare un Provider di Autenticazione da utilizzare per autenticare la password dell'utente.", "HeaderFavoriteMovies": "Film Preferiti", "HeaderFavoriteShows": "Serie TV Preferite", "HeaderFavoriteEpisodes": "Episodi Preferiti", - "HeaderFavoriteAlbums": "Album preferiti", + "HeaderFavoriteAlbums": "Album Preferiti", "HeaderFavoriteArtists": "Artisti Preferiti", "HeaderFavoriteSongs": "Brani Preferiti", "HeaderFavoriteVideos": "Video Preferiti", From f24c90841210a384f90fbaf36b290fc67ff4ff37 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 9 Mar 2020 20:46:56 +0100 Subject: [PATCH 258/449] Another pass of image sizes improvements --- src/controllers/dashboard/dashboard.js | 17 +++++++++++++---- src/controllers/itemdetailpage.js | 1 - src/controllers/medialibrarypage.js | 1 + src/controllers/playback/videoosd.js | 6 ++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 2530d7a9a1..a5ba9f60f5 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -493,15 +493,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (nowPlayingItem.ImageTags && nowPlayingItem.ImageTags.Logo) { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.Id, { tag: nowPlayingItem.ImageTags.Logo, - maxHeight: 24, - maxWidth: 130, + maxHeight: 24 * window.devicePixelRatio, + maxWidth: 130 * window.devicePixelRatio, type: "Logo" }); } else if (nowPlayingItem.ParentLogoImageTag) { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId, { tag: nowPlayingItem.ParentLogoImageTag, - maxHeight: 24, - maxWidth: 130, + maxHeight: 24 * window.devicePixelRatio, + maxWidth: 130 * window.devicePixelRatio, type: "Logo" }); } @@ -636,6 +636,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa getNowPlayingImageUrl: function (item) { if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Backdrop", tag: item.BackdropImageTags[0] }); @@ -643,6 +644,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Backdrop", tag: item.ParentBackdropImageTags[0] }); @@ -650,6 +652,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTag) { return ApiClient.getScaledImageUrl(item.BackdropItemId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Backdrop", tag: item.BackdropImageTag }); @@ -659,6 +662,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Thumb) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Thumb", tag: imageTags.Thumb }); @@ -666,6 +670,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentThumbImageTag) { return ApiClient.getScaledImageUrl(item.ParentThumbItemId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Thumb", tag: item.ParentThumbImageTag }); @@ -673,6 +678,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ThumbImageTag) { return ApiClient.getScaledImageUrl(item.ThumbItemId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Thumb", tag: item.ThumbImageTag }); @@ -680,6 +686,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Primary) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary", tag: imageTags.Primary }); @@ -687,6 +694,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.PrimaryImageTag) { return ApiClient.getScaledImageUrl(item.PrimaryImageItemId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary", tag: item.PrimaryImageTag }); @@ -694,6 +702,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.AlbumPrimaryImageTag) { return ApiClient.getScaledImageUrl(item.AlbumId, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary", tag: item.AlbumPrimaryImageTag }); diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index a1be8162be..48f697325c 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1818,7 +1818,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti require(["chaptercardbuilder"], function (chaptercardbuilder) { chaptercardbuilder.buildChapterCards(item, chapters, { itemsContainer: scenesContent, - width: 400, backdropShape: "overflowBackdrop", squareShape: "overflowSquare" }); diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 03c84f2ca3..f35d7c69a0 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -256,6 +256,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.PrimaryImageItemId) { imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, { + maxWidth: dom.getScreenWidth() * 0.40, type: "Primary" }); } diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 24d779f245..b01ab26a2c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -334,18 +334,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (item) { var imgUrl = seriesImageUrl(item, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary" }) || seriesImageUrl(item, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Thumb" }) || imageUrl(item, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary" }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary" }) || seriesImageUrl(secondaryItem, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Thumb" }) || imageUrl(secondaryItem, { + maxWidth: dom.getScreenWidth() * 0.20, type: "Primary" })), imgUrl) { return void (osdPoster.innerHTML = ''); From 039728359914d18765a78f22b2aaf73fc9a1aebf Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 9 Mar 2020 21:02:08 +0100 Subject: [PATCH 259/449] Round every image size adjustment --- src/controllers/dashboard/dashboard.js | 18 +++++++++--------- src/controllers/itemdetailpage.js | 14 +++++++------- src/controllers/medialibrarypage.js | 2 +- src/controllers/playback/videoosd.js | 12 ++++++------ 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index a5ba9f60f5..51e8c2e190 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -636,7 +636,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa getNowPlayingImageUrl: function (item) { if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.BackdropImageTags[0] }); @@ -644,7 +644,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.ParentBackdropImageTags[0] }); @@ -652,7 +652,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTag) { return ApiClient.getScaledImageUrl(item.BackdropItemId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.BackdropImageTag }); @@ -662,7 +662,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Thumb) { return ApiClient.getScaledImageUrl(item.Id, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: imageTags.Thumb }); @@ -670,7 +670,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentThumbImageTag) { return ApiClient.getScaledImageUrl(item.ParentThumbItemId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: item.ParentThumbImageTag }); @@ -678,7 +678,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ThumbImageTag) { return ApiClient.getScaledImageUrl(item.ThumbItemId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: item.ThumbImageTag }); @@ -686,7 +686,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Primary) { return ApiClient.getScaledImageUrl(item.Id, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: imageTags.Primary }); @@ -694,7 +694,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.PrimaryImageTag) { return ApiClient.getScaledImageUrl(item.PrimaryImageItemId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: item.PrimaryImageTag }); @@ -702,7 +702,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.AlbumPrimaryImageTag) { return ApiClient.getScaledImageUrl(item.AlbumId, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: item.AlbumPrimaryImageTag }); diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 48f697325c..5b1f5d9e1f 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -770,48 +770,48 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (imageTags.Primary) { url = apiClient.getScaledImageUrl(item.Id, { type: "Primary", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Primary }); detectRatio = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { url = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.BackdropImageTags[0] }); shape = "thumb"; } else if (imageTags.Thumb) { url = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Thumb }); shape = "thumb"; } else if (imageTags.Disc) { url = apiClient.getScaledImageUrl(item.Id, { type: "Disc", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Disc }); shape = "square"; } else if (item.AlbumId && item.AlbumPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.AlbumPrimaryImageTag }); shape = "square"; } else if (item.SeriesId && item.SeriesPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.SeriesPrimaryImageTag }); } else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", - maxWidth: dom.getScreenWidth() * 0.5, + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ParentPrimaryImageTag }); } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index f35d7c69a0..d838c2145e 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -256,7 +256,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.PrimaryImageItemId) { imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, { - maxWidth: dom.getScreenWidth() * 0.40, + maxWidth: Math.round(dom.getScreenWidth() * 0.40), type: "Primary" }); } diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index b01ab26a2c..bf605976c3 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -334,24 +334,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (item) { var imgUrl = seriesImageUrl(item, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary" }) || seriesImageUrl(item, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb" }) || imageUrl(item, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary" }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary" }) || seriesImageUrl(secondaryItem, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb" }) || imageUrl(secondaryItem, { - maxWidth: dom.getScreenWidth() * 0.20, + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary" })), imgUrl) { return void (osdPoster.innerHTML = ''); From eccc47c3555942b32c38cc47227309624b1dc083 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 21:07:31 +0000 Subject: [PATCH 260/449] Added translation using Weblate (Latvian) --- src/strings/lv.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/lv.json diff --git a/src/strings/lv.json b/src/strings/lv.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/lv.json @@ -0,0 +1 @@ +{} From e0fbf5570a4ca4d6307c30cfb2ace18d95da9b0a Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 21:08:01 +0000 Subject: [PATCH 261/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 0967ef424b..4b9dfcea22 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1 +1,8 @@ -{} +{ + "Absolute": "Absolūts", + "HeaderFavoriteSongs": "Dziesmu Favorīti", + "HeaderFavoriteShows": "Raidījumu Favorīti", + "HeaderFavoriteEpisodes": "Episožu Favorīti", + "HeaderFavoriteArtists": "Izpildītāju Favorīti", + "HeaderFavoriteAlbums": "Albumu Favorīti" +} From 085c47e4b0190f9c818304f3e3e427135068d9c0 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 21:13:37 +0000 Subject: [PATCH 262/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 626 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 625 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 4b9dfcea22..7d5469d417 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -4,5 +4,629 @@ "HeaderFavoriteShows": "Raidījumu Favorīti", "HeaderFavoriteEpisodes": "Episožu Favorīti", "HeaderFavoriteArtists": "Izpildītāju Favorīti", - "HeaderFavoriteAlbums": "Albumu Favorīti" + "HeaderFavoriteAlbums": "Albumu Favorīti", + "MusicArtist": "Mūzikas Izpildītājs", + "MusicAlbum": "Mūzikas Albums", + "Movies": "Filmas", + "MoreMediaInfo": "Media info", + "MoreFromValue": "Vairāk no {0}", + "Monday": "Pirmdiena", + "Mobile": "Mobilā", + "MinutesBefore": "minūtes pirms", + "MinutesAfter": "minūtes pēc", + "MetadataManager": "Metadatu Pārvaldnieks", + "Metadata": "Metadati", + "MessageYouHaveVersionInstalled": "", + "MessageUnableToConnectToServer": "Mēs pašlaik nevaram sazināties ar izvēlēto serveri. Pārliecinies ka tas strādā, un mēģini vēlreiz.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Sekojošie multvides ceļi tiks noņemti no tavas bibliotēkas:", + "MessageSettingsSaved": "Iestatījumi saglabāti.", + "MessagePleaseWait": "Lūdzu uzgaidi. Tas var aizņemt pāris minūtes.", + "MessageNothingHere": "Šeit nekā nav.", + "MessageNoPluginsInstalled": "Tev nav uzstādīti paplašinājumi.", + "MessageNoAvailablePlugins": "Nav pieejamu paplašinājumu.", + "MessageItemsAdded": "Vienums pievienots.", + "MessageItemSaved": "Vienums saglabāts.", + "MessageInvalidUser": "Nepareizs lietotājvārds vai parole. Lūdzu mēģini vēlreiz.", + "MessageImageFileTypeAllowed": "Tikai JPEG un PNG datnes tiek atbalstītas.", + "MessageFileReadError": "Lasot datni notika kļūda. Lūdzu mēģini vēlreiz.", + "MessageDownloadQueued": "Lejupielāde ierindota.", + "MessageCreateAccountAt": "Izveido kontu {0}", + "MessageContactAdminToResetPassword": "Lūdzu sazinies ar sistēmas administratoru lai atiestatītu paroli.", + "MessageConfirmShutdown": "Vai tu tiešām gribi izslēgt serveri?", + "MessageConfirmRestart": "Vai tu tiešām gribi restartēt Jellyfin Server?", + "MessageConfirmRemoveMediaLocation": "Vai tu tiešām gribi noņemt šo ceļu?", + "MessageConfirmRecordingCancellation": "Atcelt ierakstu?", + "MessageConfirmAppExit": "Vai tu gribi iziet?", + "MessageAlreadyInstalled": "Šī versija jau ir uzstādīta.", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Subtitri", + "MediaInfoStreamTypeData": "Dati", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoSoftware": "Programmatūras", + "MediaInfoSize": "Lielums", + "MediaInfoResolution": "Izšķirtspēja", + "MediaInfoProfile": "Profils", + "MediaInfoPixelFormat": "Pikseļu formāts", + "LabelYear": "Gads:", + "LabelWeb": "Tīkls:", + "LabelVideoResolution": "Video izšķirtspēja:", + "LabelVideoCodec": "Video kodeks:", + "LabelVideoBitrate": "Video bitu-ātrums:", + "LabelVideo": "Video:", + "DashboardArchitecture": "Arhitektūra: {0}", + "DashboardOperatingSystem": "Operētājsistēma: {0}", + "DashboardServerName": "Serveris: {0}", + "DashboardVersionNumber": "Versija: {0}", + "LabelVersionInstalled": "{0} instalēti", + "LabelVersion": "Versija:", + "LabelValue": "Vērtība:", + "LabelVaapiDevice": "VA API Ierīce:", + "LabelUsername": "Lietotājvārds:", + "LabelUserLibrary": "Lietotāja bibliotēka:", + "LabelUserAgent": "Lietotāja aģents:", + "LabelUser": "Lietotājs:", + "LabelUseNotificationServices": "Izmantot sekojošos servisus:", + "LabelTypeText": "Teksts", + "LabelTypeMetadataDownloaders": "{0} metadatu lejupielādētāji:", + "LabelTunerIpAddress": "Tūnera IP Addrese:", + "LabelTunerType": "Tūnera tips:", + "LabelType": "Tips:", + "LabelTranscodingVideoCodec": "Video kodeks:", + "LabelTranscodePath": "Trans-kodēšanas ceļš:", + "LabelTranscodingContainer": "Konteineris:", + "LabelTranscodingAudioCodec": "Audio kodeks:", + "LabelTrackNumber": "Celiņa numurs:", + "LabelTimeLimitHours": "Laika limits (stundas):", + "LabelTime": "Laiks:", + "LabelTheme": "Tēma:", + "LabelTextSize": "Teksta lielums:", + "LabelTextColor": "Teksta krāsa:", + "LabelTextBackgroundColor": "Teksta fona krāsa:", + "LabelTag": "Tags:", + "LabelTVHomeScreen": "TV režīma mājas ekrāns:", + "LabelSupportedMediaTypes": "Atbalstītie Multivides Veidi:", + "LabelSubtitles": "Subtitri:", + "LabelSubtitlePlaybackMode": "Subtitru veids:", + "LabelSubtitleFormatHelp": "Piemērs: srt", + "LabelSubtitleDownloaders": "Subtitru lejupielādētāji:", + "LabelStreamType": "Straumes veids:", + "LabelStopping": "Aptur", + "LabelStopWhenPossible": "Apturēt kad iespējams:", + "LabelStatus": "Status:", + "LabelStartWhenPossible": "Sākt kad iespējams:", + "LabelSportsCategories": "Sporta kategorijas:", + "LabelSpecialSeasonsDisplayName": "Speciālās sezonas displeja nosaukums:", + "LabelSource": "Avots:", + "LabelSoundEffects": "Skaņas efekti:", + "LabelSortTitle": "Kārtošanas nosaukums:", + "LabelSortOrder": "Kārtošanas secība:", + "LabelSortBy": "Kārtot pēc:", + "LabelSize": "Ilgums:", + "LabelServerName": "Servera nosaukums:", + "LabelSeriesRecordingPath": "Sērijas ieraksta ceļā (neobligāts):", + "LabelSerialNumber": "Sērijas numurs", + "LabelSendNotificationToUsers": "Sūtīt paziņojumu uz:", + "LabelSelectVersionToInstall": "Izvēlies versiju, ko uzstādīt:", + "LabelSelectUsers": "Izvēlies lietotājus:", + "LabelSecureConnectionsMode": "Drošā savienojuma veids:", + "LabelSeasonNumber": "Sezonas numurs:", + "LabelScreensaver": "Ekrānsaudzētājs:", + "LabelRuntimeMinutes": "Ilgums (minūtes):", + "LabelRemoteClientBitrateLimit": "Interneta straumēšanas bitu ātruma limits (Mb/s):", + "LabelRefreshMode": "Atjaunināšanās režīms:", + "LabelRecordingPath": "Noklusējuma ierakstīšanas ceļš:", + "LabelRecord": "Ierakstīt:", + "LabelReasonForTranscoding": "Trans-kodēšanas iemesls:", + "LabelPublicHttpsPort": "Publiskā HTTPS porta numurs:", + "LabelPublicHttpPort": "Publiskā HTTP porta numurs:", + "LabelProtocolInfo": "Protokola info:", + "LabelProtocol": "Protokols:", + "LabelProfileVideoCodecs": "Video kodeksi:", + "LabelProfileContainersHelp": "Atdalīti ar komatu. Var atstāt tukšu, lai pielietotu visiem konteineriem.", + "LabelProfileContainer": "Konteineriem:", + "LabelProfileCodecsHelp": "Atdalīti ar komatu. Var atstāt tukšu, lai pielietotu visiem kodeksiem.", + "LabelProfileCodecs": "Kodeksi:", + "LabelProfileAudioCodecs": "Audio kodeksi:", + "LabelPreferredDisplayLanguage": "Ieteicamā displeja valoda:", + "LabelPostProcessorArgumentsHelp": "Izmantot {path} kā ceļu ieraksta datnei.", + "LabelPostProcessor": "Pēcapstrādes lietotne:", + "LabelPlayMethod": "Atskaņošanas metode:", + "LabelPlaylist": "Atskaņošanas saraksts:", + "LabelPlayer": "Atskaņotājs:", + "LabelPlayDefaultAudioTrack": "Atskaņot noklusējuma audio celiņu neatkarīgi no valodas", + "LabelPlaceOfBirth": "Dzimšanas vieta:", + "LabelPersonRoleHelp": "Piemēram: saldējuma furgona šoferis", + "LabelPath": "Ceļš:", + "LabelPasswordRecoveryPinCode": "Pin kods:", + "LabelPasswordResetProvider": "Paroles maiņas Nodrošinātājs:", + "LabelPasswordConfirm": "Parole (apstiprinājums):", + "LabelPassword": "Parole:", + "LabelParentNumber": "Vecāku numurs:", + "LabelOverview": "Pārskats:", + "LabelOriginalTitle": "Oriģinālais nosaukums:", + "LabelNumber": "Numurs:", + "LabelNotificationEnabled": "Iespējot šo paziņojumu", + "LabelNext": "Nākamais", + "LabelNewsCategories": "Ziņu kategorijas:", + "LabelNewPasswordConfirm": "Jaunās paroles apstiprinājums:", + "LabelNewPassword": "Jaunā parole:", + "LabelNewName": "Jaunais nosaukums:", + "LabelName": "Nosaukums:", + "LabelMovieRecordingPath": "Filmu ieraksta ceļš (neobligāts):", + "LabelMoviePrefix": "Filmu prefikss:", + "LabelMovieCategories": "Filmu kategorijas:", + "LabelMethod": "Metode:", + "LabelMetadataSavers": "Metadatu serveri:", + "LabelMetadataReaders": "Metadatu lasītāji:", + "LabelMetadataPath": "Metadatu ceļš:", + "LabelMetadata": "Metadati:", + "LabelMessageTitle": "Ziņojuma virsraksts:", + "LabelMessageText": "Ziņojuma teksts:", + "LabelMaxStreamingBitrate": "Maksimālā straumēšanas kvalitāte:", + "LabelMaxChromecastBitrate": "Chromecast straumēšanas kvalitāte:", + "LabelManufacturerUrl": "Ražotāja URL", + "LabelManufacturer": "Ražotājs:", + "LabelLogs": "Logs:", + "LabelLanNetworks": "LAN tīkli:", + "LabelLanguage": "Valoda:", + "LabelInternetQuality": "Tīkla kvalitāte:", + "LabelImageType": "Attēla veids:", + "LabelIconMaxWidth": "Ikonas maksimālais platums:", + "LabelHttpsPort": "Vietējā HTTPS porta numurs:", + "LabelHomeScreenSectionValue": "Mājas ekrāna sekcija {0}:", + "LabelHomeNetworkQuality": "Mājas tīkla kvalitāte:", + "LabelHardwareAccelerationType": "Aparatūras paātrināšana:", + "LabelFriendlyName": "Draudzīgs nosaukums:", + "LabelFormat": "Formāts:", + "LabelForgotPasswordUsernameHelp": "Ievadi savu lietotājvārdu, ja tu to atceries.", + "LabelFont": "Fonts:", + "LabelFolder": "Mape:", + "LabelFinish": "Pabeigt", + "LabelFileOrUrl": "Fails vai URL:", + "LabelFailed": "Neizdevās", + "LabelEveryXMinutes": "Katru:", + "LabelEvent": "Notikums:", + "LabelEpisodeNumber": "Epizodes numurs:", + "LabelEndDate": "Beigu datums:", + "LabelEnableHardwareDecodingFor": "Iespējot aparatūras atkodēšanu priekš:", + "LabelEnableDlnaServer": "Iespējot DLNA serveri", + "LabelEnableDlnaPlayTo": "Iespējot DLNA atskaņošanu uz", + "LabelEnableDlnaDebugLogging": "Iespējot DLNA atkļūdošanas logošanu", + "LabelEnableDlnaClientDiscoveryInterval": "Klientu meklēšanas intervāls (sekundes)", + "LabelEasyPinCode": "Vieglais pin kods:", + "LabelDownloadLanguages": "Lejupielādēt valodas:", + "LabelDisplayOrder": "Displeja kārtojums:", + "LabelDisplayName": "Displeja nosaukums:", + "LabelDisplayMode": "Displeja režīms:", + "LabelDisplayLanguageHelp": "Jellyfin tulkošana ir notiekošs projekts.", + "LabelDisplayLanguage": "Displeja valoda:", + "LabelDiscNumber": "Diska numurs:", + "LabelDeviceDescription": "Ierīces apraksts", + "LabelDefaultScreen": "Noklusējuma ekrāns:", + "LabelDefaultUser": "Noklusējuma lietotājs:", + "LabelDay": "Diena:", + "LabelDateAdded": "Pievienošanas datums:", + "LabelCustomDeviceDisplayName": "Displeja nosaukums:", + "LabelCurrentPassword": "Pašreizējā parole:", + "LabelCriticRating": "Kritiķu reitings:", + "LabelCountry": "Valsts:", + "LabelContentType": "Satura veids:", + "LabelCommunityRating": "Kopienas vēŗtējums:", + "LabelCollection": "Kolekcija:", + "LabelChannels": "Kanāli:", + "LabelCertificatePassword": "Sertifikāta parole:", + "LabelCancelled": "Atcelts", + "LabelCachePath": "Keša ceļš:", + "LabelCache": "Kešs:", + "LabelBurnSubtitles": "Iededzināt subtitrus:", + "LabelBirthYear": "Dzimšanas gads:", + "LabelBirthDate": "Dzimšanas datums:", + "LabelAudioLanguagePreference": "Ieteicamā audio valoda:", + "LabelAudio": "Audio:", + "LabelArtistsHelp": "Atdali vairākus izmantojot ;", + "LabelArtists": "Izpildītājs:", + "LabelAppNameExample": "Piemēram: Sickbeard, Sonarr", + "LabelAppName": "Lietotnes nosaukums", + "LabelAll": "Viss", + "LabelAlbumArtists": "Albuma izpildītāji:", + "LabelAlbum": "Albums:", + "LabelAirTime": "Tiešraides laiks:", + "LabelAirDays": "Tiešraides dienas:", + "LabelAccessStart": "Sākuma laiks:", + "LabelAccessEnd": "Beigu laiks:", + "LabelAccessDay": "Nedēļas diena:", + "Label3DFormat": "3D formāts:", + "Kids": "Bērni", + "Items": "Vienumi", + "ItemCount": "{0} vienumi", + "InstallingPackage": "Instalē {0}", + "Images": "Attēli", + "Identify": "Identificēt", + "Horizontal": "Horizontāls", + "Home": "Mājas", + "HideWatchedContentFromLatestMedia": "Paslēpt skatītos vienumus no jaunākās multvides", + "Hide": "Paslēpt", + "HeaderStopRecording": "Apturēt Ierakstu", + "HeaderStatus": "Status", + "HeaderStartNow": "Sākt Tagad", + "HeaderSpecialEpisodeInfo": "Speciālās Epizodes Info", + "HeaderSortOrder": "Kārtošanas Secība", + "HeaderSortBy": "Kārtot Pēc", + "HeaderShutdown": "Izslēgt", + "HeaderSetupLibrary": "Uzstādīt multvides bibliotēkas", + "HeaderSettings": "Iestatījumi", + "HeaderServerSettings": "Servera Iestatījumi", + "HeaderSeriesStatus": "Sēriju Status", + "HeaderSeriesOptions": "Sēriju Opcijas", + "HeaderSeries": "Sērijas", + "HeaderSendMessage": "Sūtīt Ziņojumu", + "HeaderSelectServerCachePath": "Izvēlies Servera Keša Ceļu", + "HeaderSelectServer": "Izvēlies Serveri", + "HeaderSecondsValue": "{0} Sekundes", + "HeaderSeasons": "Sezonas", + "HeaderSchedule": "Grafiks", + "HeaderRevisionHistory": "Revīziju Vēsture", + "HeaderRestartingServer": "Restartē Serveri", + "HeaderRestart": "Restartēt", + "HeaderRemoveMediaLocation": "Noņemt Multvides Atrašanās Vietu", + "HeaderRemoveMediaFolder": "Noņemt Multvides Mapi", + "HeaderRecordingOptions": "Ierakstu Opcijas", + "HeaderRecentlyPlayed": "Nesen Atskaņots", + "HeaderProfileInformation": "Profila Informācija", + "HeaderProfile": "Profils", + "HeaderPleaseSignIn": "Lūdzu ieej", + "HeaderPlaybackError": "Atskaņošanas Kļūda", + "HeaderPlayback": "Multvides Atskaņošanas", + "HeaderPlayAll": "Atskaņot Visu", + "HeaderPinCodeReset": "Atiestatīt Pin Kodu", + "HeaderPhotoAlbums": "Foto Albūmi", + "HeaderPeople": "Cilvēki", + "HeaderPaths": "Ceļi", + "HeaderPasswordReset": "Paroles Nomaiņa", + "HeaderPassword": "Parole", + "HeaderNextVideoPlayingInValue": "Nākamais Video tiks atskaņots pēc {0}", + "HeaderNextUp": "Nākamais", + "HeaderNextEpisodePlayingInValue": "Nākamā Epizode tiks atskaņota pēc: {0}", + "HeaderNewDevices": "Jaunas Ierīces", + "HeaderNewApiKey": "Jauna API Atslēga", + "HeaderNavigation": "Navigācija", + "HeaderMyMediaSmall": "Mana Multvide (mazs)", + "HeaderMyMedia": "Mana Multvide", + "HeaderMyDevice": "Mana Ierīce", + "HeaderMusicVideos": "Mūzikas Video", + "HeaderMusicQuality": "Audio Kvalitāte", + "HeaderMovies": "Filmas", + "HeaderMoreLikeThis": "Vairāk Kā Šis", + "HeaderMetadataSettings": "Metadatu Iestatījumi", + "HeaderMediaInfo": "Multvides informācija", + "HeaderMediaFolders": "Multvides Mapes", + "HeaderMedia": "Multvide", + "HeaderLiveTvTunerSetup": "Tiešraides TV Tūnera Uzstādīšana", + "HeaderLiveTv": "Tiešraides TV", + "HeaderLiveTV": "Tiešraides TV", + "HeaderLibrarySettings": "Bibliotēku Iestatījumi", + "HeaderLibraryOrder": "Bibliotēku Kārtojums", + "HeaderLibraryFolders": "Bibliotēku Mapes", + "HeaderLibraryAccess": "Bibliotēku Piekļuves", + "HeaderLibraries": "Bibliotēkas", + "HeaderLatestRecordings": "Jaunākie Ieraksti", + "HeaderLatestMusic": "Jaunākā Mūzika", + "HeaderLatestMovies": "Jaunākās Filmas", + "HeaderLatestMedia": "Jaunākā Multvide", + "HeaderLatestEpisodes": "Jaunākās Epizodes", + "HeaderKeepRecording": "Turpināt Ierakstu", + "HeaderItems": "Vienumi", + "HeaderInstall": "Uzstādīt", + "HeaderImageSettings": "Attēlu Iestatījumi", + "HeaderImageOptions": "Attēlu Opcijas", + "HeaderIdentificationHeader": "Identifikācijas Headers", + "HeaderIdentificationCriteriaHelp": "Ievadi vismaz vienu identifikācijas kritēriju.", + "HeaderIdentification": "Identifikācija", + "HeaderHttpHeaders": "HTTP Headeri", + "HeaderHome": "Mājas", + "HeaderGuideProviders": "TV Gida Datu Nodrošinātāji", + "HeaderGenres": "Žanri", + "HeaderFrequentlyPlayed": "Bieži Atskaņots", + "HeaderForgotPassword": "Aizmirst PAroli", + "HeaderForKids": "Priekš Bērniem", + "HeaderFilters": "Filtri", + "HeaderFavoriteVideos": "Video Favorīti", + "MediaInfoPath": "Ceļš", + "MediaInfoLevel": "Līmenis", + "MediaInfoLayout": "Izkārtojums", + "MediaInfoLanguage": "Valoda", + "MediaInfoExternal": "Ārējs", + "MediaInfoDefault": "Noklusējums", + "MediaInfoContainer": "Konteiners", + "MediaInfoCodecTag": "Kodeksa tags", + "MediaInfoCodec": "Kodeks", + "MediaInfoChannels": "Kanāli", + "MediaInfoAnamorphic": "Anamorfisks", + "MarkUnplayed": "Atzīmēt neatskaņotu", + "MarkPlayed": "Atzīmēt atskaņotu", + "ManageRecording": "Pārvaldīt ierakstu", + "ManageLibrary": "Pārvaldīt bibliotēku", + "Logo": "Logo", + "LiveTV": "Tiešraides TV", + "LiveBroadcasts": "Tiešraides:", + "Live": "Tiešraide", + "List": "Saraksts", + "LinksValue": "Linki: {0}", + "Like": "Patīk", + "LeaveBlankToNotSetAPassword": "Tu vari atstāt šo lauku tukšu, lai neiestatītu paroli.", + "LaunchWebAppOnStartup": "Palaist web interfeisu kad serveris tiek startēts", + "LatestFromLibrary": "Jaunākais {0}", + "Large": "Liels", + "LabelffmpegPath": "FFmped ceļš:", + "LabelZipCode": "Zip Kods:", + "LabelYoureDone": "Esi pabeidzis!", + "LabelYourFirstName": "Tavs vārds:", + "HeaderFavoritePeople": "Cilvēku Favorīti", + "HeaderFavoriteMovies": "Filmu Favorīti", + "HeaderFavoriteBooks": "Grāmatu Favorīti", + "HeaderExternalIds": "Ārējie ID:", + "HeaderError": "Kļūda", + "HeaderEpisodes": "Epizodes", + "HeaderEditImages": "Rediģēt Attēlus", + "HeaderDownloadSync": "Lejupielādēt & Sinhronizēt", + "HeaderDisplay": "Displejs", + "HeaderDevices": "Ierīces", + "HeaderDeviceAccess": "Ierīču Piekļuve", + "HeaderDeveloperInfo": "Izstrādātāju Info", + "HeaderDeleteItems": "Noņemt Vienumus", + "HeaderDeleteItem": "Noņemt Vienumu", + "HeaderDeleteDevice": "Noņemt Ierīci", + "HeaderContinueWatching": "Turpināt Skatīšanos", + "HeaderContinueListening": "Turpināt Klausīšanos", + "HeaderContainerProfile": "Konteinera Profils", + "HeaderConnectionFailure": "Savienojuma Kļūda", + "HeaderConnectToServer": "Pievienoties pie Servera", + "HeaderConfirmRevokeApiKey": "Atsaukt API Atslēgu", + "HeaderConfirmPluginInstallation": "Apstiprināt Palašinājumu Uzstādījumu", + "HeaderConfigureRemoteAccess": "Konfigurēt Attālināto Piekļuvi", + "HeaderCodecProfile": "Kodeksu Profils", + "HeaderChannels": "Kanāli", + "HeaderChannelAccess": "Kanālu Piekļuve", + "HeaderCancelSeries": "Atcelt Sēriju", + "HeaderCancelRecording": "Atcelt Ierakstus", + "HeaderBooks": "Grāmatas", + "HeaderAutomaticUpdates": "Automātiskie Atjauninājumi", + "HeaderAudioSettings": "Audio Iestatījumi", + "HeaderAudioBooks": "Audio Grāmatas", + "HeaderApp": "Lietotne", + "HeaderApiKeys": "API Atslēgas", + "HeaderApiKey": "API Atslēga", + "HeaderAllowMediaDeletionFrom": "Atļaut Multvides Dzēšanu no", + "HeaderAlert": "Paziņojums", + "HeaderAlbums": "Albumi", + "HeaderAlbumArtists": "Albumu Izpildītāji", + "HeaderAdmin": "Admin", + "HeaderAddUser": "Pievienot Lietotāju", + "HeaderAddToPlaylist": "Pievienot Atskaņošanas Sarakstam", + "HeaderAddToCollection": "Pievienot kolekcijai", + "HeaderActivity": "Aktivitāte", + "HeaderActiveRecordings": "Aktīvie Ieraksti", + "HeaderActiveDevices": "Aktīvās Ierīces", + "HDPrograms": "HD programmas", + "Guide": "Gids", + "GuestStar": "Vieszvaigzne", + "GroupVersions": "Grupēt versijas", + "GroupBySeries": "Grupēt pēc sērijām", + "GenresValue": "Žanri: {0}", + "Genres": "Žanri", + "GenreValue": "Žanrs: {0}", + "General": "Vispārīgs", + "Fullscreen": "Pilnekrāns", + "Friday": "Piektdiena", + "FormatValue": "Formāts: {0}", + "Folders": "Mapes", + "FolderTypeTvShows": "TV Raidījumi", + "FolderTypeMusicVideos": "Mūzikas Video", + "FolderTypeMusic": "Mūzika", + "FolderTypeMovies": "Filmas", + "FolderTypeBooks": "Grāmatas", + "Filters": "Filtri", + "FileReadError": "Datnes lasīšanas laikā notika kļūda.", + "FileReadCancelled": "Datnes lasīšana tika atcelta.", + "FileNotFound": "Datne nav atrasta.", + "File": "Datne", + "Favorites": "Favorīti", + "Favorite": "Favorīts", + "ExitFullscreen": "Iziet no pilnekrāna", + "EveryNDays": "Ik pa {0} dienām", + "Episodes": "Epizodes", + "EndsAtValue": "Beigsies {0}", + "EnableThemeVideosHelp": "Atskaņot tēmas video fonā bibliotēkas pārlūkošanas laikā.", + "EnableThemeSongsHelp": "Atskaņot tēmas mūziku fonā bibliotēkas pārlūkošanas laikā.", + "EnableThemeVideos": "Tēmas video", + "EnableThemeSongs": "Tēmas mūzika", + "EnablePhotos": "Rādīt attēlus", + "EnableNextVideoInfoOverlayHelp": "Video beigās rādīt informāciju par nākamo video atskaņošanas sarakstā.", + "EnableNextVideoInfoOverlay": "Rādīt nākamā video informāciju atskaņošanas laikā", + "EnableHardwareEncoding": "Iespējot aparatūras kodēšanu", + "EnableExternalVideoPlayers": "Ārējie video atskaņotāji", + "EnableDisplayMirroring": "Displeju spoguļošana", + "EnableCinemaMode": "Teātra režīms", + "EnableBackdrops": "Foni", + "EditSubtitles": "Rediģēt subtitrus", + "EditMetadata": "Rediģēt metadatus", + "EditImages": "Rediģēt attēlus", + "Edit": "Rediģēt", + "EasyPasswordHelp": "Tavs vieglais pin kods tiek izmantots priekš bezsaistes piekļuves atbalstošos klientos, un arī var tikt izmantots priekš vieglas tīkla piekļuves.", + "DrmChannelsNotImported": "Kanāli ar DRM netiks importēti.", + "DownloadsValue": "{0} lejupielādes", + "Download": "Lejupielādēt", + "DisplayModeHelp": "Izvēlies ekrāna veidu, uz kura tu izmanto Jellyfin.", + "DoNotRecord": "Neierakstīt", + "DisplayInOtherHomeScreenSections": "Rādīt mājas ekrāna sadaļās kā jaunākā multvide un turpini skatīties", + "DisplayInMyMedia": "Rādīt mājas ekrānā", + "Display": "Displejs", + "Dislike": "Nepatīk", + "Disc": "Disks", + "Disabled": "Atspējots", + "DirectorsValue": "Direktori: {0}", + "DirectorValue": "Direktors: {0}", + "Director": "Direktors", + "DirectStreaming": "Tiešā straumēšana", + "DirectPlaying": "Tiešā Atskaņošana", + "DetectingDevices": "Meklē Ierīces", + "Desktop": "Darbvirsma", + "DeleteImage": "Dzēst Attēlu", + "Delete": "Izdzēst", + "Default": "Noklusējums", + "DatePlayed": "Atskaņošanas datums", + "DateAdded": "Pievienošanas datums", + "CriticRating": "Kritiķu reitings", + "CopyStreamURLError": "Kļūda kopējot URL.", + "CopyStreamURLSuccess": "URL veiksmīgi nokopēts.", + "CopyStreamURL": "Kopēt Straumes URL", + "Continuing": "Turpina", + "ContinueWatching": "Turpināt skatīties", + "Connect": "Savienot", + "ConfirmDeletion": "Apstiprināt Dzēšanu", + "ConfirmDeleteImage": "Dzēst attēlu?", + "CommunityRating": "Kopienas reitings", + "Collections": "Kolekcijas", + "ChannelNameOnly": "Tikai kanāls {0}", + "Channels": "Kanāli", + "ChannelNumber": "Kanāla numurs", + "Categories": "Kategorijas", + "CancelSeries": "Atcelt sēriju", + "CancelRecording": "Atcelt ierakstu", + "ButtonWebsite": "Web vietne", + "ButtonViewWebsite": "Skatīt web vietni", + "ButtonUninstall": "Atinstalēt", + "ButtonTrailer": "Treileri", + "ButtonSubtitles": "Subtitri", + "ButtonSplit": "Sadalīt", + "ButtonStop": "Apturēt", + "ButtonStart": "Sākt", + "ButtonSignOut": "Iziet", + "ButtonSignIn": "Ieiet", + "ButtonShutdown": "Izslēgt", + "ButtonShuffle": "Jaukt", + "ButtonSettings": "Iestatījumi", + "ButtonSend": "Nosūtīt", + "ButtonSelectView": "Izvēlies Skatu", + "ButtonSelectServer": "Izvēlies Serveri", + "ButtonSelectDirectory": "Izvēlies Mapi", + "ButtonSearch": "Meklēt", + "ButtonScanAllLibraries": "Skanēt Visas Bibliotēkas", + "ButtonSave": "Saglabāt", + "ButtonRevoke": "Atsaukt", + "ButtonResume": "Turpināt", + "ButtonRestart": "Restartēt", + "ButtonResetPassword": "Nomainīt Paroli", + "ButtonResetEasyPassword": "Nomainīt vieglo pin kodu", + "ButtonRepeat": "Atkārtot", + "ButtonRename": "Pārsaukt", + "ButtonRemove": "Noņemt", + "ButtonRefreshGuideData": "Atjaunot Gida Datus", + "ButtonRefresh": "Atjaunot", + "ButtonProfile": "Profils", + "ButtonPreviousTrack": "Iepriekšējais celiņš", + "ButtonPlay": "Atskaņot", + "ButtonPause": "Pauzēt", + "ButtonParentalControl": "Vecāku Pārvaldība", + "ButtonOpen": "Atvērt", + "ButtonOk": "Labi", + "ButtonOff": "Izslēgt", + "ButtonNextTrack": "Nākamais Celiņš", + "ButtonNew": "Jauns", + "ButtonNetwork": "Tīkls", + "ButtonMore": "Vairāk", + "ButtonLibraryAccess": "Bibliotēku piekļuve", + "ButtonLearnMore": "Uzzināt vairāk", + "ButtonInfo": "Info", + "ButtonHome": "Mājas", + "ButtonHelp": "Palīdzība", + "ButtonGuide": "Gids", + "ButtonGotIt": "Sapratu", + "ButtonFullscreen": "Pilnekrāna", + "ButtonForgotPassword": "Aizmirsu Paroli", + "ButtonFilter": "Filtrs", + "ButtonEditImages": "Rediģēt attēlus", + "ButtonEdit": "Rediģēt", + "ButtonDownload": "Lejupielāde", + "ButtonDeleteImage": "Izdzēst Attēlu", + "ButtonDelete": "Izdzēst", + "ButtonConnect": "Pieslēgties", + "ButtonChangeServer": "Nomainīt Serveri", + "ButtonCancel": "Atcelt", + "ButtonBack": "Atpakaļ", + "ButtonAudioTracks": "Audio Celiņi", + "ButtonAddUser": "Pievienot Lietotāju", + "ButtonAddServer": "Pievienot Serveri", + "ButtonAddMediaLibrary": "Pievienot Multimēdiju Bibliotēku", + "ButtonAddImage": "Pievienot attēlu", + "ButtonAdd": "Pievienot", + "BrowsePluginCatalogMessage": "Pārlūko mūsu paplašinājumu katalogu, lai redzētu pieejamos paplašinājumus.", + "Browse": "Pārlūkot", + "BoxRear": "Kaste (aizmugure)", + "Box": "Kaste", + "Books": "Grāmatas", + "Help": "Palīdzība", + "HeadersFolders": "Mapes", + "HeaderYears": "Gadi", + "HeaderXmlSettings": "Xml Iestatījumi", + "HeaderXmlDocumentAttribute": "Xml Dokumenta Atribūts", + "HeaderXmlDocumentAttributes": "Xml Dokumenta Atribūti", + "HeaderVideos": "Video", + "HeaderVideoTypes": "Video Veidi", + "HeaderVideoType": "Video Veids", + "HeaderVideoQuality": "Video Kvalitāte", + "HeaderUsers": "Lietotāji", + "HeaderUser": "Lietotājs", + "HeaderUploadImage": "Augšupielādēt Attēlu", + "HeaderUpcomingOnTV": "Nākamais Televīzijā", + "HeaderTypeText": "Ievadīt Tekstu", + "HeaderTypeImageFetchers": "{0} Attēlu Sagādnieki", + "HeaderTuners": "Tūneri", + "HeaderTunerDevices": "Tūnera Ierīces", + "HeaderTranscodingProfile": "Transkodēšanas Profils", + "HeaderTracks": "Celiņi", + "HeaderThisUserIsCurrentlyDisabled": "Šis lietotājs pašlaik ir atspējots", + "HeaderTags": "Tagi", + "HeaderSystemDlnaProfiles": "Sistēmas Profili", + "HeaderSubtitleProfiles": "Subtitru Profili", + "HeaderSubtitleProfile": "Subtitru Profils", + "HeaderSubtitleDownloads": "Subtitru Lejupielāde", + "HeaderSubtitleAppearance": "Subtitru Izskats", + "BirthPlaceValue": "Dzimšanas vieta: {0}", + "BirthLocation": "Dzimšanas vieta", + "BirthDateValue": "Dzimis: {0}", + "Banner": "Karogattēls", + "Backdrops": "Foni", + "Backdrop": "Fons", + "AutoBasedOnLanguageSetting": "Auto (atkarībā no valodas iestatījumiem)", + "Auto": "Auto", + "Audio": "Audio", + "AttributeNew": "Jauns", + "AsManyAsPossible": "Cik vien iespējams", + "Artists": "Izpildītāji", + "Art": "Māksla", + "AroundTime": "Ap {0}", + "Anytime": "Jebkad", + "AnyLanguage": "Jebkura valoda", + "AlwaysPlaySubtitles": "Vienmēr rādīt subtitrus", + "AllowedRemoteAddressesHelp": "Ar komatiem atdalīts IP adrešu vai IP/tīkla masku saraksts, kas norāda uz tīkliem, kas var pieslēgties attālināti. Ja atstāts tukšs, visas attālinātās adreses tiks atļautas.", + "AllowRemoteAccessHelp": "Ja atķeksēts, visi attālinātie savienojumi tiks bloķēti.", + "AllowRemoteAccess": "Atļaut attālinātus savienojumus šim Jellyfin Serverim.", + "AllowOnTheFlySubtitleExtraction": " ", + "AllowMediaConversion": "Atļaut multimēdiju pārveidošanu", + "AllLibraries": "Visas bibliotēkas", + "AllLanguages": "Visas valodas", + "AllEpisodes": "Visas epizodes", + "AllComplexFormats": "Visi sarezģītie formāti (ASS, SSA, VOBSUB, PGS, SUB/IDX, utt.)", + "AllChannels": "Visi kanāli", + "All": "Viss", + "Alerts": "Paziņojumi", + "Albums": "Albumi", + "AddedOnValue": "Pievienots {0}", + "AddToPlaylist": "Pievienot atskaņošanas sarakstam", + "AddToPlayQueue": "Pievienot atskaņošanas rindai", + "AddToCollection": "Pievienot kolekcijai", + "Add": "Pievienot", + "Actor": "Aktieris", + "AccessRestrictedTryAgainLater": "Piekļuve pašlaik ir ierobežota. Lūdzu mēģini vēlreiz pēc brīža." } From 744ea709d39aa076173f70984ea3a38f5566f0d2 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 23:15:05 +0000 Subject: [PATCH 263/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 7d5469d417..5cc7b2ac63 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -628,5 +628,10 @@ "AddToCollection": "Pievienot kolekcijai", "Add": "Pievienot", "Actor": "Aktieris", - "AccessRestrictedTryAgainLater": "Piekļuve pašlaik ir ierobežota. Lūdzu mēģini vēlreiz pēc brīža." + "AccessRestrictedTryAgainLater": "Piekļuve pašlaik ir ierobežota. Lūdzu mēģini vēlreiz pēc brīža.", + "NewCollection": "Jauna Kolekcija", + "Never": "Nekad", + "Name": "Nosaukums", + "MySubtitles": "Mani subtitri", + "MusicVideo": "Mūzikas Video" } From f7b64301900f28e982c437cb01d4b8af2486df0d Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 23:16:02 +0000 Subject: [PATCH 264/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 5cc7b2ac63..ba88540536 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -633,5 +633,24 @@ "Never": "Nekad", "Name": "Nosaukums", "MySubtitles": "Mani subtitri", - "MusicVideo": "Mūzikas Video" + "MusicVideo": "Mūzikas Video", + "OptionAllUsers": "Visi lietotāji", + "OptionAlbumArtist": "Albuma Izpildītājs", + "OptionAlbum": "Albums", + "OptionAdminUsers": "Administratori", + "OnlyImageFormats": "Tikai attēlu formāti (VOBSUB, PGS, SUB, utt.)", + "Option3D": "3D", + "OneChannel": "Viens kanāls", + "Off": "Izslēgts", + "NumLocationsValue": "{0} mapes", + "Normal": "Normāls", + "None": "Nakā", + "NoSubtitles": "Nav subtitru", + "NoSubtitleSearchResultsFound": "Nav atrasti rezultāti.", + "No": "Nr", + "Next": "Nākamais", + "News": "Ziņas", + "NewEpisodesOnly": "Tikai jaunas epizodes", + "NewEpisodes": "Jaunas epizodes", + "NewCollectionNameExample": "Piemēram: Zvaigžņu Karu Kolekcija" } From fcc5bed8632c2db4df57f270a90c308ee637f4c0 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 9 Mar 2020 23:23:53 +0000 Subject: [PATCH 265/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 116 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index ba88540536..868b9f968b 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -652,5 +652,119 @@ "News": "Ziņas", "NewEpisodesOnly": "Tikai jaunas epizodes", "NewEpisodes": "Jaunas epizodes", - "NewCollectionNameExample": "Piemēram: Zvaigžņu Karu Kolekcija" + "NewCollectionNameExample": "Piemēram: Zvaigžņu Karu Kolekcija", + "AllowMediaConversionHelp": "Atļauj vai aizliedz piekļuvi pie multivides pārveidošanas funkcijas.", + "Aired": "Raidīts", + "AdditionalNotificationServices": "Pārlūko paplašinājumu katalogu lai uzstādītu papildu paziņojumu servisus.", + "Yesterday": "Vakar", + "Yes": "Jā", + "XmlTvSportsCategoriesHelp": "Raidījumi ar šīm kategorijām tiks rādīti kā sporta raidījumi. Atdali vairākus ar '|'.", + "XmlTvNewsCategoriesHelp": "Raidījumi ar šīm kategorijām tiks rādīti kā ziņu raidījumi. Atdali vairākus ar '|'.", + "XmlTvMovieCategoriesHelp": "Raidījumi ar šīm kategorijām tiks rādīti kā filmas. Atdali vairākus ar '|'.", + "XmlTvKidsCategoriesHelp": "Raidījumi ar šīm kategorijām tiks rādīti kā raidījumi, kas paredzētas bērniem. Atdali vairākus ar '|'.", + "Writer": "Rakstnieks", + "WelcomeToProject": "Esiet sveicināts Jellyfin!", + "Wednesday": "Trešdiena", + "Watched": "Skatīts", + "ViewPlaybackInfo": "Skatīt atskaņošanas info", + "ViewArtist": "Skatīt izpildītāju", + "ViewAlbum": "Skatīt albumu", + "VideoRange": "Video platums", + "Vertical": "Vertikāls", + "ValueVideoCodec": "Video Kodeks: {0}", + "ValueTimeLimitSingleHour": "Laika limits: 1 stunda", + "ValueTimeLimitMultiHour": "Laika limits: {0} stundas", + "ValueSongCount": "{0} dziesmas", + "ValueSeriesCount": "{0} sērijas", + "ValueSeconds": "{0} sekundes", + "ValueOneSong": "1 dziesma", + "ValueOneSeries": "1 sērija", + "ValueOneMusicVideo": "1 mūzikas video", + "ValueOneMovie": "1 filma", + "ValueOneEpisode": "1 epizode", + "ValueOneAlbum": "1 albums", + "ValueMusicVideoCount": "{0} mūzikas video", + "ValueMovieCount": "{0} filmas", + "ValueMinutes": "{0} min", + "ValueEpisodeCount": "{0} epizodes", + "ValueDiscNumber": "Disks {0}", + "ValueContainer": "Konteiners: {0}", + "ValueCodec": "Kodeks: {0}", + "ValueAudioCodec": "Audio Kodeks: {0}", + "ValueAlbumCount": "{0} albumi", + "UserProfilesIntro": "Jellyfin satur atbalstu lietotāju profiliem ar granulāru kontroli pār displeja iestatījumiem, atskaņošanas statusu un vecāku pārvaldi.", + "Upload": "Augšupielādēt", + "Unrated": "Nevērtēts", + "Unplayed": "Neatskaņots", + "Unmute": "Ieslēgt skaņu", + "UninstallPluginHeader": "Noņemt Paplašinājumu", + "UninstallPluginConfirmation": "Vai tu tiešām gribi noņemt {0}?", + "Tuesday": "Otrdiena", + "Transcoding": "Trans-kodēšana", + "Trailers": "Treileri", + "TrackCount": "{0} celiņi", + "TitlePlayback": "Atskaņošana", + "TitleHostingSettings": "Hostinga Iestatījumi", + "TitleHardwareAcceleration": "Aparatūras Paātrināšana", + "Thursday": "Ceturtdiena", + "ThemeVideos": "Tēmas video", + "ThemeSongs": "Tēmas mūzika", + "TellUsAboutYourself": "Pastāsti mums par sevi", + "TagsValue": "Tagi: {0}", + "Tags": "Tagi", + "TabUsers": "Lietotāji", + "TabTranscoding": "Trans-kodēšana", + "TabTrailers": "Treileri", + "TabSuggestions": "Ieteikumi", + "TabStreaming": "Straumēšana", + "TabSongs": "Dziesmas", + "TabShows": "Raidījumi", + "TabSettings": "Iestatījumi", + "TabServer": "Serveris", + "TabSeries": "Sērijas", + "TabResumeSettings": "Turpināt", + "TabResponses": "Atbildes", + "TabRecordings": "Ieraksti", + "TabProfiles": "Profili", + "TabProfile": "Profils", + "TabPlugins": "Paplašinājumi", + "TabPlaylists": "Atskaņošanas Saraksti", + "TabPlaylist": "Atskaņošanas Saraksts", + "TabPlayback": "Atskaņošana", + "TabPassword": "Parole", + "TabParentalControl": "Vecāku Pārvaldība", + "TabOther": "Cits", + "TabNotifications": "Paziņojumi", + "TabNfoSettings": "NFO Iestatījumi", + "TabNetworking": "Tīklošana", + "TabNetworks": "Tīkli", + "TabMyPlugins": "Mani Paplašinājumi", + "TabMusicVideos": "Mūzikas Video", + "TabMusic": "Mūzika", + "TabMovies": "Filmas", + "TabMetadata": "Metadati", + "TabLogs": "Logs", + "TabLiveTV": "Tiešraides TV", + "TabLatest": "Jaunākais", + "TabInfo": "Info", + "TabGuide": "Gids", + "TabGenres": "Žanri", + "TabFavorites": "Favorīti", + "TabEpisodes": "Epizodes", + "TabDisplay": "Displejs", + "TabDirectPlay": "Tiešā Atskaņošana", + "TabDevices": "Ierīces", + "TabContainers": "Konteineri", + "TabCollections": "Kolekcijas", + "TabCodecs": "Kodeksi", + "TabChannels": "Kanāli", + "TabCatalog": "Katalogs", + "TabArtists": "Izpildītāji", + "TabAlbums": "Albumi", + "ValueSpecialEpisodeName": "Speciālais - {0}", + "Sync": "Sinhronizācija", + "Songs": "Dziesmas", + "Shows": "Raidījumi", + "Playlists": "Atskaņošanas Saraksti", + "Photos": "Attēli" } From 1d10a354274c16d943494ac7707e6165ba04c30d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 12:32:14 +0300 Subject: [PATCH 266/449] Fix icon doubling --- .../dashboard/scheduledtasks/scheduledtasks.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 2c665a4403..10ea0538d3 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -49,7 +49,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma html += ""; html += "
"; if (task.State === "Running") { - html += ''; + html += ''; } else if (task.State === "Idle") { html += ''; } @@ -90,16 +90,23 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma return html; } + function setTaskButtonIcon(button, icon) { + var inner = button.querySelector("i"); + inner.classList.remove("stop"); + inner.classList.remove("play_arrow"); + inner.classList.add(icon); + } + function updateTaskButton(elem, state) { if (state === "Running") { elem.classList.remove("btnStartTask"); elem.classList.add("btnStopTask"); - elem.querySelector("i").innerHTML = "stop"; + setTaskButtonIcon(elem, "stop"); elem.title = globalize.translate("ButtonStop"); } else if (state === "Idle") { elem.classList.add("btnStartTask"); elem.classList.remove("btnStopTask"); - elem.querySelector("i").innerHTML = ""; + setTaskButtonIcon(elem, "play_arrow"); elem.title = globalize.translate("ButtonStart"); } $(elem).parents(".listItem")[0].setAttribute("data-status", state); From e016836d3e353590eb9a78523d55d45df1d4dbbb Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 12:44:42 +0300 Subject: [PATCH 267/449] Fix library icons in WebOS 4 --- src/components/cardbuilder/cardBuilder.js | 2 +- src/components/homesections/homesections.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3e54f91ee8..ab4f857485 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1484,7 +1484,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function getDefaultText(item, options) { if (item.CollectionType) { - return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' + return '' } switch (item.Type) { diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 430c06bc57..b024528549 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -183,7 +183,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; var icon = imageHelper.getLibraryIcon(item.CollectionType); - html += '' + icon + '' + item.Name + ''; + html += '' + item.Name + ''; } html += '
'; From 13a03b6e2cea3c21d1e91270966f985d920e6300 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 12:57:09 +0300 Subject: [PATCH 268/449] Fix slideshow button icons in WebOS 4 --- src/components/slideshow/slideshow.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 40d87e9519..4d426f2484 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -70,7 +70,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f var tabIndex = canFocus ? '' : ' tabindex="-1"'; autoFocus = autoFocus ? ' autofocus' : ''; - return ''; + return ''; } function setUserScalable(scalable) { @@ -201,14 +201,16 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f function onAutoplayStart() { var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "pause"; + btnSlideshowPause.classList.remove("play_arrow"); + btnSlideshowPause.classList.add("pause"); } } function onAutoplayStop() { var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = ""; + btnSlideshowPause.classList.remove("pause"); + btnSlideshowPause.classList.add("play_arrow"); } } @@ -365,8 +367,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } function playPause() { - - var paused = dlg.querySelector('.btnSlideshowPause i').innerHTML !== "pause"; + var paused = !dlg.querySelector('.btnSlideshowPause i').classList.contains("pause"); if (paused) { play(); } else { From b348c69844c6dd7eecc4a1a3a05eef0d0d29592f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 12:59:36 +0300 Subject: [PATCH 269/449] Fix emby-collapse icon in WebOS 4 --- src/elements/emby-collapse/emby-collapse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index 600af55516..fdd77adf0b 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -80,7 +80,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun var title = this.getAttribute('title'); - var html = ''; + var html = ''; this.insertAdjacentHTML('afterbegin', html); From ec5f5e117d4fab123dca194c104c3f52e6907a37 Mon Sep 17 00:00:00 2001 From: Marcus Schelin Date: Tue, 10 Mar 2020 10:47:58 +0000 Subject: [PATCH 270/449] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 6097bcfd6d..17bb11b57b 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -159,7 +159,7 @@ "DetectingDevices": "Söker efter enheter", "DeviceAccessHelp": "Detta tillämpas endast för enheter som kan bli unikt identifierade och som inte förhindrar åtkomst till browsern. Filtering av användarenheter kommer att blockera dom från att använda nya enheter tills dom har blivit godkända här.", "DirectPlaying": "Direktuppspelning", - "DirectStreamHelp1": "Innehållet är kompatibelt med enheten vad gäller upplösning och mediatyp (H.264, AC3, etc) men det är en inkompatibel filkontainer (mkv, avi, wmv etc). Video-filen kommer att packas om live innan strömningen startar till enheten.", + "DirectStreamHelp1": "Innehållet är kompatibelt med enheten vad gäller upplösning och medietyp (H.264, AC3 osv.) men är i ett inkompatibelt filformat (mkv, avi, wmv osv.). Videofilen kommer att packas om i realtid innan den strömmas till enheten.", "DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.", "DirectStreaming": "Direktströmning", "Director": "Regissör", @@ -180,7 +180,7 @@ "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras.", - "DropShadow": "Skuggning", + "DropShadow": "Mjuk", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", @@ -346,15 +346,15 @@ "HeaderLiveTv": "Live-TV", "HeaderLoginFailure": "Misslyckad inloggning", "HeaderMediaFolders": "Mediamappar", - "HeaderMediaInfo": "Mediainformation", + "HeaderMediaInfo": "Medieinformation", "HeaderMetadataSettings": "Metadatainställningar", "HeaderMoreLikeThis": "Mer som denna", "HeaderMovies": "Filmer", "HeaderMusicQuality": "Musikkvalitet", "HeaderMusicVideos": "Musikvideor", "HeaderMyDevice": "Min enhet", - "HeaderMyMedia": "Min Media", - "HeaderMyMediaSmall": "Min Media (liten)", + "HeaderMyMedia": "Min media", + "HeaderMyMediaSmall": "Min media (liten)", "HeaderNewApiKey": "Ny API-nyckel", "HeaderNewDevices": "Nya enheter", "HeaderNextEpisodePlayingInValue": "Nästa avsnitt börjar om {0}", @@ -536,7 +536,7 @@ "LabelDownMixAudioScaleHelp": "Höj nivån vid nedmixning. Sätt värdet till 1 för att behålla den ursprungliga nivån.", "LabelDownloadLanguages": "Språk att hämta:", "LabelDropImageHere": "Släpp en bild här, eller klicka för att bläddra.", - "LabelDropShadow": "Visa skugga:", + "LabelDropShadow": "Skuggning:", "LabelDynamicExternalId": "{0} ID:", "LabelEasyPinCode": "Enkel pin-kod:", "LabelEmbedAlbumArtDidl": "Bädda in omslagsbilder i Didl", @@ -570,7 +570,7 @@ "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", "LabelFriendlyName": "Visningsnamn:", - "LabelServerNameHelp": "Det här namnet används för att identifiera servern, om det lämnas tomt kommer datorns namn att användas.", + "LabelServerNameHelp": "Det här namnet används för att identifiera servern. Ifall det lämnas tomt används datorns namn.", "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", "LabelH264Crf": "H264-omkodning CRF:", @@ -781,12 +781,12 @@ "LabelYourFirstName": "Ditt förnamn:", "LabelYoureDone": "Klart!", "LabelZipCode": "Postnummer:", - "LabelffmpegPath": "FFmpeg sökväg:", - "LabelffmpegPathHelp": "Sökvägen till ffmpeg applikationen, eller mappen som innehåller ffmpeg.", + "LabelffmpegPath": "FFmpeg-sökväg:", + "LabelffmpegPathHelp": "Sökvägen till FFmpeg-filen, eller mappen som innehåller FFmpeg.", "Large": "Stor", "LatestFromLibrary": "Senaste {0}", "LearnHowYouCanContribute": "Se hur du kan hjälpa till.", - "LibraryAccessHelp": "Ange vilka mediamappar den här användaren ska ha tillgång till. Administratörer har rättighet att redigera alla mappar i metadatahanteraren.", + "LibraryAccessHelp": "Ange vilka mediemappar den här användaren ska ha tillgång till. Administratörer har rätt att redigera alla mappar i metadatahanteraren.", "Like": "Gilla", "LinksValue": "Länkar: {0}", "List": "Lista", @@ -910,7 +910,7 @@ "OptionAllowBrowsingLiveTv": "Tillåt Live-TV åtkomst", "OptionAllowContentDownloading": "Tillåt nedladdning av media", "OptionAllowLinkSharing": "Tillåt delning för sociala medier", - "OptionAllowLinkSharingHelp": "Endast webbsidor med mediainformation delas. Mediafiler delas aldrig publikt. Delningar är tidsbegränsade och upphör efter {0} dagar.", + "OptionAllowLinkSharingHelp": "Endast webbsidor med medieinformation delas. Mediefiler delas aldrig publikt. Delningar är tidsbegränsade och upphör efter {0} dagar.", "OptionAllowManageLiveTv": "Tillåt hantering av Live-TV inspelningar", "OptionAllowMediaPlayback": "Tillåt mediauppspelning", "OptionAllowMediaPlaybackTranscodingHelp": "Att förhindra åtkomst till omkodning kan orsaka uppspelningsfel i Jellyfin-appar på grund av mediaformat som inte stöds.", @@ -1257,7 +1257,7 @@ "Watched": "Sedd", "Wednesday": "Onsdag", "WelcomeToProject": "Välkommen till Jellyfin!", - "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", + "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin har börjat samla information om ditt mediebibliotek. Kolla in några av våra appar och klicka sedan på avsluta för att se kontrollpanelen.", "Writer": "Manusförfattare", "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla XML-svar.", "XmlTvKidsCategoriesHelp": "Program med dessa kategorier kommer visas som program för barn. Separerade med '|'.", @@ -1310,8 +1310,8 @@ "HeaderFavoriteShows": "Favoritserier", "HeaderFavoriteBooks": "Favoritböcker", "FormatValue": "Format: {0}", - "CopyStreamURLSuccess": "URL har kopierats.", - "CopyStreamURL": "Kopiera Stream URL", + "CopyStreamURLSuccess": "Videoadress kopierad.", + "CopyStreamURL": "Kopiera videoadress", "FetchingData": "Hämtar ytterligare data", "HeaderFetcherSettings": "Hämtar inställningar", "ButtonAddImage": "Lägg till Bild", @@ -1362,7 +1362,7 @@ "HeaderParentalRatings": "Föräldrabetyg", "HeaderNavigation": "Navigering", "HeaderBranding": "Märke", - "CopyStreamURLError": "Det vart ett fel vid kopiering av URL.", + "CopyStreamURLError": "Kunde inte kopiera videoadress.", "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek.", "Whitelist": "Vitlista", "VideoRange": "Video räckvidd", @@ -1425,7 +1425,7 @@ "MusicLibraryHelp": "Granska {0}musik döpnings guiden{1}.", "MusicArtist": "Musik Artist", "MusicAlbum": "Musik Album", - "MoreMediaInfo": "Media Info", + "MoreMediaInfo": "Medieinformation", "MetadataSettingChangeHelp": "Ändring av metadata inställningar kommer att ske på nytt innehåll som är tillagt framledes. För att uppdatera existerat innehåll, öppna detalj skärmen och tryck på uppdatera knappen, eller utför bulk uppdateringar med metadata hanteraren.", "Metadata": "Metadata", "MessageNoServersAvailable": "Inga servrar har hittats med automatiska server sökningen.", @@ -1435,7 +1435,7 @@ "MessageConfirmAppExit": "Vill du avsluta?", "MediaInfoStreamTypeVideo": "Video", "MediaInfoStreamTypeSubtitle": "Undertext", - "MediaInfoStreamTypeEmbeddedImage": "Inbäddad Bild", + "MediaInfoStreamTypeEmbeddedImage": "Inbäddad bild", "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeAudio": "Ljud", "MediaInfoSoftware": "Mjukvara", @@ -1444,8 +1444,8 @@ "ManageLibrary": "Hantera bibliotek", "Live": "Live", "LeaveBlankToNotSetAPassword": "Du kan lämna detta fält tomt för att inte ange lösenord.", - "LaunchWebAppOnStartupHelp": "Öppna webbgränssnittet i din standardwebbläsare när servern först startar. Detta händer inte om du använder starta om-funktionen.", - "LaunchWebAppOnStartup": "Öppna webbgränssnittet när servern startas", + "LaunchWebAppOnStartupHelp": "Öppna webbgränssnittet i din standardwebbläsare när servern först startar. Detta händer inte när du använder starta om-funktionen.", + "LaunchWebAppOnStartup": "Öppna webbgränssnittet när servern startar", "LanNetworksHelp": "Kommatecken separerad lista på IP adresser eller IP/nätmask inlägg för nätverk som anses vara på lokala nätverket för att tvinga fram bandbredd begränsningar. Om angett, alla andra IP adresser kommer att anses vara på ett externt nätverk och kommer tilldelas till det externa bandbredd begränsningarna. Om lämnat tomt, endast serverns subnet anses vara på det lokala nätverket.", "LabelXDlnaDoc": "X-DLNA-dokumentation:", "LabelXDlnaCap": "X-DLNA-begränsning:", From 90e9dcbee5d56e8af18ad0b29a124c446475d64b Mon Sep 17 00:00:00 2001 From: tluciomiranda Date: Tue, 10 Mar 2020 12:27:44 +0000 Subject: [PATCH 271/449] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 089345ad55..fe2c8bf486 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -768,7 +768,7 @@ "AllowMediaConversion": "Permitir conversão multimédia", "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", "AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real", - "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes para evitar transcodificação. Em certos dispositivos, é uma operação demorada e pode causar paragens de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", + "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes para evitar transcodificação. Em certos dispositivos, esta poderá ser uma operação demorada e pode causar paragens de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", "AllowRemoteAccess": "Permitir ligações remotas a este Jellyfin Server.", "AllowRemoteAccessHelp": "Se inativo, todas as ligações remotas serão bloqueadas.", "AllowedRemoteAddressesHelp": "Lista de IP ou IP/Máscara, separados por vírgulas, com permissão para se ligar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.", From f9ec9e3b52143a669d4c3eebadaff771d5bd51ac Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 18:19:18 +0300 Subject: [PATCH 272/449] Add opened dialog as inputManager event source --- src/scripts/inputManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 2db8aaa56a..772f13b8c7 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -58,7 +58,7 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct sourceElement = focusManager.focusableParent(sourceElement); } - sourceElement = sourceElement || document.activeElement || window; + sourceElement = sourceElement || document.querySelector('.dialogContainer .dialog.opened') || document.activeElement || window; if (eventListenerCount) { var customEvent = new CustomEvent("command", { From 485ccfa11690ced4593dca1fbd853722ff4e6647 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 10 Mar 2020 18:50:31 +0300 Subject: [PATCH 273/449] Prevent nested slideshow --- src/components/slideshow/slideshow.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 40d87e9519..67cae4b6b0 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -188,6 +188,11 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f stopInterval(); }); + // Blur foreign element to prevent starting of "nested" slideshow + if (document.activeElement && !dlg.contains(document.activeElement)) { + document.activeElement.blur(); + } + inputManager.on(window, onInputCommand); document.addEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove); From ed25f0bac1c884a789bbcb0e1df07d35e28d51ec Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> Date: Tue, 10 Mar 2020 19:00:51 +0300 Subject: [PATCH 274/449] Update src/controllers/dashboard/scheduledtasks/scheduledtasks.js Co-Authored-By: Julien Machiels --- src/controllers/dashboard/scheduledtasks/scheduledtasks.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 10ea0538d3..390fd17353 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -92,8 +92,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma function setTaskButtonIcon(button, icon) { var inner = button.querySelector("i"); - inner.classList.remove("stop"); - inner.classList.remove("play_arrow"); + inner.classList.remove("stop", "play_arrow"); inner.classList.add(icon); } From e15823513cf6294e3ae00b17c54ae0261f744893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=84?= Date: Tue, 10 Mar 2020 13:22:09 +0000 Subject: [PATCH 275/449] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 98 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 81 insertions(+), 17 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 46121f9fe2..c7efcc0ea5 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -302,7 +302,7 @@ "LabelCustomRating": "사용자 평점:", "LabelDateAdded": "추가한 날짜:", "LabelDateAddedBehavior": "새 콘텐츠에 대한 날짜 추가 동작:", - "LabelDateAddedBehaviorHelp": "메타데이터에 지정된 값이 있으면 이 옵션에 우선하여 사용합니다.", + "LabelDateAddedBehaviorHelp": "메타데이터에 지정된 값이 있으면 항상 이 옵션들에 우선하여 사용됩니다.", "LabelDay": "날짜:", "LabelDeathDate": "사망일:", "LabelDefaultUser": "기본 사용자:", @@ -310,9 +310,9 @@ "LabelDeviceDescription": "장치 설명", "LabelDidlMode": "DIDL 모드:", "LabelDisplayMissingEpisodesWithinSeasons": "각 시즌의 누락된 에피소드 표시", - "LabelDisplayName": "디스플레이 이름:", - "LabelDisplayOrder": "디스플레이 순서:", - "LabelDisplaySpecialsWithinSeasons": "방송한 시즌 내의 스페셜을 표시합니다", + "LabelDisplayName": "표시 이름:", + "LabelDisplayOrder": "표시 순서:", + "LabelDisplaySpecialsWithinSeasons": "방송한 시즌 내에서 스페셜을 표시합니다", "LabelDownMixAudioScale": "다운믹싱할 때 오디오 증폭:", "LabelDownMixAudioScaleHelp": "다운믹싱할 때 오디오를 증폭합니다. 원래 음량을 유지하려면 1로 설정하세요.", "LabelDownloadLanguages": "다운로드 언어:", @@ -320,7 +320,7 @@ "LabelEmbedAlbumArtDidl": "DIDL에 앨범 아트 삽입", "LabelEnableAutomaticPortMap": "자동 포트 맵핑 사용", "LabelEnableDlnaClientDiscoveryInterval": "클라이언트 탐색 간격 (초)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin이 수행한 SSDP검색 간의 시간 간격(초)을 결정합니다.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin이 수행하는 SSDP 검색 간격(초)을 결정합니다.", "LabelEnableDlnaDebugLogging": "DNLA 디버그 로그 사용", "LabelEnableDlnaDebugLoggingHelp": "매우 큰 로그 파일을 생성합니다. 문제해결을 위해 필요한 경우에만 사용하여야 합니다.", "LabelEnableDlnaPlayTo": "다음에서 DNLA 재생 사용:", @@ -331,7 +331,7 @@ "LabelEnableRealtimeMonitorHelp": "지원하는 파일 시스템에서는 변경 사항이 즉시 실행됩니다.", "LabelEndDate": "종료일 :", "LabelEvent": "이벤트:", - "LabelEveryXMinutes": "매일 :", + "LabelEveryXMinutes": "마다:", "LabelExtractChaptersDuringLibraryScan": "라이브러리를 스캔할 때 챕터 이미지 추출", "LabelExtractChaptersDuringLibraryScanHelp": "라이브러리를 스캔하여 비디오를 가져올 때 챕터 이미지를 생성합니다. 옵션을 끄면 챕터 이미지 예약 작업 중에 생성되어 일반 라이브러리 스캔이 더 빨리 완료될 수 있습니다.", "LabelFailed": "실패", @@ -343,7 +343,7 @@ "LabelGroupMoviesIntoCollections": "컬렉션으로 영화 묶기", "LabelGroupMoviesIntoCollectionsHelp": "영화 목록을 표시할 때 컬렉션에 포함된 영화가 한 개로 묶여진 항목으로 보여줍니다.", "LabelHardwareAccelerationType": "하드웨어 가속:", - "LabelHardwareAccelerationTypeHelp": "지원하는 시스템에서만 사용할 수 있습니다.", + "LabelHardwareAccelerationTypeHelp": "하드웨어 가속은 추가 설정이 필요합니다.", "LabelHttpsPort": "로컬 HTTPS 포트 번호:", "LabelHttpsPortHelp": "Jellyfin의 HTTPS 서버가 바인딩해야하는 TCP포트 번호", "LabelIconMaxHeight": "아이콘 최대 높이:", @@ -366,7 +366,7 @@ "LabelLoginDisclaimer": "로그인 고지사항:", "LabelLoginDisclaimerHelp": "로그인 페이지 하단에 표시할 메세지", "LabelLogs": "로그:", - "LabelManufacturer": "제작사", + "LabelManufacturer": "제작사:", "LabelManufacturerUrl": "제작사 URL", "LabelMaxBackdropsPerItem": "항목별 최대 배경 이미지 수:", "LabelMaxParentalRating": "최대 허용 연령:", @@ -379,7 +379,7 @@ "LabelMetadataDownloadersHelp": "선호하는 메타데이터 다운로더를 우선 순위에 따라 정렬합니다. 낮은 우선 순위의 다운로더는 누락된 정보를 가져오는 데만 사용합니다.", "LabelMetadataPath": "메타데이터 경로:", "LabelMetadataPathHelp": "다운로드한 아트워크와 메타데이터를 저장할 위치를 지정합니다.", - "LabelMetadataSavers": "메타데이터 보호기:", + "LabelMetadataSavers": "메타데이터 저장기:", "LabelMetadataSaversHelp": "메타데이터를 저장할 형식을 선택합니다.", "LabelMethod": "방법:", "LabelMinBackdropDownloadWidth": "다운로드할 배경 이미지 최소 넓이:", @@ -391,7 +391,7 @@ "LabelMonitorUsers": "다음의 활동 모니터링:", "LabelMovieRecordingPath": "영화 녹화 경로 (옵션):", "LabelMusicStreamingTranscodingBitrate": "음악 트랜스코딩 비트레이트:", - "LabelMusicStreamingTranscodingBitrateHelp": "음악 스트리밍 시 최대 비트 전송률 지정", + "LabelMusicStreamingTranscodingBitrateHelp": "음악 스트리밍 시 최대 비트 전송률을 지정합니다.", "LabelName": "이름:", "LabelNewName": "새 이름:", "LabelNewPassword": "새 비밀번호:", @@ -455,7 +455,7 @@ "LabelTrackNumber": "트랙 번호:", "LabelTranscodingAudioCodec": "오디오 코덱:", "LabelTranscodingContainer": "컨테이너:", - "LabelTranscodingTempPathHelp": "", + "LabelTranscodingTempPathHelp": "클라이언트로 제공될 트랜스코딩 파일이 위치한 사용자 경로를 설정합니다. 서버 기본값을 사용하려면 공백으로 두십시오.", "LabelTranscodingVideoCodec": "비디오 코덱:", "LabelTriggerType": "트리거 종류:", "LabelTunerIpAddress": "튜너 IP 주소:", @@ -472,7 +472,7 @@ "LabelYoureDone": "완료!", "LabelZipCode": "우편 번호:", "LibraryAccessHelp": "이 사용자와 공유할 라이브러리를 선택합니다. 관리자는 메타데이터 관리자를 사용하여 모든 폴더를 수정할 수 있습니다.", - "Like": "좋아함", + "Like": "좋아요", "Live": "라이브", "MaxParentalRatingHelp": "더 높은 연령 등급의 콘텐츠가 이 사용자에게 표지 되지 않습니다.", "MediaInfoAnamorphic": "아나몰픽", @@ -1011,7 +1011,7 @@ "MediaInfoSoftware": "소프트웨어", "MediaInfoTimestamp": "타임스탬프", "MediaInfoSize": "크기", - "MediaInfoLevel": "레벨", + "MediaInfoLevel": "수준", "MediaInfoForced": "강제", "MarkUnplayed": "재생하지 않은 것으로 표시", "MarkPlayed": "재생한 것으로 표시", @@ -1023,7 +1023,7 @@ "LearnHowYouCanContribute": "당신이 기여할 수 있는 방법을 배우십시오.", "LeaveBlankToNotSetAPassword": "비밀번호를 설정하지 않으려면 빈칸으로 두십시오.", "LabelffmpegPath": "FFmpeg 경로:", - "LabelWeb": "웹: ", + "LabelWeb": "웹:", "LabelVideoCodec": "비디오 코덱:", "LabelVideoBitrate": "비디오 비트레이트:", "LabelVideo": "비디오:", @@ -1109,7 +1109,7 @@ "MessageNoServersAvailable": "자동 서버 탐색을 사용했지만, 서버가 발견되지 않았습니다.", "MessageDownloadQueued": "다운로드 대기 중.", "MessageDirectoryPickerInstruction": "네트워크 버튼으로 장치를 찾지 못하면 네트워크 경로를 수동으로 입력할 수 있습니다. 예를 들어, {0} 또는 {1}.", - "MessageDirectoryPickerLinuxInstruction": "Linux on Arch Linux, CentOS, Debian, Fedora, OpenSuse, Ubuntu의 경우 서비스 사용자에게 최소한 저장 위치에 대한 읽기 권한을 부여해야 합니다.", + "MessageDirectoryPickerLinuxInstruction": "Linux on Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu의 경우 서비스 사용자에게 최소한 저장 위치에 대한 읽기 권한을 부여해야 합니다.", "MessageDirectoryPickerBSDInstruction": "BSD의 경우, Jellyfin이 FreeNAS Jail에 액세스할 수 있도록 하려면 FreeNAS Jail 내에 스토리지를 구성해야 할 수도 있습니다.", "LinksValue": "링크: {0}", "LatestFromLibrary": "최근 {0}", @@ -1126,7 +1126,7 @@ "LabelSortBy": "정렬 기준:", "LabelBaseUrl": "기본 URL:", "LabelEnableHardwareDecodingFor": "다음에서 하드웨어 디코딩 활성화:", - "LabelDisplayMode": "디스플레이 모드:", + "LabelDisplayMode": "표시 모드:", "LabelBindToLocalNetworkAddress": "로컬 네트워크 주소로 바인드:", "LabelAutomaticallyRefreshInternetMetadataEvery": "인터넷에서 자동으로 메타데이터를 리프레시:", "LabelAuthProvider": "인증 제공자:", @@ -1315,5 +1315,69 @@ "HeaderDirectPlayProfileHelp": "디바이스가 원본 재생할 수 있는 파일 형식을 표시하기 위해 다이렉트 재생 프로파일을 추가합니다.", "Extras": "기타 항목", "AllowFfmpegThrottlingHelp": "트랜스코딩이나 리먹스 작업이 현재 재생 중인 위치를 넘어 충분히 진행되면 리소스를 절약하기 위해 작업을 중지합니다. 이는 재생 구간을 자주 변경하지 않을 경우에 가장 적합합니다. 재생 시 문제가 발생하면 이 항목을 비활성화하십시오.", - "AllowFfmpegThrottling": "트랜스코딩 시 스로틀링" + "AllowFfmpegThrottling": "트랜스코딩 시 스로틀링", + "MessageLeaveEmptyToInherit": "상위 항목의 설정이나 전역 설정값을 그대로 적용하기 위해서는 공백으로 두십시오.", + "MessageInstallPluginFromApp": "이 플러그인은 사용할 앱 내부에서 설치해야 합니다.", + "MessageImageTypeNotSelected": "드롭다운 메뉴에서 이미지 유형을 선택하십시오.", + "MessageCreateAccountAt": "{0}에서 계정 만들기", + "MessageConfirmRevokeApiKey": "정말 api 키를 무효화하시겠습니까? Jellyfin 서버와의 연결이 예고 없이 중단될 수 있습니다.", + "MessageConfirmAppExit": "종료하시겠습니까?", + "MediaIsBeingConverted": "미디어가 재생 중인 디바이스와 호환되는 형식으로 변환되는 중입니다.", + "MediaInfoRefFrames": "참조 프레임", + "MediaInfoPixelFormat": "픽셀 형식", + "MapChannels": "채널 매핑", + "LaunchWebAppOnStartupHelp": "서버가 처음 시작되면 웹 브라우저에서 웹 클라이언트를 실행하십시오. 서버 재시작의 경우에는 적용되지 않습니다.", + "Large": "큰", + "LanNetworksHelp": "대역폭을 강제로 제한할 때 로컬 네트워크로 간주되는 쉼표로 구분된 IP 주소 및 IP/서브넷 마스크 목록입니다. 지정될 경우 모든 다른 IP 주소는 외부 네트워크로 간주되며 외부 대역폭 제한이 적용됩니다. 공백일 경우 서버의 서브넷만이 로컬 네트워크로 간주됩니다.", + "LabelffmpegPathHelp": "ffmpeg 실행 파일 혹은 ffmpeg를 포함하는 폴더 경로입니다.", + "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNADOC 요소의 내용을 결정합니다.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNACAP 요소의 내용을 결정합니다.", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelVideoResolution": "비디오 해상도:", + "LabelTVHomeScreen": "TV 모드 홈 화면:", + "LabelStreamType": "스트리밍 유형:", + "LabelSpecialSeasonsDisplayName": "스페셜 시즌 표시명:", + "LabelSonyAggregationFlagsHelp": "urn:schemas-sonycom:av 네임스페이스에 포함된 집계 플래그(aggregationFlags) 요소의 내용을 결정합니다.", + "LabelSonyAggregationFlags": "Sony 집계 플래그:", + "LabelSkipIfGraphicalSubsPresentHelp": "텍스트 형식의 자막은 전송이 더 효율적이며 비디오 트랜스코딩이 필요할 가능성이 적습니다.", + "LabelSkipIfGraphicalSubsPresent": "비디오에 내장 자막이 있으면 건너뛰기", + "LabelSkipIfAudioTrackPresentHelp": "오디오 언어와 상관없이 모든 비디오가 자막을 갖추도록 하려면 이 항목을 체크하지 마십시오.", + "LabelSelectFolderGroupsHelp": "체크되지 않은 폴더는 폴더 고유의 보기 방식으로 표시됩니다.", + "LabelSelectFolderGroups": "자동으로 이하의 폴더의 항목을 영화, 음악, TV 등의 보기 방식으로 정렬:", + "EnableFastImageFadeInHelp": "로드된 이미지에 더 빠른 페이드 인 효과를 적용", + "EnableFastImageFadeIn": "빠른 이미지 페이드 인 효과", + "LabelScheduledTaskLastRan": "최근 실행: {0}, 소모시간: {1}.", + "LabelRemoteClientBitrateLimitHelp": "(선택) 모든 외부 네트워크로 접속된 장치들에 적용되는 각 스트리밍별 비트레이트 제한입니다. 이는 서버의 인터넷이 처리할 수 있는 한계보다 더 높은 비트레이트를 요청하는 것을 방지할 수 있습니다. 비디오를 더 낮은 비트레이트로 트랜스코딩하기 위해 서버에 높은 CPU 부하를 줄 수 있습니다.", + "LabelReasonForTranscoding": "트랜스코딩 원인:", + "LabelProtocolInfoHelp": "디바이스에서 GetProtocolInfo 요청을 처리할 때 사용될 값입니다.", + "LabelPostProcessorArguments": "후처리 명령어:", + "LabelOptionalNetworkPathHelp": "이 폴더가 네트워크 공유 폴더라면 네트워크 공유 경로를 제공하여 Jellyfin 클라이언트가 미디어 파일에 직접 접속하도록 설정할 수 있습니다.", + "LabelMoviePrefixHelp": "영화 제목에 접두사가 적용되었다면 서버가 제대로 처리할 수 있도록 여기에 입력하십시오.", + "LabelMoviePrefix": "영화 접두사:", + "LabelMinResumePercentageHelp": "이 비율을 넘기 전에 정지되면 재생되지 않은 것으로 간주됩니다.", + "LabelMinResumePercentage": "최소 이어보기 재생률:", + "LabelMinResumeDurationHelp": "재생 위치를 저장해서 나중에 이어보기 위한 최소 비디오 길이(초)를 설정합니다.", + "LabelMinResumeDuration": "최소 이어보기 시간:", + "LabelMetadataReadersHelp": "선호하는 순으로 로컬 메타데이터 우선순위를 결정하십시오. 가장 먼저 발견된 파일을 읽어옵니다.", + "LabelMetadataReaders": "메타데이터 리더:", + "LabelMaxResumePercentageHelp": "이 비율을 넘었을 때 정지되면 완전히 재생된 것으로 간주됩니다.", + "LabelMaxResumePercentage": "최대 이어보기 진행률:", + "LabelMatchType": "일치 유형:", + "LabelKodiMetadataSaveImagePathsHelp": "Kodi 가이드라인에 어긋나는 파일명을 가진 이미지가 있을 때 권장되는 설정입니다.", + "LabelKodiMetadataEnablePathSubstitutionHelp": "서버의 경로 대체 설정을 이용하여 이미지 경로 대체를 활성화합니다.", + "LabelKodiMetadataEnablePathSubstitution": "경로 대체 활성화", + "LabelKodiMetadataEnableExtraThumbsHelp": "이미지를 다운로드할 때는 Kodi 스킨과의 최대한의 호환성을 위해 추가 팬아트와 추가 섬네일 중 어느 형식으로도 저장될 수 있습니다.", + "LabelKodiMetadataEnableExtraThumbs": "추가 팬아틀 추가 섬네일 필드로 복사하기", + "LabelKeepUpTo": "대기 한계:", + "LabelHomeScreenSectionValue": "홈 화면 영역 {0}:", + "LabelBaseUrlHelp": "서버에 더 세부적인 URL로 접속하려면 여기에 서브 디렉토리를 추가하십시오.", + "LabelEnableSingleImageInDidlLimitHelp": "Dili 내에 여러 이미지가 삽입되면 일부 디바이스가 제대로 작동하지 않을 수 있습니다.", + "LabelEnableSingleImageInDidlLimit": "하나의 내장 이미지로 제한", + "LabelEnableBlastAliveMessagesHelp": "네트워크 상의 다른 UPnP 장치가 안정적으로 발견되지 않는다면 이 옵션을 활성화하십시오.", + "LabelEnableAutomaticPortMapHelp": "UPnp를 통해 로컬 포트를 외부 포트에 자동으로 매핑하도록 시도합니다. 일부 공유기 기종에서는 지원하지 않을 수 있습니다. 변경사항을 적용하려면 서버를 다시 시작하십시오.", + "LabelEmbedAlbumArtDidlHelp": "일부 디바이스는 앨범아트를 얻을 때 이 방법을 선호합니다. 다른 디바이스에서는 실패할 수 있습니다.", + "LabelDefaultScreen": "기본 화면:", + "LabelDateTimeLocale": "날짜/시간 로케일:", + "XmlTvPathHelp": "XMLTV 파일을 저장할 경로를 설정합니다. Jellyfin은 이 파일을 읽어 주기적으로 변경 사항을 확인합니다. 파일 생성 및 파일 업데이트는 사용자가 수동으로 해야 합니다." } From f1065a3045ec7dbe570dc3f8c85bd46eea61e47c Mon Sep 17 00:00:00 2001 From: tluciomiranda Date: Tue, 10 Mar 2020 12:29:13 +0000 Subject: [PATCH 276/449] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 72 ++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index fe2c8bf486..c8e20fd063 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -134,8 +134,8 @@ "HeaderConfirmProfileDeletion": "Confirmar Remoção do Perfil", "HeaderConfirmRevokeApiKey": "Revogar Chave da API", "HeaderConnectToServer": "Ligar ao Servidor", - "HeaderContainerProfile": "Perfil do Container", - "HeaderContainerProfileHelp": "Perfis do Container indicam as limitações de um dispositivo ao reproduzir formatos específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o formato estiver configurado para reprodução direta.", + "HeaderContainerProfile": "Perfil do Contentor", + "HeaderContainerProfileHelp": "Perfis do contentor indicam as limitações de um dispositivo ao reproduzir formatos específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o formato estiver configurado para reprodução direta.", "HeaderContinueWatching": "Continuar a Ver", "HeaderCustomDlnaProfiles": "Perfis Personalizados", "HeaderDateIssued": "Data da Emissão", @@ -184,7 +184,7 @@ "HeaderMediaFolders": "Pastas Multimédia", "HeaderMediaInfo": "Informações Multimédia", "HeaderMetadataSettings": "Configurações de Metadados", - "HeaderMusicVideos": "Vídeos de Música", + "HeaderMusicVideos": "Videoclips", "HeaderMyMedia": "O Meu Conteúdo", "HeaderNewApiKey": "Nova Chave da API", "HeaderNextUp": "A Seguir", @@ -351,7 +351,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar filmes em coleções", "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, filmes que pertençam a uma coleção serão mostrados como um único item agrupado.", "LabelHardwareAccelerationType": "Aceleração por hardware:", - "LabelHardwareAccelerationTypeHelp": "Aceleração via Hardware requer configurações adicionais.", + "LabelHardwareAccelerationTypeHelp": "Aceleração via hardware requer configurações adicionais.", "LabelHttpsPort": "Número do porto HTTPS local:", "LabelHttpsPortHelp": "Número do porto TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", "LabelIconMaxHeight": "Altura máxima do ícone:", @@ -367,7 +367,7 @@ "LabelKodiMetadataDateFormatHelp": "Todas as datas presentes em ficheiros NFO serão analisadas utilizando este formato.", "LabelKodiMetadataEnableExtraThumbs": "Copiar o parâmetro extrafanart para extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Ao transferir imagens, estas podem ser guardadas como extrafanart e extrathumbs para uma maior compatibilidade com os temas Kodi.", - "LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local", + "LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de localização", "LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição da localização das imagens usando as opções de substituição de localização no servidor.", "LabelKodiMetadataSaveImagePaths": "Guardar a localização de imagens em ficheiros nfo", "LabelKodiMetadataSaveImagePathsHelp": "Esta opção é recomendada se existirem nomes de imagens que não estejam de acordo com as recomendações do Kodi.", @@ -430,7 +430,7 @@ "LabelProfileAudioCodecs": "Codecs do áudio:", "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", "LabelProfileContainer": "Contentor:", - "LabelProfileContainersHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os containers.", + "LabelProfileContainersHelp": "Separados por vírgula. Pode ser deixado em branco para ser aplicado a todos os containers.", "LabelProfileVideoCodecs": "Codecs do vídeo:", "LabelProtocol": "Protocolo:", "LabelProtocolInfo": "Informação do protocolo:", @@ -444,8 +444,8 @@ "LabelReleaseDate": "Data de lançamento:", "LabelRemoteClientBitrateLimit": "Taxa de bits máxima para transmissão para a Internet (Mbps):", "LabelRuntimeMinutes": "Duração (minutos):", - "LabelSaveLocalMetadata": "Guardar imagens e metadados nas pastas multimédia", - "LabelSaveLocalMetadataHelp": "Guardar imagens e metadados diretamente nas pastas multimédia, vai colocá-los num local de fácil acesso para poderem ser editados facilmente.", + "LabelSaveLocalMetadata": "Guardar capas de álbum nas pastas multimédia", + "LabelSaveLocalMetadataHelp": "Guardar capas de álbum diretamente nas pastas multimédia, vai colocá-las num local de fácil acesso para edição.", "LabelScheduledTaskLastRan": "Última execução há {0}. Tempo de execução {1}.", "LabelSeasonNumber": "Número da temporada:", "LabelSelectUsers": "Selecionar utilizadores:", @@ -577,7 +577,7 @@ "OptionDownloadPrimaryImage": "Principal", "OptionDownloadThumbImage": "Miniatura", "OptionDvd": "DVD", - "OptionEmbedSubtitles": "Incorporar no recipiente", + "OptionEmbedSubtitles": "Incorporar no contentor", "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", @@ -670,7 +670,7 @@ "Save": "Guardar", "ScanLibrary": "Analisar biblioteca", "Search": "Busca", - "SearchForCollectionInternetMetadata": "Procurar na Internet por imagens e metadados", + "SearchForCollectionInternetMetadata": "Procurar na Internet por capas de álbum e metadados", "SearchForSubtitles": "Procurar Legendas", "SendMessage": "Enviar mensagem", "Series": "Séries", @@ -780,7 +780,7 @@ "AspectRatio": "Proporção", "AuthProviderHelp": "Selecione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.", "Auto": "Automático", - "AutoBasedOnLanguageSetting": "Auomático (baseado no idioma definido)", + "AutoBasedOnLanguageSetting": "Automático (baseado no idioma definido)", "BirthDateValue": "Nascimento: {0}", "BirthPlaceValue": "Local de nascimento: {0}", "Blacklist": "Lista Negra", @@ -1180,17 +1180,17 @@ "MediaInfoLevel": "Nível", "Banner": "Insígnia", "Desktop": "Desktop", - "DetectingDevices": "Procurando dispositivos", - "CopyStreamURL": "Copiar URL da corrente", + "DetectingDevices": "A procurar dispositivos", + "CopyStreamURL": "Copiar URL da transmissão", "Disc": "Disco", - "EnableBackdrops": "Pano de fundo", - "HeaderRestartingServer": "Reiniciando o servidor", + "EnableBackdrops": "Imagens de Fundo", + "HeaderRestartingServer": "A reiniciar o Servidor", "HeaderTags": "Etiquetas", "LabelLogs": "Registos:", "LabelSortTitle": "Título para ordenação:", - "HeaderFavoritePeople": "Pessoas favoritas", + "HeaderFavoritePeople": "Pessoas Favoritas", "HeaderFetcherSettings": "Definições do fornecedor", - "HeaderKodiMetadataHelp": "Para activar ou desactiver metadados NFO, use a secção de metadados disponível na página de configurações da biblioteca.", + "HeaderKodiMetadataHelp": "Para ativar ou desativar metadados NFO, utilize a secção de metadados disponível na página de configurações da biblioteca.", "HeaderTypeImageFetchers": "{0} fornecedores de imagens", "LabelImageFetchersHelp": "Active e ordene os fornecedores de imagens por ordem de preferência.", "LabelKodiMetadataUserHelp": "Autorizar que outras aplicações usem dados de visualização gaurdados em ficheiros NFO.", @@ -1203,15 +1203,15 @@ "HeaderSubtitleDownloads": "Transferir legendas", "LabelRecord": "Gravação:", "LabelSkin": "Máscara:", - "LabelMetadataDownloadersHelp": "Active e ordene os seus provedores de metadados por ordem de preferência. Provedores com menos prioriadade só serão usados para completar informação em falta.", - "LabelMetadataReadersHelp": "Ordene as suas fontes preferidas de metadados por ordem de preferência. O primeiro ficheiro encontrado será utilizado.", + "LabelMetadataDownloadersHelp": "Ative e ordene os seus provedores de metadados por ordem de preferência. Provedores com menos prioridade só serão usados para completar informação em falta.", + "LabelMetadataReadersHelp": "Ordene as suas fontes de metadados por ordem de preferência. O primeiro ficheiro encontrado será utilizado.", "LabelMetadataReaders": "Provedores de metadados:", "LabelPasswordResetProvider": "Provedor de redefinição da palavra-passe:", "LabelSortOrder": "Sequência de ordenação:", "LabelKodiMetadataUser": "Guardar dados de visualização em ficheiros NFO:", "HeaderCastAndCrew": "Elenco e Equipa", - "HeaderAdmin": "Administrar", - "HeaderAppearsOn": "Present em", + "HeaderAdmin": "Gerir o Servidor", + "HeaderAppearsOn": "Presente em", "LabelSortBy": "Ordenar por:", "LabelSpecialSeasonsDisplayName": "Nome da temporada especial:", "StopRecording": "Parar gravação", @@ -1267,7 +1267,7 @@ "ValueSeconds": "{0} segundos", "ValueOneSong": "1 música", "ValueOneSeries": "1 série", - "ValueOneMusicVideo": "1 vídeo de música", + "ValueOneMusicVideo": "1 videoclip", "ValueOneMovie": "1 filme", "ValueOneEpisode": "1 episódio", "Yesterday": "Ontem", @@ -1339,7 +1339,7 @@ "NewEpisodes": "Novos episódios", "Never": "Nunca", "Name": "Nome", - "MusicVideo": " Vídeo de Música", + "MusicVideo": "Videoclip", "MusicArtist": "Artista de Música", "MusicAlbum": " Álbum de Música", "MoreMediaInfo": "Informações", @@ -1350,7 +1350,7 @@ "Whitelist": "Lista branca", "VideoRange": "Alcance video", "ValueOneAlbum": "1 álbum", - "ValueMusicVideoCount": "{0} videoclipes musicais", + "ValueMusicVideoCount": "{0} videoclips", "ValueMovieCount": "{0} filmes", "ValueMinutes": "{0} min", "ValueEpisodeCount": "{0} episódios", @@ -1361,16 +1361,16 @@ "Upload": "Carregar", "Up": "Cima", "Unrated": "Sem avaliação", - "Transcoding": "Transcodificando", - "Trailers": "Videoclipes", + "Transcoding": "Transcodificação", + "Trailers": "Trailers", "TitleHostingSettings": "Configurações de Hospedagem", "Thumb": "Miniatura", "ThemeVideos": "Vídeos de tema", "ThemeSongs": "Músicas de tema", "TagsValue": "Etiquetas: {0}", "Tags": "Etiquetas", - "TabTrailers": "Videoclipes", - "TabResumeSettings": "Resumir", + "TabTrailers": "Trailers", + "TabResumeSettings": "Retomar", "TabLogs": "Logs", "TabInfo": "Info", "TabCodecs": "Codecs", @@ -1436,15 +1436,25 @@ "LabelTVHomeScreen": "TV modo ecrã de casa:", "LabelSubtitleDownloaders": "Transferência de legendas:", "LabelParentNumber": "Número fonte:", - "LabelMetadataSavers": "Gravadores de metadados:", + "LabelMetadataSavers": "Formatos de Gravação de Metadados:", "LabelAudioBitDepth": "Áudio bit quantidade:", "HeaderNavigation": "Navegação", "EnableStreamLooping": "Auto-cíclico de streams ao vivo", "Down": "Baixo", "CopyStreamURLError": "Ocorreu um erro a copiar o URL.", "ButtonSplit": "Dividir", - "NoCreatedLibraries": "Oh Não! Parece que você ainda não criou nenhuma biblioteca por enquanto. {0} Gostaria de criar uma biblioteca agora? {1}", + "NoCreatedLibraries": "Parece que ainda não foi criada nenhuma biblioteca por enquanto. {0} Gostaria de criar uma biblioteca agora? {1}", "AskAdminToCreateLibrary": "Pergunte a um administrador para criar uma biblioteca.", "LabelVideoResolution": "Resolução de vídeo:", - "LabelPlayerDimensions": "Dimensões de leitor:" + "LabelPlayerDimensions": "Dimensões de leitor:", + "OptionLoginAttemptsBeforeLockoutHelp": "O valor zero significa herdar a definição por defeito de três tentativas para utilizadores comuns e cinco para administradores. Definir este campo como -1 desativa esta funcionalidade.", + "OptionDisplayFolderViewHelp": "Mostrar pastas juntamente com outras bibliotecas multimédia. Pode ser útil caso pretenda ter uma vista simples das pastas.", + "OptionForceRemoteSourceTranscoding": "Forçar transcodificação de fontes remotas de multimédia (LiveTV, por exemplo)", + "LabelStreamType": "Tipo de transmissão:", + "LabelDroppedFrames": "Fotogramas descartados:", + "LabelCorruptedFrames": "Fotogramas corrompidos:", + "AllowFfmpegThrottlingHelp": "Suspende o processo de transcodificação assim que este avance o suficiente após o ponto de reprodução atual, para poupança de recursos. Esta funcionalidade é mais útil quando a reprodução é maioritariamente contínua, sem avançar ou recuar manualmente. Desative esta opção caso haja problemas de reprodução.", + "AllowFfmpegThrottling": "Reduzir Taxa de Transcodificação", + "PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título a apresentar por defeito quando não é possível carregar metadados locais nem da Internet.", + "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin." } From 5bbedd2e398943229b20813aa9eed4364492c932 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 10 Mar 2020 12:58:31 +0000 Subject: [PATCH 277/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index b203d1d1b8..c89239ca89 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -290,7 +290,7 @@ "CustomDlnaProfilesHelp": "Ustvari prilagojen profil za novo napravo ali preglasi sistemski profil.", "CopyStreamURLSuccess": "URL uspešno kopiran.", "CopyStreamURL": "Kopiraj URL pretakanja", - "ButtonSubmit": "Oddaj", + "ButtonSubmit": "Pošli", "ButtonAddImage": "Dodaj sliko", "ValueSpecialEpisodeName": "Poseben - {0}", "Shows": "Serije", @@ -502,7 +502,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Prišlo je do težave pri dodajanju poti predstavnosti. Preverite ali je pot veljavna in da ima Jellyfin strežnik dovoljenja za dostop.", "Episodes": "Epizode", "EndsAtValue": "Konec ob {0}", - "Ended": "Zaključeno", + "Ended": "Končano", "EnableThemeVideosHelp": "Predvajaj tematske videe v ozadju med brskanjem knjižnice.", "EnableThemeVideos": "Tematski videi", "EnableThemeSongsHelp": "Predvajaj tematske pesmi v ozadju med brskanjem knjižnice.", @@ -1161,7 +1161,7 @@ "LabelNotificationEnabled": "Omogoči to obvestilo", "CopyStreamURLError": "Pri kopiranju naslova URL je prišlo do napake.", "AskAdminToCreateLibrary": "Prosite skrbnika, da ustvari knjižnico.", - "AllowFfmpegThrottlingHelp": "Ko je napredek prekodiranja dovolj pred mestom predvajanja se proces ustavi in porablja manj sredstev. To je najbolj uporabno pri gledanju brez pogostega premikanja mesta predvajanja. Če naletite na težave s predvajanjem onemogočite to možnost.", + "AllowFfmpegThrottlingHelp": "Ko je prekodiranja dovolj pred mestom predvajanja se proces ustavi, da bo porabljal manj sredstev. To je najbolj uporabno pri gledanju brez pogostega premikanja mesta predvajanja. Če naletite na težave s predvajanjem onemogočite to možnost.", "AllowFfmpegThrottling": "Zaviraj prekodiranje", "LabelStreamType": "Vrsta pretakanja:", "LabelStopping": "Ustavljanje", From 202adf7aaf730782fe02f9c48bc4f5af2a10ad4e Mon Sep 17 00:00:00 2001 From: zixaar Date: Tue, 10 Mar 2020 16:19:05 +0000 Subject: [PATCH 278/449] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 38a8d51203..18ceb61dea 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -167,7 +167,7 @@ "HeaderConnectionFailure": "فشل في الاتصال", "HeaderContainerProfile": "عريضة الحاوية", "HeaderContainerProfileHelp": "عرائض الحاويات تشير إلى محدوديات جهاز ما عند تشغيل صيغ معينة. إن كان هناك أي محدودية مذكورة فستحال الوسيطة إلى التشغير البيني، حتى لو كانت الصيغة مضبوطة للعمل بتلقائية.", - "HeaderContinueWatching": "استئناف المشاهدة", + "HeaderContinueWatching": "استئناف", "HeaderCustomDlnaProfiles": "الحسابات المخصوصة", "HeaderDateIssued": "تاريخ الإصدار", "HeaderDefaultRecordingSettings": "إعدادات التسجيل الافتراضية", @@ -922,9 +922,9 @@ "ValueSpecialEpisodeName": "مميز - {0}", "HeaderFavoriteAlbums": "الألبومات المفضلة", "HeaderAlbumArtists": "فناني الألبومات", - "Genres": "أنواع الأفلام", + "Genres": "الأنواع", "Folders": "المجلدات", - "Favorites": "التفضيلات", + "Favorites": "المفضلة", "Collections": "مجموعات", "Categories": "التصنيفات", "CancelSeries": "الغاء المسلسل", @@ -949,7 +949,7 @@ "AspectRatio": "نسبة العرض الى الارتفاع", "Ascending": "تصاعدي", "AsManyAsPossible": "أكبر عدد ممكن", - "Artists": "الفنان", + "Artists": "الفنانين", "Art": "فن", "Anytime": "اي وقت", "AnyLanguage": "اي لغة", From 3384f850efde800a5e124ee964dcff9855c61585 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Wed, 11 Mar 2020 09:39:08 +0100 Subject: [PATCH 279/449] Fixed links described by #925 --- src/dlnasettings.html | 2 +- src/networking.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dlnasettings.html b/src/dlnasettings.html index 872d546a53..8068acf5ab 100644 --- a/src/dlnasettings.html +++ b/src/dlnasettings.html @@ -8,7 +8,7 @@

${TabSettings}

- ${Help} + ${Help}
diff --git a/src/networking.html b/src/networking.html index f7a185b743..1352e0ef5f 100644 --- a/src/networking.html +++ b/src/networking.html @@ -5,7 +5,7 @@

${TabNetworking}

- ${Help} + ${Help}
From a44473dca2495aa08ed680125cf4d82ed633bf88 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 11 Mar 2020 15:04:29 +0300 Subject: [PATCH 280/449] Fix radiobutton change notification --- src/elements/emby-radio/emby-radio.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 9b91591050..7cba80fdad 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -9,7 +9,13 @@ define(['css!./emby-radio', 'registerElement'], function () { if (e.keyCode === 13) { e.preventDefault(); - this.checked = true; + if (!this.checked) { + this.checked = true; + + this.dispatchEvent(new CustomEvent('change', { + bubbles: true + })); + } return false; } From dc4fada8276c0b1f23e37c549664da741326bc70 Mon Sep 17 00:00:00 2001 From: Mark Monteiro Date: Wed, 11 Mar 2020 15:10:31 +0100 Subject: [PATCH 281/449] Do not validate HTTPS certificate settings when remote connections are disabled --- src/controllers/dashboard/networking.js | 3 ++- yarn.lock | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index b9f990d629..c0e4d76d0d 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -90,10 +90,11 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], } function validateHttps(form) { + var remoteAccess = form.querySelector("#chkRemoteAccess").checked; var certPath = form.querySelector("#txtCertificatePath").value || null; var httpsMode = form.querySelector("#selectHttpsMode").value; - if ("enabled" !== httpsMode && "required" !== httpsMode || certPath) { + if (!remoteAccess || ("enabled" !== httpsMode && "required" !== httpsMode || certPath)) { return Promise.resolve(); } diff --git a/yarn.lock b/yarn.lock index f156002c6d..a3df41e1af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3519,6 +3519,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -4609,6 +4614,13 @@ 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== +page@^1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/page/-/page-1.11.5.tgz#0cfc8608be337f26f4377f31df0787aef0ca1af7" + integrity sha512-0JXUHc7Y8p1cPJQbhZSwaKO3p+bU3Rgny+OM5gJMKHWHvJKan/fsE5RUzEjRQolv9DzPOSVWfSOHz0lLxK19eA== + dependencies: + path-to-regexp "~1.2.1" + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -4739,6 +4751,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.2.1.tgz#b33705c140234d873c8721c7b9fd8b541ed3aff9" + integrity sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k= + dependencies: + isarray "0.0.1" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" From 9318a670ad125e0f246748fd831f86ffa227aeab Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Wed, 11 Mar 2020 10:50:26 +0000 Subject: [PATCH 282/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index df6799966c..a6c2a14da2 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -145,7 +145,7 @@ "HeaderDeviceAccess": "Eszköz Hozzáférések", "HeaderDevices": "Eszközök", "HeaderDisplay": "Megjelenítés", - "HeaderDownloadSync": "Letöltés & Sync", + "HeaderDownloadSync": "Letöltés és szinkronizálás", "HeaderEasyPinCode": "Pin kód", "HeaderEditImages": "Képek szerkesztése", "HeaderEnabledFields": "Engedélyezett mezők", @@ -1113,7 +1113,7 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionContinuing": "Folytatva", "OptionDateAddedImportTime": "Használja a könyvtárba beolvasási dátumot", - "OptionDisableUserHelp": "Ha letiltod, a szerver nem engedélyezi a felhasználó csatlakozását. A meglévő kapcsolatok hirtelen megszűnnek.", + "OptionDisableUserHelp": "Ha letiltod, a szerver nem engedélyezi a felhasználó csatlakozását. A meglévő kapcsolatok azonnal megszűnnek.", "OptionDisplayFolderView": "Az egyszerű média mappák mappanézetének megjelenítése", "OptionDisplayFolderViewHelp": "Jelenítse meg a mappákat a többi médiakönyvtár mellett. Ez hasznos lehet, ha egyszerű mappa nézeteket szeretnél látni.", "OptionDownloadImagesInAdvance": "Képek előzetes letöltése", From 30414c98d7dc880845d2f293579e5a901676b141 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 11 Mar 2020 22:19:26 +0300 Subject: [PATCH 283/449] Fix radio and checkbox on Tizen --- src/elements/emby-checkbox/emby-checkbox.js | 3 ++- src/elements/emby-radio/emby-radio.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index 2e49a2d185..b5e587d5a6 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -5,7 +5,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b function onKeyDown(e) { // Don't submit form on enter - if (e.keyCode === 13) { + // Real (non-emulator) Tizen does nothing on Space + if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault(); this.checked = !this.checked; diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 7cba80fdad..000c656822 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -6,7 +6,8 @@ define(['css!./emby-radio', 'registerElement'], function () { function onKeyDown(e) { // Don't submit form on enter - if (e.keyCode === 13) { + // Real (non-emulator) Tizen does nothing on Space + if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault(); if (!this.checked) { From 8646b66f6ccbd6b1cba823e4ba1fbbb6491bf033 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 11 Mar 2020 21:31:04 +0100 Subject: [PATCH 284/449] Improve image size handling --- src/components/cardbuilder/cardBuilder.js | 3 +-- src/components/cardbuilder/chaptercardbuilder.js | 2 +- src/components/dom.js | 4 ++-- src/controllers/auth/login.js | 2 +- src/controllers/dashboard/dashboard.js | 8 ++++---- src/controllers/playback/videoosd.js | 12 ++++++------ src/controllers/userprofilespage.js | 2 +- src/libraries/apiclient/apiclient.js | 4 ++-- src/libraries/apiclient/apiclientcore.js | 5 ++--- src/libraries/apiclient/connectionmanager.js | 4 ++-- src/scripts/site.js | 4 ++-- 11 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index c20f6999f9..6cdbf55149 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -2,7 +2,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts, imageHelper) { 'use strict'; - var devicePixelRatio = window.devicePixelRatio || 1; var enableFocusTransform = !browser.slow && !browser.edge; function getCardsHtml(items, options) { @@ -592,7 +591,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana }); } else if (item.AlbumId && item.AlbumPrimaryImageTag) { - width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null; + height = width && primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null; imgUrl = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 02d583abc0..16326b6c59 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -68,7 +68,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse return apiClient.getScaledImageUrl(item.Id, { - maxWidth: maxWidth, + maxWidth: maxWidth * 2, tag: chapter.ImageTag, type: "Chapter", index: index diff --git a/src/components/dom.js b/src/components/dom.js index a000373b6d..bdd7d5d95f 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -114,8 +114,8 @@ define([], function () { var standardWidths = [480, 720, 1280, 1440, 1920, 2560, 3840, 5120, 7680]; function getScreenWidth() { - var width = window.innerWidth * window.devicePixelRatio; - var height = window.innerHeight * window.devicePixelRatio; + var width = window.innerWidth; + var height = window.innerHeight; if (height > width) { /* If we're in portrait, compute the proper width for this height, diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index a97f2e849d..4296b8bfb3 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -106,7 +106,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout if (user.PrimaryImageTag) { imgUrl = apiClient.getUserImageUrl(user.Id, { - width: 300 * window.devicePixelRatio, + width: 300, tag: user.PrimaryImageTag, type: "Primary" }); diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 51e8c2e190..6a260d8dfb 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -493,15 +493,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (nowPlayingItem.ImageTags && nowPlayingItem.ImageTags.Logo) { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.Id, { tag: nowPlayingItem.ImageTags.Logo, - maxHeight: 24 * window.devicePixelRatio, - maxWidth: 130 * window.devicePixelRatio, + maxHeight: 24, + maxWidth: 130, type: "Logo" }); } else if (nowPlayingItem.ParentLogoImageTag) { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId, { tag: nowPlayingItem.ParentLogoImageTag, - maxHeight: 24 * window.devicePixelRatio, - maxWidth: 130 * window.devicePixelRatio, + maxHeight: 24, + maxWidth: 130, type: "Logo" }); } diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index bf605976c3..24b6548544 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -334,24 +334,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (item) { var imgUrl = seriesImageUrl(item, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }) || seriesImageUrl(item, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Thumb" }) || imageUrl(item, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }) || seriesImageUrl(secondaryItem, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Thumb" }) || imageUrl(secondaryItem, { - maxWidth: Math.round(dom.getScreenWidth() * 0.20), + maxWidth: osdPoster.clientWidth * 2, type: "Primary" })), imgUrl) { return void (osdPoster.innerHTML = ''); diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 3e41c04858..2a2387ab60 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -88,7 +88,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", if (user.PrimaryImageTag) { imgUrl = ApiClient.getUserImageUrl(user.Id, { - width: 300 * window.devicePixelRatio, + width: 300, tag: user.PrimaryImageTag, type: "Primary" }); diff --git a/src/libraries/apiclient/apiclient.js b/src/libraries/apiclient/apiclient.js index d848358c3e..58cfa300b9 100644 --- a/src/libraries/apiclient/apiclient.js +++ b/src/libraries/apiclient/apiclient.js @@ -59,8 +59,8 @@ define(["libraries/apiclient/apiclientcore", "localassetmanager"], function(ApiC }) } - function ApiClientEx(serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) { - ApiClient.call(this, serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) + function ApiClientEx(serverAddress, clientName, applicationVersion, deviceName, deviceId) { + ApiClient.call(this, serverAddress, clientName, applicationVersion, deviceName, deviceId) } var localPrefix = "local:", localViewPrefix = "localview:"; diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index ec1a329b13..557a4e1033 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -58,7 +58,7 @@ define(["events", "appStorage"], function(events, appStorage) { return request.data && ("string" == typeof request.data ? fetchRequest.body = request.data : (fetchRequest.body = paramsToString(request.data), contentType = contentType || "application/x-www-form-urlencoded; charset=UTF-8")), contentType && (headers["Content-Type"] = contentType), request.timeout ? fetchWithTimeout(request.url, fetchRequest, request.timeout) : fetch(request.url, fetchRequest) } - function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId, devicePixelRatio) { + function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId) { if (!serverAddress) { throw new Error("Must supply a serverAddress"); } @@ -75,7 +75,6 @@ define(["events", "appStorage"], function(events, appStorage) { this._deviceName = deviceName; this._appName = appName; this._appVersion = appVersion; - this._devicePixelRatio = devicePixelRatio; } function setSavedEndpointInfo(instance, info) { @@ -218,7 +217,7 @@ define(["events", "appStorage"], function(events, appStorage) { } function normalizeImageOptions(instance, options) { - var ratio = instance._devicePixelRatio || 1; + var ratio = window.devicePixelRatio; ratio && (options.minScale && (ratio = Math.max(options.minScale, ratio)), options.width && (options.width = Math.round(options.width * ratio)), options.height && (options.height = Math.round(options.height * ratio)), options.maxWidth && (options.maxWidth = Math.round(options.maxWidth * ratio)), options.maxHeight && (options.maxHeight = Math.round(options.maxHeight * ratio))), options.quality = options.quality || instance.getDefaultImageQuality(options.type), instance.normalizeImageOptions && instance.normalizeImageOptions(options) } diff --git a/src/libraries/apiclient/connectionmanager.js b/src/libraries/apiclient/connectionmanager.js index a8e389bd03..dc5ef406e5 100644 --- a/src/libraries/apiclient/connectionmanager.js +++ b/src/libraries/apiclient/connectionmanager.js @@ -186,7 +186,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory Manual: 2 }; - var ConnectionManager = function (credentialProvider, appName, appVersion, deviceName, deviceId, capabilities, devicePixelRatio) { + var ConnectionManager = function (credentialProvider, appName, appVersion, deviceName, deviceId, capabilities) { function onAuthenticated(apiClient, result, options, saveCredentials) { var credentials = credentialProvider.credentials(); @@ -540,7 +540,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory var apiClient = self.getApiClient(server.Id); if (!apiClient) { - apiClient = new apiClientFactory(serverUrl, appName, appVersion, deviceName, deviceId, devicePixelRatio); + apiClient = new apiClientFactory(serverUrl, appName, appVersion, deviceName, deviceId); self._apiClients.push(apiClient); apiClient.serverInfo(server); apiClient.onAuthenticated = function (instance, result) { diff --git a/src/scripts/site.js b/src/scripts/site.js index 7332ba7b83..5dae39a68f 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -280,7 +280,7 @@ var AppInfo = {}; capabilities.DeviceProfile = deviceProfile; - var connectionManager = new ConnectionManager(credentialProviderInstance, apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), capabilities, window.devicePixelRatio); + var connectionManager = new ConnectionManager(credentialProviderInstance, apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), capabilities); defineConnectionManager(connectionManager); bindConnectionManagerEvents(connectionManager, events, userSettings); @@ -291,7 +291,7 @@ var AppInfo = {}; return require(["apiclient"], function (apiClientFactory) { console.debug("creating ApiClient singleton"); - var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), window.devicePixelRatio); + var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId()); apiClient.enableAutomaticNetworking = false; apiClient.manualAddressOnly = true; From 3e80d5d47c1d464b346e66a4f1c8c5d0362280d9 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 11 Mar 2020 21:48:30 +0100 Subject: [PATCH 285/449] Show hamburger menu on mobile and fix title padding --- src/assets/css/librarybrowser.css | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 67afef2376..4c2cf95817 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -115,7 +115,7 @@ display: -webkit-inline-box; display: -webkit-inline-flex; display: inline-flex; - margin: 0.3em 0 0 0.5em; + margin: 0 0 0 0.5em; height: 1.7em; -webkit-box-align: center; -webkit-align-items: center; @@ -242,7 +242,6 @@ } @media all and (min-width: 40em) { - .dashboardDocument .adminDrawerLogo, .dashboardDocument .mainDrawerButton { display: none !important; } @@ -268,12 +267,6 @@ } } -@media all and (max-width: 60em) { - .libraryDocument .mainDrawerButton { - display: none; - } -} - @media all and (max-width: 84em) { .withSectionTabs .headerTop { padding-bottom: 0.55em; From 3ce787ad27f9e0bc67c8b4b3fbf333a634b1b367 Mon Sep 17 00:00:00 2001 From: yatusabes Date: Wed, 11 Mar 2020 19:20:28 +0000 Subject: [PATCH 286/449] Translated using Weblate (Catalan) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ca/ --- src/strings/ca.json | 51 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/strings/ca.json b/src/strings/ca.json index 711da8ae43..80e4b90067 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -746,5 +746,54 @@ "HeaderFavoriteArtists": "Artistes Preferits", "HeaderFavoriteEpisodes": "Episodis Preferits", "HeaderFavoriteShows": "Programes Preferits", - "HeaderFavoriteSongs": "Cançons Preferides" + "HeaderFavoriteSongs": "Cançons Preferides", + "ChannelNumber": "Número de canal", + "Categories": "Categories", + "ButtonWebsite": "Lloc web", + "ButtonUp": "Amunt", + "ButtonUninstall": "Desinstal·lar", + "ButtonSplit": "Dividir", + "ButtonStart": "Començar", + "ButtonSelectView": "Selecciona la vista", + "ButtonScanAllLibraries": "Escanejar totes les biblioteques", + "ButtonRevoke": "Revocar", + "ButtonRepeat": "Repetir", + "ButtonRename": "Canviar el nom", + "ButtonNetwork": "Xarxa", + "ButtonInfo": "Informació", + "ButtonFullscreen": "Pantalla completa", + "ButtonDown": "A baix", + "ButtonConnect": "Connectar", + "ButtonAudioTracks": "Pistes d'àudio", + "ButtonAddImage": "Afegir imatge", + "Blacklist": "Llista negra", + "BirthPlaceValue": "Lloc de naixement: {0}", + "BirthLocation": "Lloc de naixement", + "BirthDateValue": "Nascut: {0}", + "Banner": "Banner", + "Auto": "Auto", + "AuthProviderHelp": "Seleccionar un proveïdor d'autenticació que s'utilitzarà per autenticar la contrasenya d'aquest usuari.", + "AskAdminToCreateLibrary": "Sol·liciteu a un administrador que crei una biblioteca.", + "Ascending": "Ascendent", + "Art": "Art", + "Anytime": "En qualsevol moment", + "AnyLanguage": "Qualsevol idioma", + "AlwaysPlaySubtitlesHelp": "Es carregaran els subtítols que coincideixin amb la preferència d’idioma independentment del llenguatge d’àudio.", + "AllowRemoteAccessHelp": "Si no es marca, totes les connexions remotes es bloquejaran.", + "AllowRemoteAccess": "Permet connexions remotes a aquest servidor de Jellyfin.", + "AllowOnTheFlySubtitleExtraction": "Permet extreure subtítols sobre la marxa", + "AllowMediaConversionHelp": "Concedir o denegar l’accés a la funció de mitjans de conversió.", + "AllowMediaConversion": "Permetre la conversió de mitjans", + "AllowHWTranscodingHelp": "Permet al sintonitzador transcodificar streams sobre la marxa. Això pot ajudar a reduir la transcodificació requerida pel servidor.", + "AllLibraries": "Totes les biblioteques", + "AllLanguages": "Tots els idiomes", + "AllComplexFormats": "Tots els formats complexos (ASS, SSA, VOBSUB, PGS, SUB / IDX, etc.)", + "Alerts": "Alertes", + "Aired": "Transmès", + "AirDate": "Data d'emissió", + "AdditionalNotificationServices": "Examineu el catàleg de complements per instal·lar serveis de notificació addicionals.", + "AddedOnValue": "Afegit {0}", + "AddItemToCollectionHelp": "Afegiu els elements a les col·leccions buscant-los i fent clic amb el botó dret o toqueu els menús per afegir-los a una col·lecció.", + "Actor": "Actor", + "Absolute": "Absolut" } From 290f6d32ba8e4af5e730f1093ab9419482bbe3ae Mon Sep 17 00:00:00 2001 From: Z Yang Date: Wed, 11 Mar 2020 17:13:49 +0000 Subject: [PATCH 287/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index e537cd07c9..547f55dc3a 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1,5 +1,5 @@ { - "AccessRestrictedTryAgainLater": "访问目前受限。请稍后再试。", + "AccessRestrictedTryAgainLater": "目前访问受限。请稍后再试。", "Actor": "演员", "Add": "添加", "AddItemToCollectionHelp": "通过搜索并使用鼠标右键单击或点击菜单将项目添加到集合中, 将项目添加到集合中。", @@ -1473,6 +1473,6 @@ "NoCreatedLibraries": "看上去您还未创建任何资料库。{0} 您想现在创建一个吗? {1}", "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。", "PlaybackErrorNoCompatibleStream": "客户端配置文件存在问题,服务器未发送兼容的媒体格式。", - "AllowFfmpegThrottlingHelp": "当转码或remux距离当前播放位置足够远时,请暂停该进程,以减少资源消耗。 在不经常观看的情况下最有用。 如果遇到播放问题,请关闭此功能。", - "AllowFfmpegThrottling": "节流转码" + "AllowFfmpegThrottlingHelp": "当转码或再封装的进度大幅超过当前播放位置时,暂停该进程,以使其消耗更少的资源。在观看时不经常调整播放进度的情况下,这将非常有用。如果遇到播放问题,请关闭此功能。", + "AllowFfmpegThrottling": "限制转码速度" } From 52e39e792fe0b823cdadd2c4698fd7fd969bab10 Mon Sep 17 00:00:00 2001 From: Richmond Macaspac Date: Thu, 12 Mar 2020 02:50:18 -0500 Subject: [PATCH 288/449] Clipboard API fallback for when browser doesn't support navigator.clipboard --- src/components/itemcontextmenu.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 62048345ea..ad180b2c0a 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -346,11 +346,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", break; case "copy-stream": var downloadHref = apiClient.getItemDownloadUrl(itemId); - navigator.clipboard.writeText(downloadHref).then(function () { - require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLSuccess")); - }); - }, function () { + var textareaCopy = function () { var textArea = document.createElement("textarea"); textArea.value = downloadHref; document.body.appendChild(textArea); @@ -364,7 +360,16 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", prompt(globalize.translate("CopyStreamURL"), downloadHref); } document.body.removeChild(textArea); - }); + }; + if (navigator.clipboard === undefined) { + textareaCopy(); + } else { + navigator.clipboard.writeText(downloadHref).then(function () { + require(["toast"], function (toast) { + toast(globalize.translate("CopyStreamURLSuccess")); + }); + }, textareaCopy); + } getResolveFunction(resolve, id)(); break; case "editsubtitles": From 6a308ffae778fcd1140cfc47510a44dd0b0d02ca Mon Sep 17 00:00:00 2001 From: Richmond Macaspac Date: Thu, 12 Mar 2020 03:12:01 -0500 Subject: [PATCH 289/449] Update src/components/itemcontextmenu.js Co-Authored-By: Julien Machiels --- src/components/itemcontextmenu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index ad180b2c0a..38f6575612 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -346,7 +346,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", break; case "copy-stream": var downloadHref = apiClient.getItemDownloadUrl(itemId); - var textareaCopy = function () { + var textAreaCopy = function () { var textArea = document.createElement("textarea"); textArea.value = downloadHref; document.body.appendChild(textArea); From 560fe45087a1d7c46955f8a5c27cae8e29ddbde3 Mon Sep 17 00:00:00 2001 From: Richmond Macaspac Date: Thu, 12 Mar 2020 03:22:04 -0500 Subject: [PATCH 290/449] camelCase var fix --- src/components/itemcontextmenu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 38f6575612..bdbcfc782b 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -362,13 +362,13 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", document.body.removeChild(textArea); }; if (navigator.clipboard === undefined) { - textareaCopy(); + textAreaCopy(); } else { navigator.clipboard.writeText(downloadHref).then(function () { require(["toast"], function (toast) { toast(globalize.translate("CopyStreamURLSuccess")); }); - }, textareaCopy); + }, textAreaCopy); } getResolveFunction(resolve, id)(); break; From 57c066e27e7a2493b60835285fd38f190a677579 Mon Sep 17 00:00:00 2001 From: Ismael Date: Thu, 12 Mar 2020 11:15:23 +0000 Subject: [PATCH 291/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 0946d7d6e1..0980433266 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -262,7 +262,7 @@ "EncoderPresetHelp": "Choisissez une valeur plus rapide pour améliorer la performance, ou plus lente pour améliorer la qualité.", "HDPrograms": "Programmes HD", "HandledByProxy": "Gérée par un proxy inverse", - "HardwareAccelerationWarning": "L'activation de l'accélération matérielle peut provoquer une instabilité dans certains environnements. Assurez-vous que votre système d'exploitation et vos pilotes vidéo sont complètement à jour. Si vous avez des difficultés pour lire des vidéos après l'activation, vous devrez remettre ce paramètre sur Auto.", + "HardwareAccelerationWarning": "L'activation de l'accélération matérielle peut provoquer une instabilité dans certains environnements. Assurez-vous que votre système d'exploitation et vos pilotes vidéo sont complètement à jour. Si vous avez des difficultés pour lire des vidéos après l'activation, vous devrez remettre ce paramètre sur Aucun.", "HeaderAccessSchedule": "Programme d'Accès", "HeaderAccessScheduleHelp": "Créez un programme d'accès pour limiter l'accès à certaines heures.", "HeaderActiveDevices": "Appareils actifs", @@ -1465,5 +1465,8 @@ "LabelPlayerDimensions": "Dimension du lecteur", "LabelDroppedFrames": "Cadre informatique oublié", "LabelCorruptedFrames": "Cadre informatique corrompu", - "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL." + "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL.", + "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", + "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", + "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage" } From 6edfdeb40632ca2a87ebd29ce7fa77a2e5f02819 Mon Sep 17 00:00:00 2001 From: Deniz Date: Thu, 12 Mar 2020 10:10:35 +0000 Subject: [PATCH 292/449] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 61 ++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index c9b5f8014d..2df8759815 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -14,7 +14,7 @@ "ButtonDelete": "Sil", "ButtonDeleteImage": "Resmi Sil", "ButtonEdit": "Düzenle", - "ButtonFilter": "Filtre", + "ButtonFilter": "Filtrele", "ButtonHelp": "Yardım", "ButtonHome": "Anasayfa", "ButtonInfo": "Bilgi", @@ -22,7 +22,7 @@ "ButtonNew": "Yeni", "ButtonOk": "Tamam", "ButtonPause": "Duraklat", - "ButtonPlay": "Çal", + "ButtonPlay": "Oynat", "ButtonQuickStartGuide": "Hızlı başlangıç rehberi", "ButtonRefreshGuideData": "Kılavuzu Yinele", "ButtonRemove": "Sil", @@ -34,11 +34,11 @@ "ButtonSend": "Gönder", "ButtonSettings": "Ayarlar", "ButtonSignIn": "Giriş Yapın", - "ButtonSignOut": "Çıkış yapın", + "ButtonSignOut": "Çıkış Yap", "ButtonSort": "Sırala", "ButtonStop": "Durdur", "ButtonSubtitles": "Altyazılar", - "ChannelAccessHelp": "Bu kullanıcıyla paylaşmak üzere kanalları seç. Yöneticiler bütün kanalları metada yöneticisi ile düzenleyebilcekler.", + "ChannelAccessHelp": "Bu kullanıcıyla paylaşmak üzere kanalları seç. Yöneticiler bütün kanalları metada yöneticisi ile düzenleyebilecekler.", "Continuing": "Devam ediyor", "Delete": "Sil", "DeleteImage": "Resmi Sil", @@ -104,10 +104,10 @@ "LabelDisplayMissingEpisodesWithinSeasons": "Sezondaki kayıp bölümleri göster", "LabelEnableDlnaServer": "DLNA Sunucusunu Etkinleştir", "LabelFinish": "Bitir", - "LabelIconMaxHeight": "İkon Maksimum Yükseklik:", + "LabelIconMaxHeight": "Maksimum simge genişliği:", "LabelIconMaxWidth": "ikon Maksimum Genişlik:", "LabelLanguage": "Dil:", - "LabelManufacturer": "Üretici", + "LabelManufacturer": "Üretici:", "LabelMaxParentalRating": "Maksimum izin verilen ebeveyn değerlendirmesi:", "LabelMessageText": "Mesaj Metni:", "LabelName": "İsim:", @@ -190,7 +190,7 @@ "OptionThursday": "Perşembe", "OptionTrackName": "Parça İsmi", "OptionTuesday": "Salı", - "OptionTvdbRating": "Tvdb Reyting", + "OptionTvdbRating": "TVDB Puanı", "OptionUnplayed": "Çalınmayan", "OptionWednesday": "Çarşamba", "OptionWeekly": "Haftalık", @@ -282,14 +282,14 @@ "Shows": "Diziler", "Songs": "Şarkılar", "Sync": "Eşitle", - "AllChannels": "Bütün kanallar", - "AllComplexFormats": "Bütün karmaşık formatlar (ASS, SSA, VOBSUB, PGS, SUB/IDX, vb.)", - "AllEpisodes": "Bütün bölümler", - "AllLanguages": "Bütün diller", + "AllChannels": "Tüm kanallar", + "AllComplexFormats": "Tüm karmaşık formatlar (ASS, SSA, VOBSUB, PGS, SUB/IDX, vb.)", + "AllEpisodes": "Tüm bölümler", + "AllLanguages": "Tüm diller", "AllowMediaConversion": "Medya dönüşümüne izin ver", "AddItemToCollectionHelp": "Ögeleri koleksiyona eklemek için arama yapın ve üzerine sağ tıklayın veya sekme menüsünden koleksiyona ekleyin.", "AllowHWTranscodingHelp": "Ayarlayıcının anında akışları dönüştürmesine izin verin. Bu, sunucunun gerektirdiği kodlamanın azaltılmasına yardımcı olabilir.", - "ColorSpace": "Renk Uzayı", + "ColorSpace": "Renk uzayı", "ButtonConnect": "Bağlan", "ColorTransfer": "Renk transferi", "ButtonPreviousTrack": "Önceki parça", @@ -298,8 +298,8 @@ "ButtonRename": "Yeniden Adlandır", "ButtonRepeat": "Tekrar", "ButtonResume": "Devam Et", - "ButtonRevoke": "geri al", - "ChannelNumber": "Kanal Numarası", + "ButtonRevoke": "Geri al", + "ChannelNumber": "Kanal numarası", "ContinueWatching": "İzlemeye devam et", "CriticRating": "Kritik değerlendirme", "CustomDlnaProfilesHelp": "Yeni bir cihazı hedeflemek veya bir sistem profilini geçersiz kılmak için özel bir profil oluşturun.", @@ -333,12 +333,12 @@ "Disc": "Disk", "ButtonAddImage": "Resim ekle", "ButtonAddScheduledTaskTrigger": "Tetikleyici ekle", - "ButtonAddServer": "Sunucu ekle", - "ButtonAudioTracks": "Ses Parçalari", + "ButtonAddServer": "Sunucu Ekle", + "ButtonAudioTracks": "Ses Parçaları", "ButtonChangeServer": "Sunucu Değiştir", "ButtonGotIt": "Anladım", "ButtonMore": "Daha", - "ButtonOpen": "Açık", + "ButtonOpen": "Aç", "ButtonArrowUp": "Yukarı", "ButtonNetwork": "Ağ", "ButtonDownload": "İndir", @@ -385,21 +385,21 @@ "Art": "Sanat", "AsManyAsPossible": "Mümkün olduğunca", "Ascending": "yükselen", - "AspectRatio": "Boy oranı", + "AspectRatio": "En/Boy oranı", "Audio": "Ses", "AuthProviderHelp": "Bu kullanıcının şifresini doğrulamak için kullanılacak bir Kimlik Doğrulama Sağlayıcısı seçin.", "AutoBasedOnLanguageSetting": "Otomatik (dil ayarına göre)", "Backdrop": "zemin", "Backdrops": "Zeminler", "Banner": "afiş", - "BirthDateValue": "Doğan: {0}", - "BirthLocation": "Doğum yeri", + "BirthDateValue": "Doğum Tarihi: {0}", + "BirthLocation": "Doğum Yeri", "BirthPlaceValue": "Doğum yeri: {0}", "Auto": "Oto", - "Blacklist": "kara liste", + "Blacklist": "Kara Liste", "BoxRear": "Kutu (arka)", "ButtonAddMediaLibrary": "Medya Kitaplığı Ekle", - "ButtonSubmit": "Sunmak", + "ButtonSubmit": "Onayla", "ButtonStart": "Başlat", "ButtonTrailer": "Fragman", "Box": "Kutu", @@ -411,7 +411,7 @@ "ButtonWebsite": "Website", "Categories": "Kategoriler", "DrmChannelsNotImported": "DRM'li kanallar içe aktarılmayacak.", - "DropShadow": "Düşen gölge", + "DropShadow": "Gölge", "CopyStreamURL": "Akış URL’sini kopyala", "DefaultSubtitlesHelp": "Altyazılar, gömülü meta verilerdeki varsayılan ve zorunlu bayraklara göre yüklenir. Birden fazla seçenek olduğunda dil tercihleri göz önünde bulundurulur.", "DeleteDeviceConfirmation": "Bu cihazı silmek istediğinden emin misin? Bir kullanıcı bir sonraki oturum açışında yeniden görünecektir.", @@ -510,7 +510,7 @@ "HeaderActiveDevices": "Aktif Cihazlar", "HeaderAccessScheduleHelp": "Belirli saatlerle erişimi sınırlamak için bir erişim programı oluşturun.", "HeaderAccessSchedule": "Erişim Takvimi", - "HardwareAccelerationWarning": "Donanım ivmesini etkinleştirmek bazı ortamlarda dengesizliğe neden olabilir. İşletim sisteminizin ve video sürücülerinizin tamamen güncel olduğundan emin olun. Bunu etkinleştirdikten sonra video oynatmakta zorluk çekiyorsanız, ayarı tekrar Auto (Otomatik) olarak değiştirmeniz gerekecektir.", + "HardwareAccelerationWarning": "Donanım ivmesini etkinleştirmek bazı ortamlarda dengesizliğe neden olabilir. İşletim sisteminizin ve video sürücülerinizin tamamen güncel olduğundan emin olun. Bunu etkinleştirdikten sonra video oynatmakta zorluk çekiyorsanız, ayarı tekrar \"Hiçbiri\" olarak değiştirmeniz gerekecektir.", "HandledByProxy": "Ters proxy tarafından kullanılır", "HDPrograms": "HD programlar", "EncoderPresetHelp": "Performansı artırmak için daha hızlı bir değer veya kaliteyi artırmak için daha yavaş bir değer seçin.", @@ -701,5 +701,16 @@ "HeaderPaths": "Yollar", "HeaderKodiMetadataHelp": "NFO meta verilerini açmak yada kapatmak için, meta verileri bölümünü kullanın ve her tür medya için seçeneklerinizi ayarlayın.", "HeaderInstantMix": "Ani mix", - "ButtonSplit": "Ayır" + "ButtonSplit": "Ayır", + "Items": "Nesneler", + "HeaderSubtitleProfilesHelp": "Altyazı profilleri cihaz tarafından desteklenen altyazı formatlarını tanımlar.", + "HeaderSubtitleAppearance": "Altyazı Görünümü", + "HeaderSelectTranscodingPathHelp": "Geçici Video Kodlama dosyaları için bir dosya yolu seçin yada yazın. Dosya yoluna yazma yetkisi gereklidir.", + "HeaderSelectTranscodingPath": "Video Kodlaması İçin Geçici Dosya Yolu Seç", + "HeaderSelectServerCachePathHelp": "Önbellek dosyaları için bir dosya yolu seçin yada yazın. Dosya yoluna yazma yetkisi gereklidir.", + "CopyStreamURLError": "URL kopyalanırken bir hata oluştu.", + "OptionNone": "Hiçbiri", + "None": "Hiçbiri", + "HeaderNavigation": "Navigasyon", + "AllowFfmpegThrottling": "Video Kodlamasını Limitle" } From c13cd2dca517d340ac02fe4728fe643160096424 Mon Sep 17 00:00:00 2001 From: Ismael Date: Thu, 12 Mar 2020 11:21:44 +0000 Subject: [PATCH 293/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 0980433266..3d487e8852 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -570,7 +570,7 @@ "LabelEmbedAlbumArtDidl": "Intégrer les images d'album dans le DIDL", "LabelEmbedAlbumArtDidlHelp": "Certains appareils préfèrent cette méthode pour obtenir les images d'album. D'autres peuvent échouer à lire avec cette option activée.", "LabelEnableAutomaticPortMap": "Autoriser le mapping automatique de port", - "LabelEnableAutomaticPortMapHelp": "Essayer de mapper automatiquement le port public au port local via UPnP. Cela peut ne pas fonctionner avec certains modèles de routeurs.", + "LabelEnableAutomaticPortMapHelp": "Essayer de mapper automatiquement le port public au port local via UPnP. Cela peut ne pas fonctionner avec certains modèles de routeurs. La modification de ce paramètre ne sera effective qu’après redémarrage du serveur.", "LabelEnableBlastAliveMessages": "Diffuser des message de présence", "LabelEnableBlastAliveMessagesHelp": "Activer cette option si le serveur n'est pas détecté de manière fiable par les autres appareils UPnP sur votre réseau.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalle de découverte des clients (secondes)", @@ -1468,5 +1468,6 @@ "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL.", "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", - "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage" + "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage", + "NoCreatedLibraries": "Il semblerait que vous n’ayez pas encore créé de médiathèque. {0}Voulez-vous en créer une tout de suite ?{1}" } From e35bda7b748e8c3665b804f28fcc46970766f781 Mon Sep 17 00:00:00 2001 From: Ismael Date: Thu, 12 Mar 2020 11:24:36 +0000 Subject: [PATCH 294/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 3d487e8852..a4cdb9df36 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1469,5 +1469,6 @@ "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage", - "NoCreatedLibraries": "Il semblerait que vous n’ayez pas encore créé de médiathèque. {0}Voulez-vous en créer une tout de suite ?{1}" + "NoCreatedLibraries": "Il semblerait que vous n’ayez pas encore créé de médiathèque. {0}Voulez-vous en créer une tout de suite ?{1}", + "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible." } From 6260db82e219ab963595029e1ee65b8b8877d9b1 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 12 Mar 2020 23:55:59 +0900 Subject: [PATCH 295/449] remove query string from source --- package.json | 1 + src/bundle.js | 12 +++-- src/libraries/query-string/index.js | 18 ------- src/libraries/query-string/test.js | 83 ----------------------------- src/scripts/site.js | 4 +- 5 files changed, 11 insertions(+), 107 deletions(-) delete mode 100644 src/libraries/query-string/index.js delete mode 100644 src/libraries/query-string/test.js diff --git a/package.json b/package.json index 9fcf535a44..41a9c41961 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.5", + "query-string": "^6.11.1", "resize-observer-polyfill": "^1.5.1", "shaka-player": "^2.5.9", "sortablejs": "^1.10.2", diff --git a/src/bundle.js b/src/bundle.js index 5d05e4b686..6a462b4221 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -16,6 +16,12 @@ _define("fetch", function() { return fetch }); +// query-string +var query = require("query-string"); +_define("queryString", function() { + return query; +}); + // flvjs var flvjs = require("flv.js/dist/flv").default; _define("flvjs", function() { @@ -75,7 +81,7 @@ _define("sortable", function() { // webcomponents var webcomponents = require("webcomponents.js/webcomponents-lite"); _define("webcomponents", function() { - return webcomponents + return webcomponents; }); // libjass @@ -97,9 +103,9 @@ _define("material-icons", function() { return material_icons; }); -var jellyfin_noto = require("jellyfin-noto"); +var noto = require("jellyfin-noto"); _define("jellyfin-noto", function () { - return jellyfin_noto; + return noto; }); // page.js diff --git a/src/libraries/query-string/index.js b/src/libraries/query-string/index.js deleted file mode 100644 index cc63f52b80..0000000000 --- a/src/libraries/query-string/index.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -window.queryString = {}, window.queryString.extract = function(maybeUrl) { - return maybeUrl.split("?")[1] || "" -}, window.queryString.parse = function(str) { - return "string" != typeof str ? {} : (str = str.trim().replace(/^(\?|#|&)/, ""), str ? str.split("&").reduce(function(ret, param) { - var parts = param.replace(/\+/g, " ").split("="), - key = parts[0], - val = parts[1]; - return key = decodeURIComponent(key), val = void 0 === val ? null : decodeURIComponent(val), ret.hasOwnProperty(key) ? Array.isArray(ret[key]) ? ret[key].push(val) : ret[key] = [ret[key], val] : ret[key] = val, ret - }, {}) : {}) -}, window.queryString.stringify = function(obj) { - return obj ? Object.keys(obj).sort().map(function(key) { - var val = obj[key]; - return Array.isArray(val) ? val.sort().map(function(val2) { - return encodeURIComponent(key) + "=" + encodeURIComponent(val2) - }).join("&") : encodeURIComponent(key) + "=" + encodeURIComponent(val) - }).join("&") : "" -}; diff --git a/src/libraries/query-string/test.js b/src/libraries/query-string/test.js deleted file mode 100644 index 072a33fb1d..0000000000 --- a/src/libraries/query-string/test.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -var assert = require("assert"), - qs = require("./"); -describe(".parse()", function() { - it("query strings starting with a `?`", function() { - assert.deepEqual(qs.parse("?foo=bar"), { - foo: "bar" - }) - }), it("query strings starting with a `#`", function() { - assert.deepEqual(qs.parse("#foo=bar"), { - foo: "bar" - }) - }), it("query strings starting with a `&", function() { - assert.deepEqual(qs.parse("&foo=bar&foo=baz"), { - foo: ["bar", "baz"] - }) - }), it("parse a query string", function() { - assert.deepEqual(qs.parse("foo=bar"), { - foo: "bar" - }) - }), it("parse multiple query string", function() { - assert.deepEqual(qs.parse("foo=bar&key=val"), { - foo: "bar", - key: "val" - }) - }), it("parse query string without a value", function() { - assert.deepEqual(qs.parse("foo"), { - foo: null - }), assert.deepEqual(qs.parse("foo&key"), { - foo: null, - key: null - }), assert.deepEqual(qs.parse("foo=bar&key"), { - foo: "bar", - key: null - }) - }), it("return empty object if no qss can be found", function() { - assert.deepEqual(qs.parse("?"), {}), assert.deepEqual(qs.parse("&"), {}), assert.deepEqual(qs.parse("#"), {}), assert.deepEqual(qs.parse(" "), {}) - }), it("handle `+` correctly", function() { - assert.deepEqual(qs.parse("foo+faz=bar+baz++"), { - "foo faz": "bar baz " - }) - }), it("handle multiple of the same key", function() { - assert.deepEqual(qs.parse("foo=bar&foo=baz"), { - foo: ["bar", "baz"] - }) - }), it("query strings params including embedded `=`", function() { - assert.deepEqual(qs.parse("?param=http%3A%2F%2Fsomeurl%3Fid%3D2837"), { - param: "http://someurl?id=2837" - }) - }) -}), describe(".stringify()", function() { - it("stringify", function() { - assert.strictEqual(qs.stringify({ - foo: "bar" - }), "foo=bar"), assert.strictEqual(qs.stringify({ - foo: "bar", - bar: "baz" - }), "bar=baz&foo=bar") - }), it("different types", function() { - assert.strictEqual(qs.stringify(), ""), assert.strictEqual(qs.stringify(0), "") - }), it("URI encode", function() { - assert.strictEqual(qs.stringify({ - "foo bar": "baz faz" - }), "foo%20bar=baz%20faz") - }), it("handle array value", function() { - assert.strictEqual(qs.stringify({ - abc: "abc", - foo: ["bar", "baz"] - }), "abc=abc&foo=bar&foo=baz") - }) -}), describe(".extract()", function() { - it("should extract qs from url", function() { - assert.equal(qs.extract("http://foo.bar/?abc=def&hij=klm"), "abc=def&hij=klm"), assert.equal(qs.extract("http://foo.bar/?"), "") - }), it("should handle strings not containing qs", function() { - assert.equal(qs.extract("http://foo.bar/"), ""), assert.equal(qs.extract(""), "") - }), it("should throw for invalid values", function() { - assert.throws(function() { - qs.extract(null) - }, TypeError), assert.throws(function() { - qs.extract(void 0) - }, TypeError) - }) -}); diff --git a/src/scripts/site.js b/src/scripts/site.js index 1d82853256..d6626009b8 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -733,6 +733,7 @@ var AppInfo = {}; "resize-observer-polyfill", "shaka", "swiper", + "queryString", "sortable", "libjass", "webcomponents", @@ -795,9 +796,6 @@ var AppInfo = {}; define("headroom", [componentsPath + "/headroom/headroom"], returnFirstDependency); define("scroller", [componentsPath + "/scroller"], returnFirstDependency); define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency); - define("queryString", [bowerPath + "/query-string/index"], function () { - return queryString; - }); define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency); define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency); From ba28b54220d40578597b79b206ce88835d0fc497 Mon Sep 17 00:00:00 2001 From: artiume Date: Thu, 12 Mar 2020 13:06:48 -0400 Subject: [PATCH 296/449] Fix Dashboard OS for German https://www.reddit.com/r/jellyfin/comments/fh0d8z/1005_admin_panel_bug_operating_system_definition/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 1415f276b3..198318e420 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1450,7 +1450,7 @@ "LabelFolder": "Ordner:", "LabelPasswordResetProvider": "Anbieter zum Zurücksetzen des Passwortes:", "LabelPlayMethod": "Spielmethode:", - "DashboardOperatingSystem": "Betriebssystem: {O}", + "DashboardOperatingSystem": "Betriebssystem: {0}", "DashboardArchitecture": "Architektur: {0}", "LabelVideoCodec": "Videocodec:", "LaunchWebAppOnStartup": "Das Webinterface öffnen, wenn der Server startet", From a2f337b8c382a3d4eb70c92b494e615cdd84aa04 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 12 Mar 2020 21:11:06 +0100 Subject: [PATCH 297/449] Add comments for hardcoded scaling values --- src/controllers/dashboard/dashboard.js | 2 ++ src/controllers/itemdetailpage.js | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 6a260d8dfb..1927abf176 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -634,6 +634,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa return ""; }, getNowPlayingImageUrl: function (item) { + /* Screen width is multiplied by 0.2, as the there is now way to get the width of + elements that aren't crated yet. */ if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 5b1f5d9e1f..9949837639 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -767,6 +767,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var shape = "portrait"; var detectRatio = false; + /* In the following section, getScreenWidth() is multiplied by 0.5 as the posters + are 25vw and we need double the resolution to counter Skia's scaling. */ + // TODO: Find a reliable way to get the poster width if (imageTags.Primary) { url = apiClient.getScaledImageUrl(item.Id, { type: "Primary", From def9da2f0d823418e3899532a8007566f05a728f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 12 Mar 2020 21:17:13 +0100 Subject: [PATCH 298/449] Use 16:9 instead of 1.78:1 to derive width of screen --- src/components/dom.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/dom.js b/src/components/dom.js index bdd7d5d95f..cc37e2fc5b 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -118,9 +118,7 @@ define([], function () { var height = window.innerHeight; if (height > width) { - /* If we're in portrait, compute the proper width for this height, - taking 16:9 as the most common ratio */ - width = height * 1.78; + width = height * (16.0 / 9.0); } var closest = standardWidths.sort(function (a, b) { From 537151ee8950d2d561393db185c4b78c008e4304 Mon Sep 17 00:00:00 2001 From: artiume Date: Thu, 12 Mar 2020 19:30:23 +0000 Subject: [PATCH 299/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 1415f276b3..198318e420 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1450,7 +1450,7 @@ "LabelFolder": "Ordner:", "LabelPasswordResetProvider": "Anbieter zum Zurücksetzen des Passwortes:", "LabelPlayMethod": "Spielmethode:", - "DashboardOperatingSystem": "Betriebssystem: {O}", + "DashboardOperatingSystem": "Betriebssystem: {0}", "DashboardArchitecture": "Architektur: {0}", "LabelVideoCodec": "Videocodec:", "LaunchWebAppOnStartup": "Das Webinterface öffnen, wenn der Server startet", From 639db44ad1d1bd2f080e1d6e94f088b13785c38a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 13 Mar 2020 09:22:08 +0100 Subject: [PATCH 300/449] Fix spelling issue in comment --- src/controllers/dashboard/dashboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 1927abf176..2057deaf6f 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -634,8 +634,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa return ""; }, getNowPlayingImageUrl: function (item) { - /* Screen width is multiplied by 0.2, as the there is now way to get the width of - elements that aren't crated yet. */ + /* Screen width is multiplied by 0.2, as the there is currently no way to get the width of + elements that aren't created yet. */ if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), From 3d44f8f2aa3759dc3f853588f26de386de4f484a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 27 Feb 2020 19:11:35 +0100 Subject: [PATCH 301/449] Add basic Gulp config --- gulpfile.js | 44 + package.json | 9 + yarn.lock | 2601 +++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 2603 insertions(+), 51 deletions(-) create mode 100644 gulpfile.js diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000000..e894cc1723 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,44 @@ +"use strict"; + +const { src, dest, series, parallel } = require('gulp'); +const del = require('del'); +const babel = require("gulp-babel"); +const terser = require('gulp-terser'); +const cssnano = require('gulp-cssnano'); +const htmlmin = require('gulp-htmlmin'); +const sourcemaps = require('gulp-sourcemaps'); + +// Clean assets +function clean() { + return del(["dist/"]); +} + +function javascript() { + return src("src/**/*.js", {base: './src/'}) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(babel({ + presets: ['@babel/preset-env'] + })) + .pipe(terser({ + keep_fnames: true, + mangle: false + })) + .pipe(sourcemaps.write('.')) + .pipe(dest("dist/")); +} + +function css() { + return src("src/**/*.css", {base: './src/'}) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(cssnano()) + .pipe(sourcemaps.write('.')) + .pipe(dest("dist/")); +} + +function html() { + return src("src/**/*.html", {base: './src/'}) + .pipe(htmlmin({ collapseWhitespace: true })) + .pipe(dest("dist/")); +} + +exports.default = series(clean, parallel(javascript, css, html)) diff --git a/package.json b/package.json index 9fcf535a44..4c93619287 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,20 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { + "@babel/core": "^7.8.6", + "@babel/preset-env": "^7.8.6", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", "css-loader": "^3.4.2", + "del": "^5.1.0", "eslint": "^6.8.0", "file-loader": "^5.0.2", + "gulp": "^4.0.2", + "gulp-babel": "^8.0.0", + "gulp-cssnano": "^2.1.3", + "gulp-htmlmin": "^5.0.1", + "gulp-sourcemaps": "^2.6.5", + "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", "style-loader": "^1.1.3", "stylelint": "^13.1.0", diff --git a/yarn.lock b/yarn.lock index f156002c6d..7c51aae230 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,6 +16,15 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/compat-data@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== + dependencies: + browserslist "^4.8.5" + invariant "^2.2.4" + semver "^5.5.0" + "@babel/core@>=7.2.2": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" @@ -37,6 +46,27 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.6.tgz#27d7df9258a45c2e686b6f18b6c659e563aa4636" + integrity sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" @@ -47,6 +77,77 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.6.tgz#57adf96d370c9a63c241cd719f9111468578537a" + integrity sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg== + dependencies: + "@babel/types" "^7.8.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-compilation-targets@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.6.tgz#015b85db69e3a34240d5c2b761fc53eb9695f09c" + integrity sha512-UrJdk27hKVJSnibFcUWYLkCL0ZywTUoot8yii1lsHJcvwrypagmYKjHLMWivQPm4s6GdyygCL8fiH5EYLxhQwQ== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.8.5" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b" + integrity sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.6.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -63,6 +164,88 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -70,6 +253,16 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helpers@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" @@ -79,6 +272,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -102,6 +304,440 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== +"@babel/parser@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.6.tgz#ba5c9910cddb77685a008e3c587af8d27b67962c" + integrity sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" + integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== + dependencies: + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.6.tgz#2a0773b08589ecba4995fc71b1965e4f531af40b" + integrity sha512-M5u8llV9DIVXBFB/ArIpqJuvXpO+ymxcJ6e8ZAmzeK3sQeBNOD1y+rHvHCGG4TlEmsNpIrdecsHGHT8ZCoOSJg== + dependencies: + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.6" + browserslist "^4.8.5" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + "@babel/runtime@^7.6.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" @@ -118,6 +754,15 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/traverse@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" @@ -133,6 +778,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -142,6 +802,34 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.6.tgz#629ecc33c2557fcde7126e58053127afdb3e6d01" + integrity sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" + integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ== + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.6.0" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -458,6 +1146,11 @@ acorn-jsx@^5.1.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn@5.X, acorn@^5.0.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + acorn@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" @@ -468,6 +1161,14 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -503,6 +1204,18 @@ alameda@^1.4.0: resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" integrity sha512-d6nIRyg4SD/zBupcfZ3lUis58l4H/3U7c1RBtFkcz/7u1dDIQwx26KUvKJ35esOVP6WsAjmRoP2VQ39kQZT/Gg== +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" @@ -515,6 +1228,13 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.8.1" +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -560,6 +1280,11 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -568,11 +1293,23 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -593,16 +1330,35 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -618,6 +1374,35 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -672,6 +1457,16 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -682,6 +1477,13 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -689,11 +1491,23 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -atob@^2.1.1: +atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + autoprefixer@^9.0.0, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" @@ -707,11 +1521,38 @@ autoprefixer@^9.0.0, autoprefixer@^9.7.4: postcss "^7.0.26" postcss-value-parser "^4.0.2" +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -893,7 +1734,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^1.1.3: +browserslist@^1.1.3, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= @@ -910,6 +1751,20 @@ browserslist@^4.8.3: electron-to-chromium "^1.3.341" node-releases "^1.1.47" +browserslist@^4.8.5: + version "4.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.0.tgz#ff85c390889e0f754d7bd8ad13412575cdcf5dc7" + integrity sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg== + dependencies: + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.361" + node-releases "^1.1.50" + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1040,6 +1895,11 @@ camelcase-keys@^6.1.1: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1050,6 +1910,21 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634: + version "1.0.30001030" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001030.tgz#0d832cbd1d8e6bdf6bd3f25d531b05c5787dbeb7" + integrity sha512-NegSvVCGfkDpHC3AosHhhn2CDVJoJXiH3LlMTKjc5GAwugaMHvsQLNItUD4RBOAvvOrw3Uz/XlYjT1ynW0rviA== + caniuse-db@^1.0.30000639: version "1.0.30001024" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001024.tgz#64045c5d0d57b00c30e09323b578b2305c4737ad" @@ -1060,6 +1935,11 @@ caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== +caniuse-lite@^1.0.30001030: + version "1.0.30001030" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" + integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== + ccount@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" @@ -1118,10 +1998,10 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.2: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== +chokidar@^2.0.0, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1137,10 +2017,10 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.7" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +chokidar@^2.0.2: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1176,6 +2056,13 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== + dependencies: + chalk "^1.1.3" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1193,6 +2080,11 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + clean-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" @@ -1213,6 +2105,15 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -1231,6 +2132,11 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + clone-regexp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" @@ -1246,6 +2152,37 @@ clone-regexp@^2.1.0: dependencies: is-regexp "^2.0.0" +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= + dependencies: + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1256,6 +2193,15 @@ collapse-white-space@^1.0.2: resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz#c2495b699ab1ed380d29a1091e01063e75dbbe3a" integrity sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ== +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1264,7 +2210,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1283,11 +2229,46 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= + dependencies: + color-name "^1.0.0" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -1343,7 +2324,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -1394,7 +2375,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.7.0: +convert-source-map@1.X, convert-source-map@^1.5.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -1428,6 +2409,14 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + copy-webpack-plugin@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" @@ -1446,6 +2435,14 @@ copy-webpack-plugin@^5.1.1: serialize-javascript "^2.1.2" webpack-log "^2.0.0" +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1531,6 +2528,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + css-loader@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" @@ -1564,11 +2566,67 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css@2.X, css@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cssnano@^3.0.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -1581,11 +2639,28 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +debug-fabulous@1.X: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" + debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1593,7 +2668,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -1615,7 +2690,7 @@ decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1647,6 +2722,13 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -1655,6 +2737,11 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1684,6 +2771,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -1697,6 +2789,20 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -1730,6 +2836,11 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" @@ -1877,6 +2988,14 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -1887,6 +3006,11 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.341: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz#f1397a633c35e726730c24be1084cd25c3ee8148" integrity sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw== +electron-to-chromium@^1.3.361: + version "1.3.362" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz#9ed33f9d0673888d6a2614347b4b63b490009408" + integrity sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg== + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -1958,7 +3082,7 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -1990,11 +3114,47 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise@^4.2.5: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2085,6 +3245,11 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2119,6 +3284,14 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + eventemitter3@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -2232,6 +3405,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2275,6 +3455,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -2297,6 +3487,18 @@ fast-glob@^2.0.2, fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.0.3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-glob@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" @@ -2412,6 +3614,14 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -2434,7 +3644,7 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@3.0.0: +findup-sync@3.0.0, findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== @@ -2444,6 +3654,32 @@ findup-sync@3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2463,7 +3699,7 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== -flush-write-stream@^1.0.0: +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -2486,11 +3722,18 @@ follow-redirects@^1.0.0: dependencies: debug "^3.0.0" -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -2523,6 +3766,14 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -2627,11 +3878,39 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -2644,6 +3923,18 @@ glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@2.0.0, global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -2692,6 +3983,20 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + globby@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" @@ -2759,6 +4064,13 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + gonzales-pe@^4.2.3, gonzales-pe@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" @@ -2766,11 +4078,114 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.2.4: dependencies: minimist "1.1.x" +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.6, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.2.1" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== +gulp-babel@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-8.0.0.tgz#e0da96f4f2ec4a88dd3a3030f476e38ab2126d87" + integrity sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ== + dependencies: + plugin-error "^1.0.1" + replace-ext "^1.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp-cssnano@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz#02007e2817af09b3688482b430ad7db807aebf72" + integrity sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA== + dependencies: + buffer-from "^1.0.0" + cssnano "^3.0.0" + object-assign "^4.0.1" + plugin-error "^1.0.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-htmlmin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz#90fc5e8ad0425a9e86d5d521427184e7276365e7" + integrity sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA== + dependencies: + html-minifier "^3.5.20" + plugin-error "^1.0.1" + through2 "^2.0.3" + +gulp-sourcemaps@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" + integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + +gulp-terser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.2.0.tgz#41df2a1d0257d011ba8b05efb2568432ecd0495b" + integrity sha512-lf+jE2DALg2w32p0HRiYMlFYRYelKZPNunHp2pZccCYrrdCLOs0ItbZcN63yr2pbz116IyhUG9mD/QbtRO1FKA== + dependencies: + plugin-error "^1.0.1" + terser "^4.0.0" + through2 "^3.0.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" @@ -2803,7 +4218,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: +has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== @@ -2916,12 +4331,17 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.2.3: +html-minifier@^3.2.3, html-minifier@^3.5.20: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== @@ -3076,7 +4496,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.1.4: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== @@ -3203,11 +4623,23 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@1.2.0: +interpret@1.2.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -3238,11 +4670,24 @@ irregular-plurals@^1.0.0: resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3407,6 +4852,11 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee" integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA== +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3414,6 +4864,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3424,7 +4879,7 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-path-cwd@^2.0.0: +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== @@ -3443,19 +4898,24 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-plain-obj@^1.1.0: +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-promise@^2.1.0: +is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= @@ -3477,6 +4937,13 @@ is-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3487,6 +4954,13 @@ is-supported-regexp-flag@^1.0.0: resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= + dependencies: + html-comment-regex "^1.1.0" + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3499,6 +4973,23 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + is-whitespace-character@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac" @@ -3555,7 +5046,7 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -3568,11 +5059,24 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -3619,6 +5123,11 @@ jstree@^3.3.7: dependencies: jquery ">=1.9.1" +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -3638,7 +5147,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -3658,6 +5167,28 @@ known-css-properties@^0.18.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f" integrity sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw== +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -3665,6 +5196,13 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -3675,6 +5213,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -3692,6 +5237,20 @@ libjass@^0.11.0: resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + lightercollective@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.3.0.tgz#1f07638642ec645d70bdb69ab2777676f35a28f0" @@ -3702,6 +5261,17 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -3759,6 +5329,16 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -3795,6 +5375,13 @@ longest-streak@^2.0.1: resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -3815,6 +5402,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -3823,6 +5417,13 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" @@ -3835,7 +5436,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: +map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -3872,11 +5473,26 @@ markdown-table@^1.1.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + material-design-icons-iconfont@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== +math-expression-evaluator@^1.2.14: + version "1.2.22" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" + integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== + mathml-tag-names@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" @@ -3917,6 +5533,20 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoizee@0.4.X: + version "0.4.14" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + dependencies: + d "1" + es5-ext "^0.10.45" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.5" + memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -4131,7 +5761,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -4178,6 +5808,11 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -4234,6 +5869,16 @@ neo-async@^2.5.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +next-tick@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4303,6 +5948,13 @@ node-releases@^1.1.47: dependencies: semver "^6.3.0" +node-releases@^1.1.50: + version "1.1.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" + integrity sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ== + dependencies: + semver "^6.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4321,7 +5973,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -4343,6 +5995,23 @@ normalize-selector@^0.2.0: resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -4390,7 +6059,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4414,7 +6083,7 @@ object-is@^1.0.1: resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -4426,6 +6095,26 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.0.4, object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -4434,13 +6123,29 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.pick@^1.3.0: +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -4458,7 +6163,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -4491,6 +6196,13 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -4508,6 +6220,13 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -4592,6 +6311,13 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -4661,6 +6387,22 @@ parse-entities@^1.0.2, parse-entities@^1.1.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4679,6 +6421,11 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -4704,6 +6451,13 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4734,11 +6488,32 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4762,7 +6537,7 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -picomatch@^2.0.5: +picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== @@ -4801,6 +6576,16 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + plur@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" @@ -4822,6 +6607,75 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" + integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== + dependencies: + postcss "^5.0.4" + postcss-html@^0.36.0: version "0.36.0" resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" @@ -4856,6 +6710,75 @@ postcss-media-query-parser@^0.2.3: resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -4889,6 +6812,55 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + postcss-reporter@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" @@ -4944,7 +6916,7 @@ postcss-scss@^2.0.0: dependencies: postcss "^7.0.0" -postcss-selector-parser@^2.0.0: +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= @@ -4987,12 +6959,31 @@ postcss-sorting@^5.0.1: lodash "^4.17.14" postcss "^7.0.17" +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-value-parser@^3.3.0: +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -5002,7 +6993,16 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== -postcss@^5.0.0, postcss@^5.0.18: +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -5035,6 +7035,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -5043,7 +7048,17 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -process-nextick-args@~2.0.0: +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -5104,7 +7119,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -5128,11 +7143,24 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -5205,6 +7233,14 @@ read-file-stdin@^0.2.1: dependencies: gather-stream "^1.0.0" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -5222,6 +7258,15 @@ read-pkg-up@^7.0.0: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5254,6 +7299,28 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@2 || 3": + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.5, readable-stream@^2.3.5: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^3.0.6, readable-stream@^3.1.1: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" @@ -5272,6 +7339,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" @@ -5288,11 +7362,46 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" + integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== + dependencies: + balanced-match "^1.0.0" + +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-transform@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" + integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== + dependencies: + private "^0.1.6" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5313,6 +7422,30 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpu-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" + integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.1.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.3.tgz#74192c5805d35e9f5ebe3c1fb5b40d40a8a38460" + integrity sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA== + dependencies: + jsesc "~0.5.0" + relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -5368,7 +7501,24 @@ remark@^10.0.1: remark-stringify "^6.0.0" unified "^7.0.0" -remove-trailing-separator@^1.0.1: +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -5394,11 +7544,20 @@ repeat-string@^1.5.4, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -replace-ext@1.0.0: +replace-ext@1.0.0, replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5454,11 +7613,25 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + resolve@^1.10.0, resolve@^1.3.2: version "1.14.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" @@ -5496,6 +7669,13 @@ rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -5552,7 +7732,7 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: +sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -5594,11 +7774,23 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + "semver@2 || 3 || 4 || 5", semver@^5.4.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -5792,6 +7984,13 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + sortablejs@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" @@ -5813,6 +8012,17 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@~0.5.12: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -5826,7 +8036,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5836,6 +8046,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -5914,6 +8129,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + state-toggle@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.2.tgz#75e93a61944116b4959d665c8db2d243631d6ddc" @@ -5948,6 +8168,11 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -5964,7 +8189,12 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= -string-width@^1.0.1: +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -6074,6 +8304,18 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -6317,11 +8559,32 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + swiper@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.3.1.tgz#05a8e989daec0bf2841779f4f0d6fce9db259b9e" @@ -6383,6 +8646,15 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser@^4.0.0: + version "4.6.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.4.tgz#40a0b37afbe5b57e494536815efa68326840fc00" + integrity sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + terser@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.3.tgz#6074fbcf3517561c3272ea885f422c7a8c32d689" @@ -6397,7 +8669,15 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0: +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -6405,6 +8685,13 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through2@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -6415,6 +8702,11 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -6422,6 +8714,14 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -6429,6 +8729,14 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -6471,6 +8779,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -6541,6 +8856,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -6569,6 +8894,31 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + unherit@^1.0.4: version "1.1.2" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449" @@ -6577,6 +8927,29 @@ unherit@^1.0.4: inherits "^2.0.1" xtend "^4.0.1" +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + unified@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" @@ -6606,6 +8979,11 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -6620,6 +8998,14 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + unist-util-find-all-after@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" @@ -6788,6 +9174,13 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6796,11 +9189,21 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + vfile-location@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" @@ -6831,6 +9234,61 @@ vfile@^3.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vm-browserify@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" @@ -7011,6 +9469,16 @@ whatwg-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -7098,11 +9566,16 @@ x-is-string@^0.1.0: resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -7151,6 +9624,13 @@ yargs-parser@^16.1.0: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -7185,3 +9665,22 @@ yargs@13.2.4: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^13.1.0" + +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" From db4787a2599b0a06adc7339c77d8b783a37c248f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 27 Feb 2020 20:05:33 +0100 Subject: [PATCH 302/449] Add image minifier and copy stray files (gulp) --- gulpfile.js | 32 +- package.json | 1 + yarn.lock | 1254 +++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 1260 insertions(+), 27 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index e894cc1723..b176d60855 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,20 +1,21 @@ -"use strict"; +'use strict'; const { src, dest, series, parallel } = require('gulp'); const del = require('del'); -const babel = require("gulp-babel"); +const babel = require('gulp-babel'); const terser = require('gulp-terser'); const cssnano = require('gulp-cssnano'); const htmlmin = require('gulp-htmlmin'); +const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); // Clean assets function clean() { - return del(["dist/"]); + return del(['dist/']); } function javascript() { - return src("src/**/*.js", {base: './src/'}) + return src('src/**/*.js', {base: './src/'}) .pipe(sourcemaps.init({loadMaps: true})) .pipe(babel({ presets: ['@babel/preset-env'] @@ -24,21 +25,32 @@ function javascript() { mangle: false })) .pipe(sourcemaps.write('.')) - .pipe(dest("dist/")); + .pipe(dest('dist/')); } function css() { - return src("src/**/*.css", {base: './src/'}) + return src('src/**/*.css', {base: './src/'}) .pipe(sourcemaps.init({loadMaps: true})) .pipe(cssnano()) .pipe(sourcemaps.write('.')) - .pipe(dest("dist/")); + .pipe(dest('dist/')); } function html() { - return src("src/**/*.html", {base: './src/'}) + return src('src/**/*.html', {base: './src/'}) .pipe(htmlmin({ collapseWhitespace: true })) - .pipe(dest("dist/")); + .pipe(dest('dist/')); } -exports.default = series(clean, parallel(javascript, css, html)) +function images() { + return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'}) + .pipe(imagemin()) + .pipe(dest('dist/')) +} + +function copy() { + return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'}) + .pipe(dest('dist/')) +} + +exports.default = series(clean, parallel(javascript, css, html, images, copy)) diff --git a/package.json b/package.json index 4c93619287..50470f8d04 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "gulp-babel": "^8.0.0", "gulp-cssnano": "^2.1.3", "gulp-htmlmin": "^5.0.1", + "gulp-imagemin": "^7.1.0", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index 7c51aae230..6d65ac52a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -864,6 +864,11 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -913,6 +918,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -1305,6 +1315,18 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +arch@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + dependencies: + file-type "^4.2.0" + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -1591,11 +1613,67 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + bluebird@^3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -1634,7 +1712,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -1760,11 +1838,34 @@ browserslist@^4.8.5: electron-to-chromium "^1.3.361" node-releases "^1.1.50" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1789,6 +1890,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1: + version "5.4.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" + integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -1840,6 +1949,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -1877,6 +1999,14 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" @@ -1895,6 +2025,11 @@ camelcase-keys@^6.1.1: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -1940,6 +2075,16 @@ caniuse-lite@^1.0.30001030: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + ccount@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" @@ -2152,6 +2297,13 @@ clone-regexp@^2.1.0: dependencies: is-regexp "^2.0.0" +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" @@ -2176,6 +2328,15 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + coa@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" @@ -2289,6 +2450,13 @@ commander@~2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2341,6 +2509,14 @@ concat-with-sourcemaps@^1.0.5: dependencies: source-map "^0.6.1" +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -2358,12 +2534,17 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.3: +content-disposition@0.5.3, content-disposition@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== @@ -2511,6 +2692,15 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2551,6 +2741,11 @@ css-loader@^3.4.2: postcss-value-parser "^4.0.2" schema-utils "^2.6.0" +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -2561,11 +2756,34 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + css@2.X, css@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" @@ -2619,6 +2837,13 @@ cssnano@^3.0.0: postcss-value-parser "^3.2.3" postcss-zindex "^2.0.1" +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + csso@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" @@ -2700,6 +2925,66 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + deep-equal@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" @@ -2963,7 +3248,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -2978,6 +3263,46 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +download@^6.2.2: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3089,6 +3414,23 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + es-abstract@^1.5.1: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" @@ -3322,6 +3664,30 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -3349,6 +3715,13 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3405,6 +3778,21 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + ext@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" @@ -3541,11 +3929,26 @@ faye-websocket@~0.11.1: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" @@ -3575,6 +3978,55 @@ file-loader@^5.0.2: loader-utils "^1.2.3" schema-utils "^2.5.0" +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^10.4.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^12.0.0: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3644,6 +4096,13 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + findup-sync@3.0.0, findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -3751,7 +4210,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: +from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -3759,6 +4218,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -3841,6 +4305,18 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -3851,6 +4327,19 @@ get-stdin@^7.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -3863,6 +4352,16 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +gifsicle@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.0.0.tgz#d1ca7f223e949966d373eb1fb6e7ce156d257750" + integrity sha512-GZ1ym4uY12FHXsf26Kk1G06Edwago9zctqUqin69pm8ObA13jb3urgHU9PgKmtH6kHaCjEcjoRzNjxUyYvb1Bg== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + execa "^1.0.0" + logalot "^2.0.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -3983,7 +4482,7 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^10.0.1: +globby@^10.0.0, globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== @@ -4078,7 +4577,50 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.2.4: dependencies: minimist "1.1.x" -graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.6, graceful-fs@^4.2.2: +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -4088,6 +4630,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + gulp-babel@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-8.0.0.tgz#e0da96f4f2ec4a88dd3a3030f476e38ab2126d87" @@ -4142,6 +4689,24 @@ gulp-htmlmin@^5.0.1: plugin-error "^1.0.1" through2 "^2.0.3" +gulp-imagemin@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-7.1.0.tgz#d1810a908fb64b4fbf15a750d303d988443e68cf" + integrity sha512-6xBTNybmPY2YrvrhhlS8Mxi0zn0ypusLon63p9XXxDtIf7U7c6KcViz94K7Skosucr3378A6IY2kJSjJyuwylQ== + dependencies: + chalk "^3.0.0" + fancy-log "^1.3.2" + imagemin "^7.0.0" + plugin-error "^1.0.1" + plur "^3.0.1" + pretty-bytes "^5.3.0" + through2-concurrent "^2.0.0" + optionalDependencies: + imagemin-gifsicle "^7.0.0" + imagemin-mozjpeg "^8.0.0" + imagemin-optipng "^7.0.0" + imagemin-svgo "^7.0.0" + gulp-sourcemaps@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" @@ -4218,11 +4783,23 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -4331,7 +4908,7 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-comment-regex@^1.1.0: +html-comment-regex@^1.1.0, html-comment-regex@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== @@ -4389,6 +4966,11 @@ htmlparser2@^3.10.0, htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -4501,6 +5083,54 @@ ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== +imagemin-gifsicle@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz#1a7ab136a144c4678657ba3b6c412f80805d26b0" + integrity sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA== + dependencies: + execa "^1.0.0" + gifsicle "^5.0.0" + is-gif "^3.0.0" + +imagemin-mozjpeg@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.0.tgz#d2ca4e8c982c7c6eda55069af89dee4c1cebcdfd" + integrity sha512-+EciPiIjCb8JWjQNr1q8sYWYf7GDCNDxPYnkD11TNIjjWNzaV+oTg4DpOPQjl5ZX/KRCPMEgS79zLYAQzLitIA== + dependencies: + execa "^1.0.0" + is-jpg "^2.0.0" + mozjpeg "^6.0.0" + +imagemin-optipng@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-7.1.0.tgz#2225c82c35e5c29b7fa98d4f9ecee1161a68e888" + integrity sha512-JNORTZ6j6untH7e5gF4aWdhDCxe3ODsSLKs/f7Grewy3ebZpl1ZsU+VUTPY4rzeHgaFA8GSWOoA8V2M3OixWZQ== + dependencies: + exec-buffer "^3.0.0" + is-png "^2.0.0" + optipng-bin "^6.0.0" + +imagemin-svgo@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-7.1.0.tgz#528a42fd3d55eff5d4af8fd1113f25fb61ad6d9a" + integrity sha512-0JlIZNWP0Luasn1HT82uB9nU9aa+vUj6kpT+MjPW11LbprXC+iC4HDwn1r4Q2/91qj4iy9tRZNsFySMlEpLdpg== + dependencies: + is-svg "^4.2.1" + svgo "^1.3.2" + +imagemin@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-7.0.1.tgz#f6441ca647197632e23db7d971fffbd530c87dbf" + integrity sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w== + dependencies: + file-type "^12.0.0" + globby "^10.0.0" + graceful-fs "^4.2.2" + junk "^3.1.0" + make-dir "^3.0.0" + p-pipe "^3.0.0" + replace-ext "^1.0.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -4548,6 +5178,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -4628,6 +5265,14 @@ interpret@1.2.0, interpret@^1.1.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -4670,6 +5315,11 @@ irregular-plurals@^1.0.0: resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= +irregular-plurals@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" + integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== + is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" @@ -4752,6 +5402,11 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4816,6 +5471,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -4833,6 +5493,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-gif@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1" + integrity sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw== + dependencies: + file-type "^10.4.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -4852,6 +5519,16 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee" integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA== +is-jpg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" + integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" @@ -4879,6 +5556,11 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -4915,6 +5597,11 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-png@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-2.0.0.tgz#ee8cbc9e9b050425cedeeb4a6fb74a649b0a4a8d" + integrity sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g== + is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -4927,6 +5614,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -4944,7 +5638,12 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-stream@^1.1.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -4961,6 +5660,13 @@ is-svg@^2.0.0: dependencies: html-comment-regex "^1.1.0" +is-svg@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-4.2.1.tgz#095b496e345fec9211c2a7d5d021003e040d6f81" + integrity sha512-PHx3ANecKsKNl5y5+Jvt53Y4J7MfMpbNZkv384QNiswMKAWIbvcqbPz+sYbFKJI8Xv3be01GSFniPmoaP+Ai5A== + dependencies: + html-comment-regex "^1.1.2" + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -5032,6 +5738,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + "jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": version "1.0.2" resolved "https://github.com/jellyfin/jellyfin-noto#a441b179c833288fc372cadb408d32a76c5479f1" @@ -5077,6 +5791,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5123,11 +5842,23 @@ jstree@^3.3.7: dependencies: jquery ">=1.9.1" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== + just-debounce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -5365,6 +6096,14 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" +logalot@^2.0.0, logalot@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + loglevel@^1.6.6: version "1.6.6" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" @@ -5375,6 +6114,11 @@ longest-streak@^2.0.1: resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== +longest@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -5395,6 +6139,34 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5409,6 +6181,13 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -5417,6 +6196,13 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -5441,7 +6227,7 @@ map-cache@^0.2.0, map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0: +map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= @@ -5519,6 +6305,11 @@ mdast-util-compact@^1.0.0: dependencies: unist-util-visit "^1.1.0" +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -5555,6 +6346,22 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + meow@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" @@ -5647,6 +6454,11 @@ mime-db@1.40.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@^1.28.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" @@ -5669,6 +6481,11 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + min-indent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" @@ -5717,7 +6534,7 @@ minimist@1.1.x: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= -minimist@^1.2.0: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -5780,6 +6597,15 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mozjpeg@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-6.0.1.tgz#56969dddb5741ef2bcb1af066cae21e61a91a27b" + integrity sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.1.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5995,6 +6821,15 @@ normalize-selector@^0.2.0: resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + normalize-url@^1.4.0: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" @@ -6017,6 +6852,14 @@ npm-bundled@^1.0.1: resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + npm-packlist@^1.1.6: version "1.4.4" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" @@ -6042,7 +6885,7 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@~1.0.1: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -6123,6 +6966,14 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -6146,6 +6997,16 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -6196,6 +7057,15 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optipng-bin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-6.0.0.tgz#376120fa79d5e71eee2f524176efdd3a5eabd316" + integrity sha512-95bB4y8IaTsa/8x6QH4bLUuyvyOoGBCLDA7wOgDL8UFqJpSUh1Hob8JRJhit+wC1ZLN3tQ7mFt7KuBj0x8F2Wg== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.0.0" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -6215,6 +7085,13 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6249,16 +7126,45 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= + dependencies: + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" @@ -6306,6 +7212,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.0.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -6318,6 +7231,16 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-pipe@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.0.0.tgz#ab1fb87c0b8dd79b3bb03a8a23680fc9d054e132" + integrity sha512-gwwdRFmaxsT3IU+Tl3vYKVRdjfhg8Bbdjw7B+E0y6F7Yz6l+eaQLn0BRmGMXIhcPDONPtOkMoNwx1etZh4zPJA== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -6325,6 +7248,20 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6537,12 +7474,17 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== -pify@^2.0.0: +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -6593,6 +7535,13 @@ plur@^2.1.2: dependencies: irregular-plurals "^1.0.0" +plur@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b" + integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w== + dependencies: + irregular-plurals "^2.0.0" + portfinder@^1.0.25: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" @@ -7035,11 +7984,21 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-bytes@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -7078,6 +8037,11 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -7091,6 +8055,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -7161,6 +8130,15 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -7308,7 +8286,7 @@ read-pkg@^5.2.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.5, readable-stream@^2.3.5: +readable-stream@^2.0.5, readable-stream@^2.3.0, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7346,6 +8324,14 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" @@ -7544,6 +8530,13 @@ repeat-string@^1.5.4, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + replace-ext@1.0.0, replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" @@ -7639,6 +8632,13 @@ resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -7732,7 +8732,7 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4, sax@~1.2.1: +sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7762,6 +8762,13 @@ schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: ajv "^6.10.2" ajv-keywords "^3.4.1" +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -7781,6 +8788,18 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= + dependencies: + semver "^5.3.0" + "semver@2 || 3 || 4 || 5", semver@^5.4.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -7796,7 +8815,7 @@ semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -7984,6 +9003,13 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + dependencies: + sort-keys "^1.0.0" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -7991,6 +9017,13 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + sortablejs@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" @@ -8117,6 +9150,15 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + ssr-window@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-1.0.1.tgz#30752a6a4666e7767f0b7e6aa6fc2fdbd0d9b369" @@ -8129,6 +9171,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -8237,6 +9284,14 @@ string.prototype.trimleft@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string.prototype.trimright@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" @@ -8245,6 +9300,14 @@ string.prototype.trimright@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -8321,11 +9384,25 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" @@ -8348,6 +9425,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + style-loader@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" @@ -8585,6 +9669,25 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +svgo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + swiper@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.3.1.tgz#05a8e989daec0bf2841779f4f0d6fce9db259b9e" @@ -8618,6 +9721,19 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + tar@^4: version "4.4.10" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" @@ -8631,6 +9747,19 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" @@ -8669,6 +9798,13 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +through2-concurrent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-2.0.0.tgz#c9dd2c146504ec9962dbc86a5168b63d662669fa" + integrity sha512-R5/jLkfMvdmDD+seLwN7vB+mhbqzWop5fAjx5IX8/yQq7VhBhzDmhXgaHAOnhnWkCpRMM7gToYHycB0CS/pd+A== + dependencies: + through2 "^2.0.0" + through2-filter@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" @@ -8692,7 +9828,7 @@ through2@^3.0.1: dependencies: readable-stream "2 || 3" -through@^2.3.6: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -8707,6 +9843,11 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -8742,6 +9883,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -8796,6 +9942,11 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" @@ -8806,6 +9957,13 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + trim-trailing-lines@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a" @@ -8831,6 +9989,13 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -8894,6 +10059,14 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +unbzip2-stream@^1.0.9: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -9056,6 +10229,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -9091,6 +10269,20 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url-parse@^1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -9099,6 +10291,11 @@ url-parse@^1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + url-toolkit@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2" @@ -9130,6 +10327,16 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -9581,6 +10788,11 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" @@ -9684,3 +10896,11 @@ yargs@^7.1.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "^5.0.0" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From ac903b87e0f030f89919b26b0132209a260f0f9e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 27 Feb 2020 22:03:11 +0100 Subject: [PATCH 303/449] Add dev server and finish build --- gulpfile.js | 49 +- package.json | 10 +- src/index.html | 3 + webpack.common.js | 5 - yarn.lock | 1732 ++++++++++++++++++++++++++++++++++----------- 5 files changed, 1364 insertions(+), 435 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index b176d60855..54180f453b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,13 +1,35 @@ 'use strict'; const { src, dest, series, parallel } = require('gulp'); +const browserSync = require('browser-sync').create(); const del = require('del'); const babel = require('gulp-babel'); +const concat = require('gulp-concat'); const terser = require('gulp-terser'); -const cssnano = require('gulp-cssnano'); const htmlmin = require('gulp-htmlmin'); const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); +const webpack_stream = require('webpack-stream'); +const webpack_config = require('./webpack.prod.js'); +const inject = require('gulp-inject'); +const postcss = require('gulp-postcss'); +const cssnano = require('cssnano'); +const autoprefixer = require('autoprefixer'); + +function devBrowser() { + browserSync.init({ + server: { + baseDir: "./dist" + }, + port: 8080 + }); +} + +function setStandalone() { + return src(['src/standalone.js', 'src/scripts/apploader.js'], {base: './src/'}) + .pipe(concat('scripts/apploader.js')) + .pipe(dest('dist/')); +} // Clean assets function clean() { @@ -15,7 +37,7 @@ function clean() { } function javascript() { - return src('src/**/*.js', {base: './src/'}) + return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'}) .pipe(sourcemaps.init({loadMaps: true})) .pipe(babel({ presets: ['@babel/preset-env'] @@ -28,16 +50,24 @@ function javascript() { .pipe(dest('dist/')); } +function webpack() { + return webpack_stream(webpack_config) + .pipe(dest('dist/')); +} + function css() { return src('src/**/*.css', {base: './src/'}) .pipe(sourcemaps.init({loadMaps: true})) - .pipe(cssnano()) + .pipe(postcss([ + autoprefixer(), + cssnano() + ])) .pipe(sourcemaps.write('.')) .pipe(dest('dist/')); } function html() { - return src('src/**/*.html', {base: './src/'}) + return src(['src/**/*.html', '!src/index.html'], {base: './src/'}) .pipe(htmlmin({ collapseWhitespace: true })) .pipe(dest('dist/')); } @@ -53,4 +83,13 @@ function copy() { .pipe(dest('dist/')) } -exports.default = series(clean, parallel(javascript, css, html, images, copy)) +function injectBundle() { + return src('src/index.html', {base: './src/'}) + .pipe(inject( + src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} + )) + .pipe(dest('dist/')) +} + +exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) +exports.run = series(exports.default, setStandalone, devBrowser) diff --git a/package.json b/package.json index 50470f8d04..9360e55861 100644 --- a/package.json +++ b/package.json @@ -7,17 +7,22 @@ "devDependencies": { "@babel/core": "^7.8.6", "@babel/preset-env": "^7.8.6", + "autoprefixer": "^9.7.4", + "browser-sync": "^2.26.7", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", "css-loader": "^3.4.2", + "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^6.8.0", "file-loader": "^5.0.2", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", - "gulp-cssnano": "^2.1.3", + "gulp-concat": "^2.6.1", "gulp-htmlmin": "^5.0.1", "gulp-imagemin": "^7.1.0", + "gulp-inject": "^5.0.5", + "gulp-postcss": "^8.0.0", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", @@ -30,7 +35,8 @@ "webpack-cli": "^3.3.10", "webpack-concat-plugin": "^3.0.0", "webpack-dev-server": "^3.10.3", - "webpack-merge": "^4.2.2" + "webpack-merge": "^4.2.2", + "webpack-stream": "^5.2.1" }, "dependencies": { "alameda": "^1.4.0", diff --git a/src/index.html b/src/index.html index 8e9c8db3b7..624be19360 100644 --- a/src/index.html +++ b/src/index.html @@ -105,5 +105,8 @@
+ + + diff --git a/webpack.common.js b/webpack.common.js index bff1f5f4ea..707e4e0997 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -23,11 +23,6 @@ module.exports = { ] }, plugins: [ - new CleanWebpackPlugin(), - new CopyPlugin([{ - from: "**/*", - to: "." - }]), new CopyPlugin( Assets.map(asset => { return { diff --git a/yarn.lock b/yarn.lock index 6d65ac52a8..abd3785340 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1171,6 +1171,11 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -1214,7 +1219,7 @@ alameda@^1.4.0: resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" integrity sha512-d6nIRyg4SD/zBupcfZ3lUis58l4H/3U7c1RBtFkcz/7u1dDIQwx26KUvKJ35esOVP6WsAjmRoP2VQ39kQZT/Gg== -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: +alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= @@ -1231,6 +1236,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" @@ -1295,6 +1305,11 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1447,11 +1462,21 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -1489,6 +1514,11 @@ async-done@^1.2.0, async-done@^1.2.2: process-nextick-args "^2.0.0" stream-exhaust "^1.0.1" +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -1506,6 +1536,11 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" +async@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1518,18 +1553,6 @@ atob@^2.1.1, atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - autoprefixer@^9.0.0, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" @@ -1543,6 +1566,14 @@ autoprefixer@^9.0.0, autoprefixer@^9.7.4: postcss "^7.0.26" postcss-value-parser "^4.0.2" +axios@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -1565,26 +1596,36 @@ bach@^1.0.0: async-settle "^1.0.0" now-and-later "^2.0.0" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1603,6 +1644,13 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1674,6 +1722,11 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + bluebird@^3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -1753,6 +1806,64 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-sync-client@^2.26.6: + version "2.26.6" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" + integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== + dependencies: + etag "1.8.1" + fresh "0.5.2" + mitt "^1.1.3" + rxjs "^5.5.6" + +browser-sync-ui@^2.26.4: + version "2.26.4" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" + integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1" + immutable "^3" + server-destroy "1.0.1" + socket.io-client "^2.0.4" + stream-throttle "^0.1.3" + +browser-sync@^2.26.7: + version "2.26.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" + integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== + dependencies: + browser-sync-client "^2.26.6" + browser-sync-ui "^2.26.4" + bs-recipes "1.3.4" + bs-snippet-injector "^2.0.1" + chokidar "^2.0.4" + connect "3.6.6" + connect-history-api-fallback "^1" + dev-ip "^1.0.1" + easy-extender "^2.3.4" + eazy-logger "^3" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "^3" + localtunnel "1.9.2" + micromatch "^3.1.10" + opn "5.3.0" + portscanner "2.1.1" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + send "0.16.2" + serve-index "1.9.1" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "2.1.1" + ua-parser-js "0.7.17" + yargs "6.4.0" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -1812,7 +1923,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^1.1.3, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: +browserslist@^1.1.3: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= @@ -1820,6 +1931,15 @@ browserslist@^1.1.3, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7 caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" +browserslist@^4.0.0, browserslist@^4.8.5: + version "4.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.0.tgz#ff85c390889e0f754d7bd8ad13412575cdcf5dc7" + integrity sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg== + dependencies: + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.361" + node-releases "^1.1.50" + browserslist@^4.8.3: version "4.8.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" @@ -1829,14 +1949,15 @@ browserslist@^4.8.3: electron-to-chromium "^1.3.341" node-releases "^1.1.47" -browserslist@^4.8.5: - version "4.9.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.0.tgz#ff85c390889e0f754d7bd8ad13412575cdcf5dc7" - integrity sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg== - dependencies: - caniuse-lite "^1.0.30001030" - electron-to-chromium "^1.3.361" - node-releases "^1.1.50" +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + integrity sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU= + +bs-snippet-injector@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" + integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= buffer-alloc-unsafe@^1.1.0: version "1.1.0" @@ -1981,6 +2102,11 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -2045,36 +2171,31 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" + browserslist "^4.0.0" + caniuse-lite "^1.0.0" lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634: - version "1.0.30001030" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001030.tgz#0d832cbd1d8e6bdf6bd3f25d531b05c5787dbeb7" - integrity sha512-NegSvVCGfkDpHC3AosHhhn2CDVJoJXiH3LlMTKjc5GAwugaMHvsQLNItUD4RBOAvvOrw3Uz/XlYjT1ynW0rviA== - caniuse-db@^1.0.30000639: version "1.0.30001024" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001024.tgz#64045c5d0d57b00c30e09323b578b2305c4737ad" integrity sha512-dmwZ7u58E68UCexHf92QERFL8kwwCv0TVS1LCNluhZo+565AXU5uNtnPF+J5E2MExwWJeNnhTD63BH8ncMV09g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001030: + version "1.0.30001030" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" + integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== + caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: version "1.0.30001023" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== -caniuse-lite@^1.0.30001030: - version "1.0.30001030" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" - integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== - caw@^2.0.0, caw@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" @@ -2143,7 +2264,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.0, chokidar@^2.1.8: +chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -2201,13 +2322,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2309,11 +2423,6 @@ clone-stats@^1.0.0: resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -2337,13 +2446,6 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2371,7 +2473,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.3.0, color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -2395,46 +2497,37 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== dependencies: color-name "^1.0.0" + simple-swizzle "^0.2.2" color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + color-convert "^1.9.1" + color-string "^1.5.2" commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== +commander@^2.2.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -2462,11 +2555,26 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2502,7 +2610,7 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concat-with-sourcemaps@^1.0.5: +concat-with-sourcemaps@^1.0.0, concat-with-sourcemaps@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== @@ -2517,11 +2625,21 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -connect-history-api-fallback@^1.6.0: +connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +connect@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -2568,6 +2686,11 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" @@ -2718,11 +2841,19 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-color-names@0.0.4: +css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + css-loader@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" @@ -2799,43 +2930,73 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano@^3.0.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" csso@^4.0.2: version "4.0.2" @@ -2844,14 +3005,6 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.37" -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2900,13 +3053,20 @@ debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -3056,11 +3216,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -3131,6 +3286,11 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3263,6 +3423,13 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + download@^6.2.2: version "6.2.5" resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" @@ -3321,6 +3488,20 @@ each-props@^1.3.0: is-plain-object "^2.0.1" object.defaults "^1.1.0" +easy-extender@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" + integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== + dependencies: + lodash "^4.17.10" + +eazy-logger@^3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= + dependencies: + tfunk "^3.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3369,7 +3550,7 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -encodeurl@~1.0.2: +encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= @@ -3381,6 +3562,74 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~4.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" @@ -3507,6 +3756,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -3587,11 +3841,6 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -3621,7 +3870,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= @@ -3634,6 +3883,11 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + eventemitter3@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -3843,7 +4097,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fancy-log@^1.3.2: +fancy-log@^1.3.2, fancy-log@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== @@ -4044,6 +4298,19 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4174,6 +4441,13 @@ flv.js@^1.5.0: es6-promise "^4.2.5" webworkify "^1.5.0" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" @@ -4205,7 +4479,7 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fresh@0.5.2: +fresh@0.5.2, fresh@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= @@ -4223,6 +4497,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -4352,6 +4635,13 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + gifsicle@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.0.0.tgz#d1ca7f223e949966d373eb1fb6e7ce156d257750" @@ -4635,6 +4925,18 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= +group-array@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/group-array/-/group-array-1.0.0.tgz#e2e8d8890e5b46f72eb49b71e8af675173a9d0f7" + integrity sha512-PJresALe5TUzSIcdWKLdAKcdUDxv8du2EGueShgAL2xknbcTo5Bk1xbNaNhxpWxxAx/SV7N+5S0UyK7XV0+QhA== + dependencies: + arr-flatten "^1.1.0" + for-own "^1.0.0" + get-value "^3.0.1" + kind-of "^6.0.2" + split-string "^6.1.0" + union-value "^2.0.1" + gulp-babel@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-8.0.0.tgz#e0da96f4f2ec4a88dd3a3030f476e38ab2126d87" @@ -4669,16 +4971,14 @@ gulp-cli@^2.2.0: v8flags "^3.0.1" yargs "^7.1.0" -gulp-cssnano@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz#02007e2817af09b3688482b430ad7db807aebf72" - integrity sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA== +gulp-concat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= dependencies: - buffer-from "^1.0.0" - cssnano "^3.0.0" - object-assign "^4.0.1" - plugin-error "^1.0.1" - vinyl-sourcemaps-apply "^0.2.1" + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" gulp-htmlmin@^5.0.1: version "5.0.1" @@ -4707,6 +5007,31 @@ gulp-imagemin@^7.1.0: imagemin-optipng "^7.0.0" imagemin-svgo "^7.0.0" +gulp-inject@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/gulp-inject/-/gulp-inject-5.0.5.tgz#c23df9cbf331447b6e13a1498cc51b63a7ceef67" + integrity sha512-5bGMjqleXUHPu4CI1pnVzHtwyMy+Zt8EMo1RFwNsOpidPxwjFwyLgmsRZWGMMI8UenJMJRjURqwznfFmqb5wgw== + dependencies: + ansi-colors "^4.1.1" + arrify "^2.0.1" + escape-string-regexp "^2.0.0" + fancy-log "^1.3.3" + group-array "^1.0.0" + plugin-error "^1.0.1" + stream-to-array "^2.3.0" + through2 "^3.0.1" + +gulp-postcss@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-8.0.0.tgz#8d3772cd4d27bca55ec8cb4c8e576e3bde4dc550" + integrity sha512-Wtl6vH7a+8IS/fU5W9IbOpcaLqKxd5L1DUOzaPmlnCbX1CrG0aWdwVnC3Spn8th0m8D59YbysV5zPUe1n/GJYg== + dependencies: + fancy-log "^1.3.2" + plugin-error "^1.0.1" + postcss "^7.0.2" + postcss-load-config "^2.0.0" + vinyl-sourcemaps-apply "^0.2.1" + gulp-sourcemaps@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" @@ -4768,6 +5093,18 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -4836,7 +5173,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -4864,6 +5201,11 @@ he@1.2.x: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + hls.js@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.13.1.tgz#371ae0754fea2ca9bc2c0b3279e4ca631c7a595a" @@ -4908,6 +5250,16 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + html-comment-regex@^1.1.0, html-comment-regex@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" @@ -4987,17 +5339,7 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: +http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -5008,6 +5350,16 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + "http-parser-js@>=0.4.0 <0.4.11": version "0.4.10" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" @@ -5023,6 +5375,14 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" +http-proxy@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE= + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + http-proxy@^1.17.0: version "1.18.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" @@ -5131,6 +5491,18 @@ imagemin@^7.0.0: p-pipe "^3.0.0" replace-ext "^1.0.0" +immutable@^3: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -5155,6 +5527,13 @@ import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-lazy@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" @@ -5200,6 +5579,11 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -5380,6 +5764,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -5392,7 +5781,7 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.0: +is-buffer@^2.0.0, is-buffer@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== @@ -5407,6 +5796,18 @@ is-callable@^1.1.5: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5534,6 +5935,13 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== + dependencies: + lodash.isfinite "^3.3.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5556,6 +5964,11 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" @@ -5638,6 +6051,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" @@ -5653,10 +6071,10 @@ is-supported-regexp-flag@^1.0.0: resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== dependencies: html-comment-regex "^1.1.0" @@ -5721,6 +6139,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -5773,14 +6196,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5835,6 +6250,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= + optionalDependencies: + graceful-fs "^4.1.6" + jstree@^3.3.7: version "3.3.8" resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.8.tgz#8d0f506028d65e5207efa7b78e6541cbe35622c1" @@ -5987,6 +6409,11 @@ lightercollective@^0.3.0: resolved "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.3.0.tgz#1f07638642ec645d70bdb69ab2777676f35a28f0" integrity sha512-RFOLSUVvwdK3xA0P8o6G7QGXLIyy1L2qv5caEI7zXN5ciaEjbAriRF182kbsoJ1S1TgvpyGcN485fMky6qxOPw== +limiter@^1.0.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6037,6 +6464,16 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +localtunnel@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" + integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== + dependencies: + axios "0.19.0" + debug "4.1.1" + openurl "1.1.1" + yargs "6.6.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6060,11 +6497,26 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.clone@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.some@^4.2.2: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -6274,11 +6726,6 @@ material-design-icons-iconfont@^5.0.1: resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== -math-expression-evaluator@^1.2.14: - version "1.2.22" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" - integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== - mathml-tag-names@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" @@ -6466,6 +6913,11 @@ mime-types@~2.1.17, mime-types@~2.1.24: dependencies: mime-db "1.40.0" +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -6501,7 +6953,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6570,6 +7022,11 @@ mississippi@^3.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mitt@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -6830,15 +7287,10 @@ normalize-url@2.0.1: query-string "^5.0.1" sort-keys "^2.0.0" -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== now-and-later@^2.0.0: version "2.0.1" @@ -6907,6 +7359,11 @@ object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4. resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -6931,6 +7388,11 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -7038,6 +7500,18 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= + +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -7368,6 +7842,20 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7551,79 +8039,74 @@ portfinder@^1.0.25: debug "^3.1.1" mkdirp "^0.5.1" +portscanner@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + integrity sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y= + dependencies: + async "1.5.2" + is-number-like "^1.0.3" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: - postcss "^5.0.14" + postcss "^7.0.0" -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== dependencies: - postcss "^5.0.4" + postcss "^7.0.0" -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: - postcss "^5.0.14" + postcss "^7.0.0" -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== - dependencies: - postcss "^5.0.4" + postcss "^7.0.0" postcss-html@^0.36.0: version "0.36.0" @@ -7646,6 +8129,14 @@ postcss-less@^3.1.0, postcss-less@^3.1.4: dependencies: postcss "^7.0.14" +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + postcss-markdown@^0.36.0: version "0.36.0" resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" @@ -7659,74 +8150,67 @@ postcss-media-query-parser@^0.2.3: resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" vendors "^1.0.0" -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" uniqs "^2.0.0" -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" postcss-modules-extract-imports@^2.0.0: version "2.0.0" @@ -7761,54 +8245,115 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== dependencies: - postcss "^5.0.5" + postcss "^7.0.0" -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== dependencies: - postcss "^5.0.4" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" postcss-reporter@^1.3.3: version "1.4.1" @@ -7865,7 +8410,7 @@ postcss-scss@^2.0.0: dependencies: postcss "^7.0.0" -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: +postcss-selector-parser@^2.0.0: version "2.2.3" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= @@ -7874,6 +8419,15 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" @@ -7908,31 +8462,31 @@ postcss-sorting@^5.0.1: lodash "^4.17.14" postcss "^7.0.17" -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" + alphanum-sort "^1.0.0" + postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -7942,16 +8496,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: +postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -7979,12 +8524,21 @@ postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: source-map "^0.6.1" supports-color "^6.1.0" +postcss@^7.0.27: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0, prepend-http@^1.0.1: +prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= @@ -8117,19 +8671,16 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qs@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -8179,7 +8730,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -8194,6 +8745,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.3.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -8348,22 +8909,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" - integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== - dependencies: - balanced-match "^1.0.0" - regenerate-unicode-properties@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -8566,7 +9111,7 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requires-port@^1.0.0: +requires-port@1.x.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= @@ -8632,6 +9177,14 @@ resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + integrity sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -8662,6 +9215,16 @@ reusify@^1.0.0: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -8703,6 +9266,18 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= + +rxjs@^5.5.6: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" @@ -8732,7 +9307,7 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -8820,6 +9395,25 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -8844,7 +9438,7 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.9.1: +serve-index@1.9.1, serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -8857,6 +9451,16 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" @@ -8867,6 +9471,11 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -8882,6 +9491,13 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +set-value@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.1.tgz#52c82af7653ba69eb1db92e81f5cdb32739b9e95" + integrity sha512-w6n3GUPYAWQj4ZyHWzD7K2FnFXHx9OTwJYbWg+6nXjG8sCLfs9DGv+KlqglKIIJx+ks7MlFuwFW2RBPb+8V+xg== + dependencies: + is-plain-object "^2.0.4" + setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -8929,6 +9545,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -8983,6 +9606,81 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-client@^2.0.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" + sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -9069,7 +9767,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -9145,6 +9843,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split-string@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-6.1.0.tgz#e9cedcf94cdab077d9b5528927894dec4b0f42ab" + integrity sha512-9UBdnmnvx2NLLd4bMs7CEKK+wSzbujVv3ONyorkP1o8M3pVJQtXDO1cN19xD1JJs6ltOrtPrkUND0HzLSinUcA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -9199,6 +9902,16 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -9236,6 +9949,21 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + integrity sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM= + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + +stream-to-array@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= + dependencies: + any-promise "^1.1.0" + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -9462,6 +10190,15 @@ stylehacks@^2.3: text-table "^0.2.0" write-file-stdout "0.0.2" +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + stylelint-config-rational-order@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/stylelint-config-rational-order/-/stylelint-config-rational-order-0.1.2.tgz#4e98e390783d437f0ec41fb73bc41992e78d02a0" @@ -9629,7 +10366,7 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -9656,20 +10393,7 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -svgo@^1.3.2: +svgo@^1.0.0, svgo@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== @@ -9696,6 +10420,11 @@ swiper@^5.3.1: dom7 "^2.1.3" ssr-window "^1.0.1" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + table@^5.0.0, table@^5.4.6: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -9798,6 +10527,14 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +tfunk@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" + integrity sha1-OORBT8ZJd9h6/apy+sttKfgve1s= + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + through2-concurrent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-2.0.0.tgz#c9dd2c146504ec9962dbc86a5168b63d662669fa" @@ -9863,6 +10600,11 @@ timers-ext@^0.1.5: es5-ext "~0.10.46" next-tick "1" +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9878,6 +10620,11 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -10043,6 +10790,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@0.7.17: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== + uglify-es@^3.3.9: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -10059,6 +10811,11 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + unbzip2-stream@^1.0.9: version "1.3.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" @@ -10147,6 +10904,14 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +union-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-2.0.1.tgz#4e1ab0f99ab52c52a53e14d8039b5130fef682b8" + integrity sha512-NmcRHHhUy1qWmp6yYWsaURV2qwfS24TmTtO9S9x0L41wCNNVBQFD3toOzO0cd8SsNrFhbw/O0iYO5uffXGYocw== + dependencies: + get-value "^3.0.1" + set-value "^3.0.0" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -10224,6 +10989,11 @@ unist-util-visit@^1.1.0: dependencies: unist-util-visit-parents "^2.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -10484,7 +11254,7 @@ vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: dependencies: source-map "^0.5.1" -vinyl@^2.0.0: +vinyl@^2.0.0, vinyl@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== @@ -10623,6 +11393,50 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-stream@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-5.2.1.tgz#35c992161399fe8cad9c10d4a5c258f022629b39" + integrity sha512-WvyVU0K1/VB1NZ7JfsaemVdG0PXAQUqbjUNW4A58th4pULvKMQxG+y33HXTL02JvD56ko2Cub+E2NyPwrLBT/A== + dependencies: + fancy-log "^1.3.3" + lodash.clone "^4.3.2" + lodash.some "^4.2.2" + memory-fs "^0.4.1" + plugin-error "^1.0.1" + supports-color "^5.5.0" + through "^2.3.8" + vinyl "^2.1.0" + webpack "^4.26.1" + +webpack@^4.26.1: + version "4.41.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.6.tgz#12f2f804bf6542ef166755050d4afbc8f66ba7e1" + integrity sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + webpack@^4.41.5: version "4.41.5" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" @@ -10676,11 +11490,6 @@ whatwg-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -10705,6 +11514,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -10768,11 +11582,32 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10836,6 +11671,13 @@ yargs-parser@^16.1.0: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^4.1.0, yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= + dependencies: + camelcase "^3.0.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -10878,6 +11720,45 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" +yargs@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" + integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.1.0" + +yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" @@ -10904,3 +11785,8 @@ yauzl@^2.4.2: dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= From 4c6dfbf2c5ffc45f5da70d446cc08c9f3a4d11d1 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 09:01:22 +0100 Subject: [PATCH 304/449] Enable live reloading for browsersync --- gulpfile.js | 42 ++- package.json | 3 + webpack.dev.js | 14 +- yarn.lock | 714 ++++++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 718 insertions(+), 55 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 54180f453b..0374c0ba81 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,6 +1,6 @@ 'use strict'; -const { src, dest, series, parallel } = require('gulp'); +const { src, dest, series, parallel, watch } = require('gulp'); const browserSync = require('browser-sync').create(); const del = require('del'); const babel = require('gulp-babel'); @@ -9,6 +9,11 @@ const terser = require('gulp-terser'); const htmlmin = require('gulp-htmlmin'); const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); +const mode = require('gulp-mode')({ + modes: ["production", "development"], + default: "development", + verbose: false + }); const webpack_stream = require('webpack-stream'); const webpack_config = require('./webpack.prod.js'); const inject = require('gulp-inject'); @@ -16,13 +21,21 @@ const postcss = require('gulp-postcss'); const cssnano = require('cssnano'); const autoprefixer = require('autoprefixer'); -function devBrowser() { +function serve() { browserSync.init({ server: { baseDir: "./dist" }, port: 8080 }); + + watch(['src/**/*.js', '!src/bundle.js'], javascript); + watch('src/bundle.js', webpack); + watch('src/**/*.css', css); + watch(['src/**/*.html', '!src/index.html'], html); + watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); + watch(['src/**/*.json', 'src/**/*.ico'], copy); + watch('src/index.html', injectBundle); } function setStandalone() { @@ -38,7 +51,7 @@ function clean() { function javascript() { return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'}) - .pipe(sourcemaps.init({loadMaps: true})) + .pipe(mode.development(sourcemaps.init({loadMaps: true}))) .pipe(babel({ presets: ['@babel/preset-env'] })) @@ -46,41 +59,47 @@ function javascript() { keep_fnames: true, mangle: false })) - .pipe(sourcemaps.write('.')) - .pipe(dest('dist/')); + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream());; } function webpack() { return webpack_stream(webpack_config) - .pipe(dest('dist/')); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function css() { return src('src/**/*.css', {base: './src/'}) - .pipe(sourcemaps.init({loadMaps: true})) + .pipe(mode.development(sourcemaps.init({loadMaps: true}))) .pipe(postcss([ autoprefixer(), cssnano() ])) - .pipe(sourcemaps.write('.')) - .pipe(dest('dist/')); + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function html() { return src(['src/**/*.html', '!src/index.html'], {base: './src/'}) .pipe(htmlmin({ collapseWhitespace: true })) - .pipe(dest('dist/')); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function images() { return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'}) .pipe(imagemin()) .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function copy() { return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'}) .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function injectBundle() { @@ -89,7 +108,8 @@ function injectBundle() { src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} )) .pipe(dest('dist/')) + .pipe(browserSync.stream()); } exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) -exports.run = series(exports.default, setStandalone, devBrowser) +exports.serve = series(exports.default, setStandalone, serve) diff --git a/package.json b/package.json index 9360e55861..a98705b17a 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,13 @@ "gulp-htmlmin": "^5.0.1", "gulp-imagemin": "^7.1.0", "gulp-inject": "^5.0.5", + "gulp-mode": "^1.0.2", "gulp-postcss": "^8.0.0", + "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", + "node-sass": "^4.13.1", "style-loader": "^1.1.3", "stylelint": "^13.1.0", "stylelint-config-rational-order": "^0.1.2", diff --git a/webpack.dev.js b/webpack.dev.js index 81b69d896c..baa3120a4b 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -1,8 +1,6 @@ const path = require("path"); const common = require("./webpack.common"); const merge = require("webpack-merge"); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const ConcatPlugin = require('webpack-concat-plugin'); module.exports = merge(common, { mode: "development", @@ -28,15 +26,5 @@ module.exports = merge(common, { ] } ] - }, - plugins: [ - new HtmlWebpackPlugin({ - filename: 'index.html', - template: 'index.html' - }), - new ConcatPlugin({ - name: 'scripts/apploader.js', - filesToConcat: ['./standalone.js', './scripts/apploader.js'] - }) - ] + } }); diff --git a/yarn.lock b/yarn.lock index abd3785340..a4d7070fd3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1214,6 +1214,16 @@ ajv@^6.10.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + alameda@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" @@ -1224,6 +1234,11 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" @@ -1391,6 +1406,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" @@ -1452,7 +1472,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: +array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= @@ -1486,6 +1506,18 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -1524,6 +1556,11 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -1548,6 +1585,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1566,6 +1608,16 @@ autoprefixer@^9.0.0, autoprefixer@^9.7.4: postcss "^7.0.26" postcss-value-parser "^4.0.2" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + axios@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" @@ -1644,6 +1696,18 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= + better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -1727,6 +1791,13 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + bluebird@^3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -2196,6 +2267,11 @@ caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + caw@^2.0.0, caw@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" @@ -2211,7 +2287,7 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2418,11 +2494,21 @@ clone-response@1.0.2: dependencies: mimic-response "^1.0.0" +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= + clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -2518,6 +2604,13 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -2747,7 +2840,7 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -2815,6 +2908,14 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -3025,11 +3126,23 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= + debug-fabulous@1.X: version "1.1.0" resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" @@ -3243,6 +3356,11 @@ del@^5.1.0: rimraf "^3.0.0" slash "^3.0.0" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -3465,6 +3583,13 @@ download@^7.1.0: p-event "^2.1.0" pify "^3.0.0" +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -3502,6 +3627,14 @@ eazy-logger@^3: dependencies: tfunk "^3.0.1" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -4069,7 +4202,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4097,7 +4230,17 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fancy-log@^1.3.2, fancy-log@^1.3.3: +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@^1.1.0, fancy-log@^1.3.2, fancy-log@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== @@ -4467,6 +4610,20 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -4544,6 +4701,16 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4573,6 +4740,13 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -4642,6 +4816,13 @@ get-value@^3.0.1: dependencies: isobject "^3.0.1" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + gifsicle@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.0.0.tgz#d1ca7f223e949966d373eb1fb6e7ce156d257750" @@ -4700,10 +4881,10 @@ glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.0.0, glob@^7.1.1, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4712,10 +4893,10 @@ glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4853,6 +5034,15 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= +globule@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== + dependencies: + glob "~7.1.1" + lodash "~4.17.12" + minimatch "~3.0.2" + glogg@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" @@ -5021,6 +5211,13 @@ gulp-inject@^5.0.5: stream-to-array "^2.3.0" through2 "^3.0.1" +gulp-mode@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/gulp-mode/-/gulp-mode-1.0.2.tgz#33c76033491fb71f47f1ebf8c67561ad9da7dfc9" + integrity sha512-i1UqW2NmBkyNirpthzbW1Na7t6JeSttuWjJyX8oY2Xve1Nx9tGhscoFgv1I/EOEsRcxGmhGyIRvpiKKL1d918A== + dependencies: + gulp-util "^3.0.8" + gulp-postcss@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-8.0.0.tgz#8d3772cd4d27bca55ec8cb4c8e576e3bde4dc550" @@ -5032,6 +5229,20 @@ gulp-postcss@^8.0.0: postcss-load-config "^2.0.0" vinyl-sourcemaps-apply "^0.2.1" +gulp-sass@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-4.0.2.tgz#cfb1e3eff2bd9852431c7ce87f43880807d8d505" + integrity sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg== + dependencies: + chalk "^2.3.0" + lodash.clonedeep "^4.3.2" + node-sass "^4.8.3" + plugin-error "^1.0.1" + replace-ext "^1.0.0" + strip-ansi "^4.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + gulp-sourcemaps@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" @@ -5059,6 +5270,30 @@ gulp-terser@^1.2.0: through2 "^3.0.1" vinyl-sourcemaps-apply "^0.2.1" +gulp-util@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + gulp@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" @@ -5081,6 +5316,19 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + hard-rejection@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -5120,6 +5368,13 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= + dependencies: + sparkles "^1.0.0" + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -5392,6 +5647,15 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -5557,6 +5821,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -5597,7 +5866,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6092,7 +6361,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -6134,6 +6403,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6161,6 +6435,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" @@ -6178,6 +6457,11 @@ jquery@>=1.9.1, jquery@^3.4.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== +js-base64@^2.1.8: + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== + js-base64@^2.1.9: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" @@ -6196,6 +6480,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -6221,11 +6510,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -6257,6 +6556,16 @@ jsonfile@^3.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + jstree@^3.3.7: version "3.3.8" resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.8.tgz#8d0f506028d65e5207efa7b78e6541cbe35622c1" @@ -6497,32 +6806,136 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + lodash.clone@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + lodash.isfinite@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + lodash.some@^4.2.2: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6793,7 +7206,7 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -meow@^3.3.0: +meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= @@ -6896,15 +7309,22 @@ mime-db@1.40.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.43.0, mime-db@^1.28.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + "mime-db@>= 1.40.0 < 2": version "1.42.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== -mime-db@^1.28.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.24" @@ -6953,7 +7373,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6986,7 +7406,7 @@ minimist@1.1.x: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -7035,7 +7455,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -7091,6 +7511,13 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= + dependencies: + duplexer2 "0.0.2" + mute-stdout@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" @@ -7101,7 +7528,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: +nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -7179,6 +7606,24 @@ node-forge@0.9.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" @@ -7238,6 +7683,36 @@ node-releases@^1.1.50: dependencies: semver "^6.3.0" +node-sass@^4.13.1, node-sass@^4.8.3: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -7327,7 +7802,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -7354,11 +7829,21 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" @@ -7592,7 +8077,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: +osenv@0, osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -7967,6 +8452,11 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -8614,6 +9104,11 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -8661,7 +9156,7 @@ punycode@^1.2.4: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -8681,6 +9176,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -8869,6 +9369,16 @@ readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -9082,6 +9592,11 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + replace-ext@1.0.0, replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" @@ -9096,6 +9611,32 @@ replace-homedir@^1.0.0: is-absolute "^1.0.0" remove-trailing-separator "^1.1.0" +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -9225,6 +9766,13 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= +rimraf@2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -9302,11 +9850,21 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -9337,6 +9895,14 @@ schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: ajv "^6.10.2" ajv-keywords "^3.4.1" +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -9395,6 +9961,11 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -9767,6 +10338,13 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -9862,6 +10440,21 @@ squeak@^1.0.0: console-stream "^0.1.1" lpad-align "^1.0.1" +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + ssr-window@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-1.0.1.tgz#30752a6a4666e7767f0b7e6aa6fc2fdbd0d9b369" @@ -9912,6 +10505,13 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -10050,6 +10650,11 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -10463,6 +11068,15 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + tar@^4: version "4.4.10" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" @@ -10689,6 +11303,14 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -10726,6 +11348,13 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -10743,6 +11372,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -11181,6 +11815,15 @@ vendors@^1.0.0: resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vfile-location@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" @@ -11254,6 +11897,15 @@ vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: dependencies: source-map "^0.5.1" +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + vinyl@^2.0.0, vinyl@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" @@ -11500,7 +12152,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -11759,7 +12411,7 @@ yargs@6.6.0: y18n "^3.2.1" yargs-parser "^4.2.0" -yargs@^7.1.0: +yargs@^7.0.0, yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= From fb83b6b2443823d897efc335b8e5bdfc124a4282 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 09:49:01 +0100 Subject: [PATCH 305/449] Add sass compiler to css task (gulp) --- gulpfile.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 0374c0ba81..f7457df6bc 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -20,6 +20,9 @@ const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const cssnano = require('cssnano'); const autoprefixer = require('autoprefixer'); +const sass = require('gulp-sass'); + +sass.compiler = require('node-sass') function serve() { browserSync.init({ @@ -71,8 +74,9 @@ function webpack() { } function css() { - return src('src/**/*.css', {base: './src/'}) + return src(['src/**/*.css', 'src/**/*.scss'], {base: './src/'}) .pipe(mode.development(sourcemaps.init({loadMaps: true}))) + .pipe(sass().on('error', sass.logError)) .pipe(postcss([ autoprefixer(), cssnano() From 6c2ed00a61e0a299c6886a665365f6d0eb6dd492 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 14:36:42 +0100 Subject: [PATCH 306/449] Run postcss for webpack bundle --- gulpfile.js | 18 ++- package.json | 11 ++ postcss.config.js | 11 ++ src/scripts/site.js | 1 - webpack.common.js | 5 + webpack.dev.js | 7 +- webpack.prod.js | 12 +- yarn.lock | 386 +++++++++++++++++++++++++++++++++++++++++++- 8 files changed, 432 insertions(+), 19 deletions(-) create mode 100644 postcss.config.js diff --git a/gulpfile.js b/gulpfile.js index f7457df6bc..539db09ce5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -15,7 +15,6 @@ const mode = require('gulp-mode')({ verbose: false }); const webpack_stream = require('webpack-stream'); -const webpack_config = require('./webpack.prod.js'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const cssnano = require('cssnano'); @@ -24,6 +23,13 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass') + +if(mode.production()) { + var webpack_config = require('./webpack.prod.js'); +} else { + var webpack_config = require('./webpack.dev.js'); +} + function serve() { browserSync.init({ server: { @@ -39,6 +45,7 @@ function serve() { watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); watch(['src/**/*.json', 'src/**/*.ico'], copy); watch('src/index.html', injectBundle); + watch(['src/standalone.js', 'src/scripts/apploader.js'], setStandalone); } function setStandalone() { @@ -56,7 +63,9 @@ function javascript() { return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'}) .pipe(mode.development(sourcemaps.init({loadMaps: true}))) .pipe(babel({ - presets: ['@babel/preset-env'] + presets: [ + ['@babel/preset-env'] + ] })) .pipe(terser({ keep_fnames: true, @@ -77,10 +86,7 @@ function css() { return src(['src/**/*.css', 'src/**/*.scss'], {base: './src/'}) .pipe(mode.development(sourcemaps.init({loadMaps: true}))) .pipe(sass().on('error', sass.logError)) - .pipe(postcss([ - autoprefixer(), - cssnano() - ])) + .pipe(postcss()) .pipe(mode.development(sourcemaps.write('.'))) .pipe(dest('dist/')) .pipe(browserSync.stream()); diff --git a/package.json b/package.json index a98705b17a..806f086868 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@babel/core": "^7.8.6", "@babel/preset-env": "^7.8.6", "autoprefixer": "^9.7.4", + "babel-loader": "^8.0.6", "browser-sync": "^2.26.7", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", @@ -29,6 +30,8 @@ "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", "node-sass": "^4.13.1", + "postcss-loader": "^3.0.0", + "postcss-preset-env": "^6.7.0", "style-loader": "^1.1.3", "stylelint": "^13.1.0", "stylelint-config-rational-order": "^0.1.2", @@ -43,6 +46,7 @@ }, "dependencies": { "alameda": "^1.4.0", + "core-js": "^3.6.4", "document-register-element": "^1.14.3", "flv.js": "^1.5.0", "hls.js": "^0.13.1", @@ -62,6 +66,13 @@ "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.0.0" }, + "babel": { + "presets": [ + [ + "@babel/preset-env" + ] + ] + }, "browserslist": [ "last 2 Firefox versions", "last 2 Chrome versions", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000000..6545e776b5 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +const postcssPresetEnv = require('postcss-preset-env') +const cssnano = require('cssnano'); + +const config = () => ({ + plugins: [ + postcssPresetEnv(), + cssnano() + ] +}) + +module.exports = config \ No newline at end of file diff --git a/src/scripts/site.js b/src/scripts/site.js index 1d82853256..67807c1bcd 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -722,7 +722,6 @@ var AppInfo = {}; }, bundles: { bundle: [ - "document-register-element", "fetch", "flvjs", "jstree", diff --git a/webpack.common.js b/webpack.common.js index 707e4e0997..6b357102c0 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -22,6 +22,11 @@ module.exports = { path.resolve(__dirname, "node_modules") ] }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist"), + libraryTarget: "amd-require" + }, plugins: [ new CopyPlugin( Assets.map(asset => { diff --git a/webpack.dev.js b/webpack.dev.js index baa3120a4b..28617f8283 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -11,9 +11,14 @@ module.exports = merge(common, { }, module: { rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: "babel-loader" + }, { test: /\.css$/i, - use: ["style-loader", "css-loader"] + use: ["style-loader", "css-loader", "postcss-loader"] }, { test: /\.(png|jpg|gif)$/i, diff --git a/webpack.prod.js b/webpack.prod.js index 03fcf712ae..52d5050c38 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -4,16 +4,16 @@ const merge = require("webpack-merge"); module.exports = merge(common, { mode: "production", - output: { - filename: "bundle.js", - path: path.resolve(__dirname, "dist"), - libraryTarget: "amd-require" - }, module: { rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: "babel-loader" + }, { test: /\.css$/i, - use: ["style-loader", "css-loader"] + use: ["style-loader", "css-loader", "postcss-loader"] }, { test: /\.(png|jpg|gif)$/i, diff --git a/yarn.lock b/yarn.lock index a4d7070fd3..4af2a46a96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -811,6 +811,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -1595,7 +1600,7 @@ atob@^2.1.1, atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.0.0, autoprefixer@^9.7.4: +autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== @@ -1626,6 +1631,16 @@ axios@0.19.0: follow-redirects "1.5.10" is-buffer "^2.0.2" +babel-loader@^8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2002,7 +2017,7 @@ browserslist@^1.1.3: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.0.0, browserslist@^4.8.5: +browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.5: version "4.9.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.0.tgz#ff85c390889e0f754d7bd8ad13412575cdcf5dc7" integrity sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg== @@ -2257,7 +2272,7 @@ caniuse-db@^1.0.30000639: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001024.tgz#64045c5d0d57b00c30e09323b578b2305c4737ad" integrity sha512-dmwZ7u58E68UCexHf92QERFL8kwwCv0TVS1LCNluhZo+565AXU5uNtnPF+J5E2MExwWJeNnhTD63BH8ncMV09g== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001030: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001030: version "1.0.30001030" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== @@ -2840,6 +2855,11 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" +core-js@^3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2942,6 +2962,13 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2955,6 +2982,14 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + css-loader@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" @@ -2973,6 +3008,13 @@ css-loader@^3.4.2: postcss-value-parser "^4.0.2" schema-utils "^2.6.0" +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -3026,6 +3068,16 @@ css@2.X, css@^2.2.1: source-map-resolve "^0.5.2" urix "^0.1.0" +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -3683,6 +3735,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4467,7 +4524,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -6773,6 +6830,15 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + localtunnel@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" @@ -6922,6 +6988,14 @@ lodash.template@^3.0.0: lodash.restparam "^3.0.0" lodash.templatesettings "^3.0.0" +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + lodash.templatesettings@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" @@ -6930,6 +7004,13 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -8542,6 +8623,14 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + postcss-calc@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" @@ -8551,6 +8640,48 @@ postcss-calc@^7.0.1: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + postcss-colormin@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" @@ -8570,6 +8701,37 @@ postcss-convert-values@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + postcss-discard-comments@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" @@ -8598,6 +8760,50 @@ postcss-discard-overridden@^4.0.1: dependencies: postcss "^7.0.0" +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + postcss-html@^0.36.0: version "0.36.0" resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" @@ -8605,6 +8811,22 @@ postcss-html@^0.36.0: dependencies: htmlparser2 "^3.10.0" +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + postcss-jsx@^0.36.0, postcss-jsx@^0.36.4: version "0.36.4" resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" @@ -8612,6 +8834,15 @@ postcss-jsx@^0.36.0, postcss-jsx@^0.36.4: dependencies: "@babel/core" ">=7.2.2" +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + postcss-less@^3.1.0, postcss-less@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" @@ -8627,6 +8858,23 @@ postcss-load-config@^2.0.0: cosmiconfig "^5.0.0" import-cwd "^2.0.0" +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + postcss-markdown@^0.36.0: version "0.36.0" resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" @@ -8635,6 +8883,13 @@ postcss-markdown@^0.36.0: remark "^10.0.1" unist-util-find-all-after "^1.0.2" +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + postcss-media-query-parser@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" @@ -8735,6 +8990,13 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + postcss-normalize-charset@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" @@ -8825,6 +9087,79 @@ postcss-ordered-values@^4.1.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + postcss-reduce-initial@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" @@ -8845,6 +9180,13 @@ postcss-reduce-transforms@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + postcss-reporter@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" @@ -8900,6 +9242,22 @@ postcss-scss@^2.0.0: dependencies: postcss "^7.0.0" +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + postcss-selector-parser@^2.0.0: version "2.2.3" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" @@ -8927,6 +9285,15 @@ postcss-selector-parser@^3.1.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -8986,6 +9353,15 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -9431,7 +9807,7 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.13.2: +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== From c54eb7050ffccad9f13b29c805ecbce05abb6475 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 14:39:52 +0100 Subject: [PATCH 307/449] Adjust commands and add Chrome 27 to browserslist --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 806f086868..70dc89cd62 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "last 2 Safari versions", "last 2 iOS versions", "last 2 Edge versions", + "Chrome 27", "Chrome 38", "Chrome 47", "Chrome 53", @@ -88,10 +89,10 @@ "Firefox ESR" ], "scripts": { - "serve": "webpack-dev-server --config webpack.dev.js --open", - "build": "webpack --config webpack.prod.js", + "serve": "gulp serve", + "build": "gulp --production", + "build-dev": "gulp", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"", - "prepare": "webpack --config webpack.prod.js" } } From 12f42c81ddefd9b51d3123e8818a8a490ae20378 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 14:48:35 +0100 Subject: [PATCH 308/449] Update readme for Gulp build process and fix build --- README.md | 12 +++++++++++- package.json | 7 +++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6a80b0b09c..3c40d0a016 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ Jellyfin Web is the frontend used for most of the clients available for end user ### Dependencies - Yarn +- Gulp-cli ### Getting Started @@ -60,5 +61,14 @@ Jellyfin Web is the frontend used for most of the clients available for end user 3. Run the web client with webpack for local development. ```sh - yarn serve + gulp serve ``` + +4. Build the client with sourcemaps. + '''sh + gulp + ''' + Or without sourcemaps + '''sh + gulp --production + ''' \ No newline at end of file diff --git a/package.json b/package.json index 70dc89cd62..01d4d0dabf 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "file-loader": "^5.0.2", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", + "gulp-cli": "^2.2.0", "gulp-concat": "^2.6.1", "gulp-htmlmin": "^5.0.1", "gulp-imagemin": "^7.1.0", @@ -68,9 +69,7 @@ }, "babel": { "presets": [ - [ - "@babel/preset-env" - ] + "@babel/preset-env" ] }, "browserslist": [ @@ -93,6 +92,6 @@ "build": "gulp --production", "build-dev": "gulp", "lint": "eslint \"src\"", - "stylelint": "stylelint \"src/**/*.css\"", + "stylelint": "stylelint \"src/**/*.css\"" } } From 0a3fb647344372bc7b134dd5772ee428eef3984b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 15:15:22 +0100 Subject: [PATCH 309/449] Add build step to CI --- .ci/azure-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 1b16b94b62..43c05fffa2 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -27,6 +27,9 @@ jobs: - script: 'yarn install' displayName: 'Install Dependencies' + - script: 'yarn build' + displayName: 'Build' + - script: 'test -d dist' displayName: 'Check Build' From 5cea4c923153163fdc14635d5c59a6c70d6c956d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 15:24:18 +0100 Subject: [PATCH 310/449] Adjust README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3c40d0a016..4ee78ed786 100644 --- a/README.md +++ b/README.md @@ -61,14 +61,14 @@ Jellyfin Web is the frontend used for most of the clients available for end user 3. Run the web client with webpack for local development. ```sh - gulp serve + yarn serve ``` 4. Build the client with sourcemaps. '''sh - gulp + yarn ''' Or without sourcemaps '''sh - gulp --production + yarn --production ''' \ No newline at end of file From 591f2ff8166c2184ecb3a15f126de0c336de7d9f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 16:18:05 +0100 Subject: [PATCH 311/449] Disable HTMLmin in dev and fix bundle dependency --- gulpfile.js | 4 ++-- src/scripts/site.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 539db09ce5..54b94a5ae0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -24,7 +24,7 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass') -if(mode.production()) { +if (mode.production()) { var webpack_config = require('./webpack.prod.js'); } else { var webpack_config = require('./webpack.dev.js'); @@ -94,7 +94,7 @@ function css() { function html() { return src(['src/**/*.html', '!src/index.html'], {base: './src/'}) - .pipe(htmlmin({ collapseWhitespace: true })) + .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) .pipe(dest('dist/')) .pipe(browserSync.stream()); } diff --git a/src/scripts/site.js b/src/scripts/site.js index 67807c1bcd..1d82853256 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -722,6 +722,7 @@ var AppInfo = {}; }, bundles: { bundle: [ + "document-register-element", "fetch", "flvjs", "jstree", From a0f3203a6805a80b874fe4b84d307dc81d11c992 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Feb 2020 13:20:53 +0100 Subject: [PATCH 312/449] Adjust build dev command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 01d4d0dabf..61115c1991 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "scripts": { "serve": "gulp serve", "build": "gulp --production", - "build-dev": "gulp", + "build dev": "gulp", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"" } From d69610dc701e1ccaf0a2f50d650214a2fbf8cf22 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 9 Mar 2020 22:55:47 +0100 Subject: [PATCH 313/449] Add polyfills --- gulpfile.js | 76 +- package.json | 1 + postcss.config.js | 2 +- src/polyfill.js | 7203 +++++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 18 + 5 files changed, 7260 insertions(+), 40 deletions(-) create mode 100644 src/polyfill.js diff --git a/gulpfile.js b/gulpfile.js index 54b94a5ae0..d5d9ddf8ba 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,12 +13,10 @@ const mode = require('gulp-mode')({ modes: ["production", "development"], default: "development", verbose: false - }); +}); const webpack_stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); -const cssnano = require('cssnano'); -const autoprefixer = require('autoprefixer'); const sass = require('gulp-sass'); sass.compiler = require('node-sass') @@ -50,8 +48,8 @@ function serve() { function setStandalone() { return src(['src/standalone.js', 'src/scripts/apploader.js'], {base: './src/'}) - .pipe(concat('scripts/apploader.js')) - .pipe(dest('dist/')); + .pipe(concat('scripts/apploader.js')) + .pipe(dest('dist/')); } // Clean assets @@ -61,64 +59,64 @@ function clean() { function javascript() { return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'}) - .pipe(mode.development(sourcemaps.init({loadMaps: true}))) - .pipe(babel({ - presets: [ - ['@babel/preset-env'] - ] - })) - .pipe(terser({ - keep_fnames: true, - mangle: false - })) - .pipe(mode.development(sourcemaps.write('.'))) - .pipe(dest('dist/')) - .pipe(browserSync.stream());; + .pipe(mode.development(sourcemaps.init({loadMaps: true}))) + .pipe(babel({ + presets: [ + ['@babel/preset-env'] + ] + })) + .pipe(terser({ + keep_fnames: true, + mangle: false + })) + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function webpack() { return webpack_stream(webpack_config) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function css() { return src(['src/**/*.css', 'src/**/*.scss'], {base: './src/'}) - .pipe(mode.development(sourcemaps.init({loadMaps: true}))) - .pipe(sass().on('error', sass.logError)) - .pipe(postcss()) - .pipe(mode.development(sourcemaps.write('.'))) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(mode.development(sourcemaps.init({loadMaps: true}))) + .pipe(sass().on('error', sass.logError)) + .pipe(postcss()) + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function html() { return src(['src/**/*.html', '!src/index.html'], {base: './src/'}) - .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function images() { return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'}) - .pipe(imagemin()) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(imagemin()) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function copy() { return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'}) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function injectBundle() { return src('src/index.html', {base: './src/'}) - .pipe(inject( - src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} - )) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + .pipe(inject( + src(['src/polyfill.js', 'src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} + )) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) diff --git a/package.json b/package.json index 61115c1991..126985798d 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.8.6", + "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.8.6", "autoprefixer": "^9.7.4", "babel-loader": "^8.0.6", diff --git a/postcss.config.js b/postcss.config.js index 6545e776b5..e741d596fc 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -8,4 +8,4 @@ const config = () => ({ ] }) -module.exports = config \ No newline at end of file +module.exports = config diff --git a/src/polyfill.js b/src/polyfill.js new file mode 100644 index 0000000000..ed6d153fd1 --- /dev/null +++ b/src/polyfill.js @@ -0,0 +1,7203 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 2 ? arguments[2] : undefined; + var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; + +},{"137":137,"141":141,"142":142}],40:[function(_dereq_,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +'use strict'; +var toObject = _dereq_(142); +var toAbsoluteIndex = _dereq_(137); +var toLength = _dereq_(141); +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var aLen = arguments.length; + var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); + var end = aLen > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + +},{"137":137,"141":141,"142":142}],41:[function(_dereq_,module,exports){ +// false -> Array#indexOf +// true -> Array#includes +var toIObject = _dereq_(140); +var toLength = _dereq_(141); +var toAbsoluteIndex = _dereq_(137); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +},{"137":137,"140":140,"141":141}],42:[function(_dereq_,module,exports){ +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = _dereq_(54); +var IObject = _dereq_(77); +var toObject = _dereq_(142); +var toLength = _dereq_(141); +var asc = _dereq_(45); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + +},{"141":141,"142":142,"45":45,"54":54,"77":77}],43:[function(_dereq_,module,exports){ +var aFunction = _dereq_(33); +var toObject = _dereq_(142); +var IObject = _dereq_(77); +var toLength = _dereq_(141); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; + +},{"141":141,"142":142,"33":33,"77":77}],44:[function(_dereq_,module,exports){ +var isObject = _dereq_(81); +var isArray = _dereq_(79); +var SPECIES = _dereq_(152)('species'); + +module.exports = function (original) { + var C; + if (isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; + +},{"152":152,"79":79,"81":81}],45:[function(_dereq_,module,exports){ +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = _dereq_(44); + +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; + +},{"44":44}],46:[function(_dereq_,module,exports){ +'use strict'; +var aFunction = _dereq_(33); +var isObject = _dereq_(81); +var invoke = _dereq_(76); +var arraySlice = [].slice; +var factories = {}; + +var construct = function (F, len, args) { + if (!(len in factories)) { + for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction(this); + var partArgs = arraySlice.call(arguments, 1); + var bound = function (/* args... */) { + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if (isObject(fn.prototype)) bound.prototype = fn.prototype; + return bound; +}; + +},{"33":33,"76":76,"81":81}],47:[function(_dereq_,module,exports){ +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = _dereq_(48); +var TAG = _dereq_(152)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + +},{"152":152,"48":48}],48:[function(_dereq_,module,exports){ +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + +},{}],49:[function(_dereq_,module,exports){ +'use strict'; +var dP = _dereq_(99).f; +var create = _dereq_(98); +var redefineAll = _dereq_(117); +var ctx = _dereq_(54); +var anInstance = _dereq_(37); +var forOf = _dereq_(68); +var $iterDefine = _dereq_(85); +var step = _dereq_(87); +var setSpecies = _dereq_(123); +var DESCRIPTORS = _dereq_(58); +var fastKey = _dereq_(94).fastKey; +var validate = _dereq_(149); +var SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function (that, key) { + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return that._i[index]; + // frozen object case + for (entry = that._f; entry; entry = entry.n) { + if (entry.k == key) return entry; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { + entry.r = true; + if (entry.p) entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = validate(this, NAME); + var entry = getEntry(that, key); + if (entry) { + var next = entry.n; + var prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if (prev) prev.n = next; + if (next) next.p = prev; + if (that._f == entry) that._f = next; + if (that._l == entry) that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + validate(this, NAME); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.n : this._f) { + f(entry.v, entry.k, this); + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(validate(this, NAME), key); + } + }); + if (DESCRIPTORS) dP(C.prototype, 'size', { + get: function () { + return validate(this, NAME)[SIZE]; + } + }); + return C; + }, + def: function (that, key, value) { + var entry = getEntry(that, key); + var prev, index; + // change existing entry + if (entry) { + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if (!that._f) that._f = entry; + if (prev) prev.n = entry; + that[SIZE]++; + // add to index + if (index !== 'F') that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function (C, NAME, IS_MAP) { + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function (iterated, kind) { + this._t = validate(iterated, NAME); // target + this._k = kind; // kind + this._l = undefined; // previous + }, function () { + var that = this; + var kind = that._k; + var entry = that._l; + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + // get next entry + if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if (kind == 'keys') return step(0, entry.k); + if (kind == 'values') return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; + +},{"117":117,"123":123,"149":149,"37":37,"54":54,"58":58,"68":68,"85":85,"87":87,"94":94,"98":98,"99":99}],50:[function(_dereq_,module,exports){ +'use strict'; +var redefineAll = _dereq_(117); +var getWeak = _dereq_(94).getWeak; +var anObject = _dereq_(38); +var isObject = _dereq_(81); +var anInstance = _dereq_(37); +var forOf = _dereq_(68); +var createArrayMethod = _dereq_(42); +var $has = _dereq_(71); +var validate = _dereq_(149); +var arrayFind = createArrayMethod(5); +var arrayFindIndex = createArrayMethod(6); +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (that) { + return that._l || (that._l = new UncaughtFrozenStore()); +}; +var UncaughtFrozenStore = function () { + this.a = []; +}; +var findUncaughtFrozen = function (store, key) { + return arrayFind(store.a, function (it) { + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function (key) { + var index = arrayFindIndex(this.a, function (it) { + return it[0] === key; + }); + if (~index) this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function (that, key, value) { + var data = getWeak(anObject(key), true); + if (data === true) uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; + +},{"117":117,"149":149,"37":37,"38":38,"42":42,"68":68,"71":71,"81":81,"94":94}],51:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(70); +var $export = _dereq_(62); +var redefine = _dereq_(118); +var redefineAll = _dereq_(117); +var meta = _dereq_(94); +var forOf = _dereq_(68); +var anInstance = _dereq_(37); +var isObject = _dereq_(81); +var fails = _dereq_(64); +var $iterDetect = _dereq_(86); +var setToStringTag = _dereq_(124); +var inheritIfRequired = _dereq_(75); + +module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { + var Base = global[NAME]; + var C = Base; + var ADDER = IS_MAP ? 'set' : 'add'; + var proto = C && C.prototype; + var O = {}; + var fixMethod = function (KEY) { + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function (a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a) { + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { + new C().entries().next(); + }))) { + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + C = wrapper(function (target, iterable) { + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base(), target, C); + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + // weak collections should not contains .clear method + if (IS_WEAK && proto.clear) delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); + + return C; +}; + +},{"117":117,"118":118,"124":124,"37":37,"62":62,"64":64,"68":68,"70":70,"75":75,"81":81,"86":86,"94":94}],52:[function(_dereq_,module,exports){ +arguments[4][18][0].apply(exports,arguments) +},{"18":18}],53:[function(_dereq_,module,exports){ +'use strict'; +var $defineProperty = _dereq_(99); +var createDesc = _dereq_(116); + +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + +},{"116":116,"99":99}],54:[function(_dereq_,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"19":19,"33":33}],55:[function(_dereq_,module,exports){ +'use strict'; +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var fails = _dereq_(64); +var getTime = Date.prototype.getTime; +var $toISOString = Date.prototype.toISOString; + +var lz = function (num) { + return num > 9 ? num : '0' + num; +}; + +// PhantomJS / old WebKit has a broken implementations +module.exports = (fails(function () { + return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; +}) || !fails(function () { + $toISOString.call(new Date(NaN)); +})) ? function toISOString() { + if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); + var d = this; + var y = d.getUTCFullYear(); + var m = d.getUTCMilliseconds(); + var s = y < 0 ? '-' : y > 9999 ? '+' : ''; + return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + + '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + + 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + + ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; +} : $toISOString; + +},{"64":64}],56:[function(_dereq_,module,exports){ +'use strict'; +var anObject = _dereq_(38); +var toPrimitive = _dereq_(143); +var NUMBER = 'number'; + +module.exports = function (hint) { + if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint'); + return toPrimitive(anObject(this), hint != NUMBER); +}; + +},{"143":143,"38":38}],57:[function(_dereq_,module,exports){ +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + +},{}],58:[function(_dereq_,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"20":20,"64":64}],59:[function(_dereq_,module,exports){ +arguments[4][21][0].apply(exports,arguments) +},{"21":21,"70":70,"81":81}],60:[function(_dereq_,module,exports){ +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +},{}],61:[function(_dereq_,module,exports){ +// all enumerable object keys, includes symbols +var getKeys = _dereq_(107); +var gOPS = _dereq_(104); +var pIE = _dereq_(108); +module.exports = function (it) { + var result = getKeys(it); + var getSymbols = gOPS.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = pIE.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; +}; + +},{"104":104,"107":107,"108":108}],62:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var core = _dereq_(52); +var hide = _dereq_(72); +var redefine = _dereq_(118); +var ctx = _dereq_(54); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + +},{"118":118,"52":52,"54":54,"70":70,"72":72}],63:[function(_dereq_,module,exports){ +var MATCH = _dereq_(152)('match'); +module.exports = function (KEY) { + var re = /./; + try { + '/./'[KEY](re); + } catch (e) { + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch (f) { /* empty */ } + } return true; +}; + +},{"152":152}],64:[function(_dereq_,module,exports){ +arguments[4][23][0].apply(exports,arguments) +},{"23":23}],65:[function(_dereq_,module,exports){ +'use strict'; +_dereq_(248); +var redefine = _dereq_(118); +var hide = _dereq_(72); +var fails = _dereq_(64); +var defined = _dereq_(57); +var wks = _dereq_(152); +var regexpExec = _dereq_(120); + +var SPECIES = wks('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$
') !== '7'; +}); + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; +})(); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + } + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + +},{"118":118,"120":120,"152":152,"248":248,"57":57,"64":64,"72":72}],66:[function(_dereq_,module,exports){ +'use strict'; +// 21.2.5.3 get RegExp.prototype.flags +var anObject = _dereq_(38); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + +},{"38":38}],67:[function(_dereq_,module,exports){ +'use strict'; +// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray +var isArray = _dereq_(79); +var isObject = _dereq_(81); +var toLength = _dereq_(141); +var ctx = _dereq_(54); +var IS_CONCAT_SPREADABLE = _dereq_(152)('isConcatSpreadable'); + +function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? ctx(mapper, thisArg, 3) : false; + var element, spreadable; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + spreadable = false; + if (isObject(element)) { + spreadable = element[IS_CONCAT_SPREADABLE]; + spreadable = spreadable !== undefined ? !!spreadable : isArray(element); + } + + if (spreadable && depth > 0) { + targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 0x1fffffffffffff) throw TypeError(); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; +} + +module.exports = flattenIntoArray; + +},{"141":141,"152":152,"54":54,"79":79,"81":81}],68:[function(_dereq_,module,exports){ +var ctx = _dereq_(54); +var call = _dereq_(83); +var isArrayIter = _dereq_(78); +var anObject = _dereq_(38); +var toLength = _dereq_(141); +var getIterFn = _dereq_(153); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + +},{"141":141,"153":153,"38":38,"54":54,"78":78,"83":83}],69:[function(_dereq_,module,exports){ +module.exports = _dereq_(126)('native-function-to-string', Function.toString); + +},{"126":126}],70:[function(_dereq_,module,exports){ +arguments[4][24][0].apply(exports,arguments) +},{"24":24}],71:[function(_dereq_,module,exports){ +arguments[4][25][0].apply(exports,arguments) +},{"25":25}],72:[function(_dereq_,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"116":116,"26":26,"58":58,"99":99}],73:[function(_dereq_,module,exports){ +var document = _dereq_(70).document; +module.exports = document && document.documentElement; + +},{"70":70}],74:[function(_dereq_,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"27":27,"58":58,"59":59,"64":64}],75:[function(_dereq_,module,exports){ +var isObject = _dereq_(81); +var setPrototypeOf = _dereq_(122).set; +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; +}; + +},{"122":122,"81":81}],76:[function(_dereq_,module,exports){ +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + +},{}],77:[function(_dereq_,module,exports){ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = _dereq_(48); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + +},{"48":48}],78:[function(_dereq_,module,exports){ +// check on default Array iterator +var Iterators = _dereq_(88); +var ITERATOR = _dereq_(152)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + +},{"152":152,"88":88}],79:[function(_dereq_,module,exports){ +// 7.2.2 IsArray(argument) +var cof = _dereq_(48); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; + +},{"48":48}],80:[function(_dereq_,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var isObject = _dereq_(81); +var floor = Math.floor; +module.exports = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + +},{"81":81}],81:[function(_dereq_,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"28":28}],82:[function(_dereq_,module,exports){ +// 7.2.8 IsRegExp(argument) +var isObject = _dereq_(81); +var cof = _dereq_(48); +var MATCH = _dereq_(152)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; + +},{"152":152,"48":48,"81":81}],83:[function(_dereq_,module,exports){ +// call something on iterator step with safe closing on error +var anObject = _dereq_(38); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + +},{"38":38}],84:[function(_dereq_,module,exports){ +'use strict'; +var create = _dereq_(98); +var descriptor = _dereq_(116); +var setToStringTag = _dereq_(124); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +_dereq_(72)(IteratorPrototype, _dereq_(152)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + +},{"116":116,"124":124,"152":152,"72":72,"98":98}],85:[function(_dereq_,module,exports){ +'use strict'; +var LIBRARY = _dereq_(89); +var $export = _dereq_(62); +var redefine = _dereq_(118); +var hide = _dereq_(72); +var Iterators = _dereq_(88); +var $iterCreate = _dereq_(84); +var setToStringTag = _dereq_(124); +var getPrototypeOf = _dereq_(105); +var ITERATOR = _dereq_(152)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + +},{"105":105,"118":118,"124":124,"152":152,"62":62,"72":72,"84":84,"88":88,"89":89}],86:[function(_dereq_,module,exports){ +var ITERATOR = _dereq_(152)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + +},{"152":152}],87:[function(_dereq_,module,exports){ +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + +},{}],88:[function(_dereq_,module,exports){ +module.exports = {}; + +},{}],89:[function(_dereq_,module,exports){ +module.exports = false; + +},{}],90:[function(_dereq_,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $expm1 = Math.expm1; +module.exports = (!$expm1 + // Old FF bug + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 + // Tor Browser bug + || $expm1(-2e-17) != -2e-17 +) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +} : $expm1; + +},{}],91:[function(_dereq_,module,exports){ +// 20.2.2.16 Math.fround(x) +var sign = _dereq_(93); +var pow = Math.pow; +var EPSILON = pow(2, -52); +var EPSILON32 = pow(2, -23); +var MAX32 = pow(2, 127) * (2 - EPSILON32); +var MIN32 = pow(2, -126); + +var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; +}; + +module.exports = Math.fround || function fround(x) { + var $abs = Math.abs(x); + var $sign = sign(x); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; +}; + +},{"93":93}],92:[function(_dereq_,module,exports){ +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; + +},{}],93:[function(_dereq_,module,exports){ +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; + +},{}],94:[function(_dereq_,module,exports){ +var META = _dereq_(147)('meta'); +var isObject = _dereq_(81); +var has = _dereq_(71); +var setDesc = _dereq_(99).f; +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !_dereq_(64)(function () { + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + +},{"147":147,"64":64,"71":71,"81":81,"99":99}],95:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var macrotask = _dereq_(136).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = _dereq_(48)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + +},{"136":136,"48":48,"70":70}],96:[function(_dereq_,module,exports){ +'use strict'; +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = _dereq_(33); + +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} + +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + +},{"33":33}],97:[function(_dereq_,module,exports){ +'use strict'; +// 19.1.2.1 Object.assign(target, source, ...) +var DESCRIPTORS = _dereq_(58); +var getKeys = _dereq_(107); +var gOPS = _dereq_(104); +var pIE = _dereq_(108); +var toObject = _dereq_(142); +var IObject = _dereq_(77); +var $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || _dereq_(64)(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var S = Symbol(); + var K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function (k) { B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = toObject(target); + var aLen = arguments.length; + var index = 1; + var getSymbols = gOPS.f; + var isEnum = pIE.f; + while (aLen > index) { + var S = IObject(arguments[index++]); + var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + +},{"104":104,"107":107,"108":108,"142":142,"58":58,"64":64,"77":77}],98:[function(_dereq_,module,exports){ +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = _dereq_(38); +var dPs = _dereq_(100); +var enumBugKeys = _dereq_(60); +var IE_PROTO = _dereq_(125)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = _dereq_(59)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + _dereq_(73).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + +},{"100":100,"125":125,"38":38,"59":59,"60":60,"73":73}],99:[function(_dereq_,module,exports){ +arguments[4][29][0].apply(exports,arguments) +},{"143":143,"29":29,"38":38,"58":58,"74":74}],100:[function(_dereq_,module,exports){ +var dP = _dereq_(99); +var anObject = _dereq_(38); +var getKeys = _dereq_(107); + +module.exports = _dereq_(58) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + +},{"107":107,"38":38,"58":58,"99":99}],101:[function(_dereq_,module,exports){ +var pIE = _dereq_(108); +var createDesc = _dereq_(116); +var toIObject = _dereq_(140); +var toPrimitive = _dereq_(143); +var has = _dereq_(71); +var IE8_DOM_DEFINE = _dereq_(74); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = _dereq_(58) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + +},{"108":108,"116":116,"140":140,"143":143,"58":58,"71":71,"74":74}],102:[function(_dereq_,module,exports){ +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = _dereq_(140); +var gOPN = _dereq_(103).f; +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + +},{"103":103,"140":140}],103:[function(_dereq_,module,exports){ +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = _dereq_(106); +var hiddenKeys = _dereq_(60).concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; + +},{"106":106,"60":60}],104:[function(_dereq_,module,exports){ +exports.f = Object.getOwnPropertySymbols; + +},{}],105:[function(_dereq_,module,exports){ +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = _dereq_(71); +var toObject = _dereq_(142); +var IE_PROTO = _dereq_(125)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + +},{"125":125,"142":142,"71":71}],106:[function(_dereq_,module,exports){ +var has = _dereq_(71); +var toIObject = _dereq_(140); +var arrayIndexOf = _dereq_(41)(false); +var IE_PROTO = _dereq_(125)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +},{"125":125,"140":140,"41":41,"71":71}],107:[function(_dereq_,module,exports){ +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = _dereq_(106); +var enumBugKeys = _dereq_(60); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + +},{"106":106,"60":60}],108:[function(_dereq_,module,exports){ +exports.f = {}.propertyIsEnumerable; + +},{}],109:[function(_dereq_,module,exports){ +// most Object methods by ES6 should accept primitives +var $export = _dereq_(62); +var core = _dereq_(52); +var fails = _dereq_(64); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + +},{"52":52,"62":62,"64":64}],110:[function(_dereq_,module,exports){ +var DESCRIPTORS = _dereq_(58); +var getKeys = _dereq_(107); +var toIObject = _dereq_(140); +var isEnum = _dereq_(108).f; +module.exports = function (isEntries) { + return function (it) { + var O = toIObject(it); + var keys = getKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!DESCRIPTORS || isEnum.call(O, key)) { + result.push(isEntries ? [key, O[key]] : O[key]); + } + } + return result; + }; +}; + +},{"107":107,"108":108,"140":140,"58":58}],111:[function(_dereq_,module,exports){ +// all object keys, includes non-enumerable and symbols +var gOPN = _dereq_(103); +var gOPS = _dereq_(104); +var anObject = _dereq_(38); +var Reflect = _dereq_(70).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + +},{"103":103,"104":104,"38":38,"70":70}],112:[function(_dereq_,module,exports){ +var $parseFloat = _dereq_(70).parseFloat; +var $trim = _dereq_(134).trim; + +module.exports = 1 / $parseFloat(_dereq_(135) + '-0') !== -Infinity ? function parseFloat(str) { + var string = $trim(String(str), 3); + var result = $parseFloat(string); + return result === 0 && string.charAt(0) == '-' ? -0 : result; +} : $parseFloat; + +},{"134":134,"135":135,"70":70}],113:[function(_dereq_,module,exports){ +var $parseInt = _dereq_(70).parseInt; +var $trim = _dereq_(134).trim; +var ws = _dereq_(135); +var hex = /^[-+]?0[xX]/; + +module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) { + var string = $trim(String(str), 3); + return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); +} : $parseInt; + +},{"134":134,"135":135,"70":70}],114:[function(_dereq_,module,exports){ +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + +},{}],115:[function(_dereq_,module,exports){ +var anObject = _dereq_(38); +var isObject = _dereq_(81); +var newPromiseCapability = _dereq_(96); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + +},{"38":38,"81":81,"96":96}],116:[function(_dereq_,module,exports){ +arguments[4][30][0].apply(exports,arguments) +},{"30":30}],117:[function(_dereq_,module,exports){ +var redefine = _dereq_(118); +module.exports = function (target, src, safe) { + for (var key in src) redefine(target, key, src[key], safe); + return target; +}; + +},{"118":118}],118:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var hide = _dereq_(72); +var has = _dereq_(71); +var SRC = _dereq_(147)('src'); +var $toString = _dereq_(69); +var TO_STRING = 'toString'; +var TPL = ('' + $toString).split(TO_STRING); + +_dereq_(52).inspectSource = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + +},{"147":147,"52":52,"69":69,"70":70,"71":71,"72":72}],119:[function(_dereq_,module,exports){ +'use strict'; + +var classof = _dereq_(47); +var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); +}; + +},{"47":47}],120:[function(_dereq_,module,exports){ +'use strict'; + +var regexpFlags = _dereq_(66); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var LAST_INDEX = 'lastIndex'; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; +})(); + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; + +},{"66":66}],121:[function(_dereq_,module,exports){ +// 7.2.9 SameValue(x, y) +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; + +},{}],122:[function(_dereq_,module,exports){ +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = _dereq_(81); +var anObject = _dereq_(38); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = _dereq_(54)(Function.call, _dereq_(101).f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + +},{"101":101,"38":38,"54":54,"81":81}],123:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(70); +var dP = _dereq_(99); +var DESCRIPTORS = _dereq_(58); +var SPECIES = _dereq_(152)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + +},{"152":152,"58":58,"70":70,"99":99}],124:[function(_dereq_,module,exports){ +var def = _dereq_(99).f; +var has = _dereq_(71); +var TAG = _dereq_(152)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + +},{"152":152,"71":71,"99":99}],125:[function(_dereq_,module,exports){ +var shared = _dereq_(126)('keys'); +var uid = _dereq_(147); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + +},{"126":126,"147":147}],126:[function(_dereq_,module,exports){ +var core = _dereq_(52); +var global = _dereq_(70); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: _dereq_(89) ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' +}); + +},{"52":52,"70":70,"89":89}],127:[function(_dereq_,module,exports){ +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = _dereq_(38); +var aFunction = _dereq_(33); +var SPECIES = _dereq_(152)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + +},{"152":152,"33":33,"38":38}],128:[function(_dereq_,module,exports){ +'use strict'; +var fails = _dereq_(64); + +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; + +},{"64":64}],129:[function(_dereq_,module,exports){ +var toInteger = _dereq_(139); +var defined = _dereq_(57); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + +},{"139":139,"57":57}],130:[function(_dereq_,module,exports){ +// helper for String#{startsWith, endsWith, includes} +var isRegExp = _dereq_(82); +var defined = _dereq_(57); + +module.exports = function (that, searchString, NAME) { + if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; + +},{"57":57,"82":82}],131:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var fails = _dereq_(64); +var defined = _dereq_(57); +var quot = /"/g; +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +var createHTML = function (string, tag, attribute, value) { + var S = String(defined(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; +module.exports = function (NAME, exec) { + var O = {}; + O[NAME] = exec(createHTML); + $export($export.P + $export.F * fails(function () { + var test = ''[NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }), 'String', O); +}; + +},{"57":57,"62":62,"64":64}],132:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = _dereq_(141); +var repeat = _dereq_(133); +var defined = _dereq_(57); + +module.exports = function (that, maxLength, fillString, left) { + var S = String(defined(that)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + if (intMaxLength <= stringLength || fillStr == '') return S; + var fillLen = intMaxLength - stringLength; + var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; + +},{"133":133,"141":141,"57":57}],133:[function(_dereq_,module,exports){ +'use strict'; +var toInteger = _dereq_(139); +var defined = _dereq_(57); + +module.exports = function repeat(count) { + var str = String(defined(this)); + var res = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; + return res; +}; + +},{"139":139,"57":57}],134:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var defined = _dereq_(57); +var fails = _dereq_(64); +var spaces = _dereq_(135); +var space = '[' + spaces + ']'; +var non = '\u200b\u0085'; +var ltrim = RegExp('^' + space + space + '*'); +var rtrim = RegExp(space + space + '*$'); + +var exporter = function (KEY, exec, ALIAS) { + var exp = {}; + var FORCE = fails(function () { + return !!spaces[KEY]() || non[KEY]() != non; + }); + var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; + if (ALIAS) exp[ALIAS] = fn; + $export($export.P + $export.F * FORCE, 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function (string, TYPE) { + string = String(defined(string)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; + +},{"135":135,"57":57,"62":62,"64":64}],135:[function(_dereq_,module,exports){ +module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + +},{}],136:[function(_dereq_,module,exports){ +var ctx = _dereq_(54); +var invoke = _dereq_(76); +var html = _dereq_(73); +var cel = _dereq_(59); +var global = _dereq_(70); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (_dereq_(48)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + +},{"48":48,"54":54,"59":59,"70":70,"73":73,"76":76}],137:[function(_dereq_,module,exports){ +var toInteger = _dereq_(139); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + +},{"139":139}],138:[function(_dereq_,module,exports){ +// https://tc39.github.io/ecma262/#sec-toindex +var toInteger = _dereq_(139); +var toLength = _dereq_(141); +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length!'); + return length; +}; + +},{"139":139,"141":141}],139:[function(_dereq_,module,exports){ +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +},{}],140:[function(_dereq_,module,exports){ +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = _dereq_(77); +var defined = _dereq_(57); +module.exports = function (it) { + return IObject(defined(it)); +}; + +},{"57":57,"77":77}],141:[function(_dereq_,module,exports){ +// 7.1.15 ToLength +var toInteger = _dereq_(139); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +},{"139":139}],142:[function(_dereq_,module,exports){ +// 7.1.13 ToObject(argument) +var defined = _dereq_(57); +module.exports = function (it) { + return Object(defined(it)); +}; + +},{"57":57}],143:[function(_dereq_,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"31":31,"81":81}],144:[function(_dereq_,module,exports){ +'use strict'; +if (_dereq_(58)) { + var LIBRARY = _dereq_(89); + var global = _dereq_(70); + var fails = _dereq_(64); + var $export = _dereq_(62); + var $typed = _dereq_(146); + var $buffer = _dereq_(145); + var ctx = _dereq_(54); + var anInstance = _dereq_(37); + var propertyDesc = _dereq_(116); + var hide = _dereq_(72); + var redefineAll = _dereq_(117); + var toInteger = _dereq_(139); + var toLength = _dereq_(141); + var toIndex = _dereq_(138); + var toAbsoluteIndex = _dereq_(137); + var toPrimitive = _dereq_(143); + var has = _dereq_(71); + var classof = _dereq_(47); + var isObject = _dereq_(81); + var toObject = _dereq_(142); + var isArrayIter = _dereq_(78); + var create = _dereq_(98); + var getPrototypeOf = _dereq_(105); + var gOPN = _dereq_(103).f; + var getIterFn = _dereq_(153); + var uid = _dereq_(147); + var wks = _dereq_(152); + var createArrayMethod = _dereq_(42); + var createArrayIncludes = _dereq_(41); + var speciesConstructor = _dereq_(127); + var ArrayIterators = _dereq_(164); + var Iterators = _dereq_(88); + var $iterDetect = _dereq_(86); + var setSpecies = _dereq_(123); + var arrayFill = _dereq_(40); + var arrayCopyWithin = _dereq_(39); + var $DP = _dereq_(99); + var $GOPD = _dereq_(101); + var dP = $DP.f; + var gOPD = $GOPD.f; + var RangeError = global.RangeError; + var TypeError = global.TypeError; + var Uint8Array = global.Uint8Array; + var ARRAY_BUFFER = 'ArrayBuffer'; + var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var PROTOTYPE = 'prototype'; + var ArrayProto = Array[PROTOTYPE]; + var $ArrayBuffer = $buffer.ArrayBuffer; + var $DataView = $buffer.DataView; + var arrayForEach = createArrayMethod(0); + var arrayFilter = createArrayMethod(2); + var arraySome = createArrayMethod(3); + var arrayEvery = createArrayMethod(4); + var arrayFind = createArrayMethod(5); + var arrayFindIndex = createArrayMethod(6); + var arrayIncludes = createArrayIncludes(true); + var arrayIndexOf = createArrayIncludes(false); + var arrayValues = ArrayIterators.values; + var arrayKeys = ArrayIterators.keys; + var arrayEntries = ArrayIterators.entries; + var arrayLastIndexOf = ArrayProto.lastIndexOf; + var arrayReduce = ArrayProto.reduce; + var arrayReduceRight = ArrayProto.reduceRight; + var arrayJoin = ArrayProto.join; + var arraySort = ArrayProto.sort; + var arraySlice = ArrayProto.slice; + var arrayToString = ArrayProto.toString; + var arrayToLocaleString = ArrayProto.toLocaleString; + var ITERATOR = wks('iterator'); + var TAG = wks('toStringTag'); + var TYPED_CONSTRUCTOR = uid('typed_constructor'); + var DEF_CONSTRUCTOR = uid('def_constructor'); + var ALL_CONSTRUCTORS = $typed.CONSTR; + var TYPED_ARRAY = $typed.TYPED; + var VIEW = $typed.VIEW; + var WRONG_LENGTH = 'Wrong length!'; + + var $map = createArrayMethod(1, function (O, length) { + return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); + }); + + var LITTLE_ENDIAN = fails(function () { + // eslint-disable-next-line no-undef + return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; + }); + + var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () { + new Uint8Array(1).set({}); + }); + + var toOffset = function (it, BYTES) { + var offset = toInteger(it); + if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!'); + return offset; + }; + + var validate = function (it) { + if (isObject(it) && TYPED_ARRAY in it) return it; + throw TypeError(it + ' is not a typed array!'); + }; + + var allocate = function (C, length) { + if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) { + throw TypeError('It is not a typed array constructor!'); + } return new C(length); + }; + + var speciesFromList = function (O, list) { + return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); + }; + + var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = allocate(C, length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var addGetter = function (it, key, internal) { + dP(it, key, { get: function () { return this._d[internal]; } }); + }; + + var $from = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iterFn = getIterFn(O); + var i, length, values, result, step, iterator; + if (iterFn != undefined && !isArrayIter(iterFn)) { + for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) { + values.push(step.value); + } O = values; + } + if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2); + for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var $of = function of(/* ...items */) { + var index = 0; + var length = arguments.length; + var result = allocate(this, length); + while (length > index) result[index] = arguments[index++]; + return result; + }; + + // iOS Safari 6.x fails here + var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); }); + + var $toLocaleString = function toLocaleString() { + return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); + }; + + var proto = { + copyWithin: function copyWithin(target, start /* , end */) { + return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }, + every: function every(callbackfn /* , thisArg */) { + return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars + return arrayFill.apply(validate(this), arguments); + }, + filter: function filter(callbackfn /* , thisArg */) { + return speciesFromList(this, arrayFilter(validate(this), callbackfn, + arguments.length > 1 ? arguments[1] : undefined)); + }, + find: function find(predicate /* , thisArg */) { + return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + findIndex: function findIndex(predicate /* , thisArg */) { + return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + forEach: function forEach(callbackfn /* , thisArg */) { + arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + indexOf: function indexOf(searchElement /* , fromIndex */) { + return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + includes: function includes(searchElement /* , fromIndex */) { + return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + join: function join(separator) { // eslint-disable-line no-unused-vars + return arrayJoin.apply(validate(this), arguments); + }, + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars + return arrayLastIndexOf.apply(validate(this), arguments); + }, + map: function map(mapfn /* , thisArg */) { + return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + }, + reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduce.apply(validate(this), arguments); + }, + reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduceRight.apply(validate(this), arguments); + }, + reverse: function reverse() { + var that = this; + var length = validate(that).length; + var middle = Math.floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }, + some: function some(callbackfn /* , thisArg */) { + return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + sort: function sort(comparefn) { + return arraySort.call(validate(this), comparefn); + }, + subarray: function subarray(begin, end) { + var O = validate(this); + var length = O.length; + var $begin = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( + O.buffer, + O.byteOffset + $begin * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin) + ); + } + }; + + var $slice = function slice(start, end) { + return speciesFromList(this, arraySlice.call(validate(this), start, end)); + }; + + var $set = function set(arrayLike /* , offset */) { + validate(this); + var offset = toOffset(arguments[1], 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError(WRONG_LENGTH); + while (index < len) this[offset + index] = src[index++]; + }; + + var $iterators = { + entries: function entries() { + return arrayEntries.call(validate(this)); + }, + keys: function keys() { + return arrayKeys.call(validate(this)); + }, + values: function values() { + return arrayValues.call(validate(this)); + } + }; + + var isTAIndex = function (target, key) { + return isObject(target) + && target[TYPED_ARRAY] + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + var $getDesc = function getOwnPropertyDescriptor(target, key) { + return isTAIndex(target, key = toPrimitive(key, true)) + ? propertyDesc(2, target[key]) + : gOPD(target, key); + }; + var $setDesc = function defineProperty(target, key, desc) { + if (isTAIndex(target, key = toPrimitive(key, true)) + && isObject(desc) + && has(desc, 'value') + && !has(desc, 'get') + && !has(desc, 'set') + // TODO: add validation descriptor w/o calling accessors + && !desc.configurable + && (!has(desc, 'writable') || desc.writable) + && (!has(desc, 'enumerable') || desc.enumerable) + ) { + target[key] = desc.value; + return target; + } return dP(target, key, desc); + }; + + if (!ALL_CONSTRUCTORS) { + $GOPD.f = $getDesc; + $DP.f = $setDesc; + } + + $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { + getOwnPropertyDescriptor: $getDesc, + defineProperty: $setDesc + }); + + if (fails(function () { arrayToString.call({}); })) { + arrayToString = arrayToLocaleString = function toString() { + return arrayJoin.call(this); + }; + } + + var $TypedArrayPrototype$ = redefineAll({}, proto); + redefineAll($TypedArrayPrototype$, $iterators); + hide($TypedArrayPrototype$, ITERATOR, $iterators.values); + redefineAll($TypedArrayPrototype$, { + slice: $slice, + set: $set, + constructor: function () { /* noop */ }, + toString: arrayToString, + toLocaleString: $toLocaleString + }); + addGetter($TypedArrayPrototype$, 'buffer', 'b'); + addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); + addGetter($TypedArrayPrototype$, 'byteLength', 'l'); + addGetter($TypedArrayPrototype$, 'length', 'e'); + dP($TypedArrayPrototype$, TAG, { + get: function () { return this[TYPED_ARRAY]; } + }); + + // eslint-disable-next-line max-statements + module.exports = function (KEY, BYTES, wrapper, CLAMPED) { + CLAMPED = !!CLAMPED; + var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + KEY; + var SETTER = 'set' + KEY; + var TypedArray = global[NAME]; + var Base = TypedArray || {}; + var TAC = TypedArray && getPrototypeOf(TypedArray); + var FORCED = !TypedArray || !$typed.ABV; + var O = {}; + var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; + var getter = function (that, index) { + var data = that._d; + return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); + }; + var setter = function (that, index, value) { + var data = that._d; + if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; + data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); + }; + var addElement = function (that, index) { + dP(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + if (FORCED) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME, '_d'); + var index = 0; + var offset = 0; + var buffer, byteLength, length, klass; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new $ArrayBuffer(byteLength); + } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + buffer = data; + offset = toOffset($offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - offset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (TYPED_ARRAY in data) { + return fromList(TypedArray, data); + } else { + return $from.call(TypedArray, data); + } + hide(that, '_d', { + b: buffer, + o: offset, + l: byteLength, + e: length, + v: new $DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); + hide(TypedArrayPrototype, 'constructor', TypedArray); + } else if (!fails(function () { + TypedArray(1); + }) || !fails(function () { + new TypedArray(-1); // eslint-disable-line no-new + }) || !$iterDetect(function (iter) { + new TypedArray(); // eslint-disable-line no-new + new TypedArray(null); // eslint-disable-line no-new + new TypedArray(1.5); // eslint-disable-line no-new + new TypedArray(iter); // eslint-disable-line no-new + }, true)) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME); + var klass; + // `ws` module bug, temporarily remove validation length for Uint8Array + // https://github.com/websockets/ws/pull/645 + if (!isObject(data)) return new Base(toIndex(data)); + if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + return $length !== undefined + ? new Base(data, toOffset($offset, BYTES), $length) + : $offset !== undefined + ? new Base(data, toOffset($offset, BYTES)) + : new Base(data); + } + if (TYPED_ARRAY in data) return fromList(TypedArray, data); + return $from.call(TypedArray, data); + }); + arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) { + if (!(key in TypedArray)) hide(TypedArray, key, Base[key]); + }); + TypedArray[PROTOTYPE] = TypedArrayPrototype; + if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray; + } + var $nativeIterator = TypedArrayPrototype[ITERATOR]; + var CORRECT_ITER_NAME = !!$nativeIterator + && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined); + var $iterator = $iterators.values; + hide(TypedArray, TYPED_CONSTRUCTOR, true); + hide(TypedArrayPrototype, TYPED_ARRAY, NAME); + hide(TypedArrayPrototype, VIEW, true); + hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); + + if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) { + dP(TypedArrayPrototype, TAG, { + get: function () { return NAME; } + }); + } + + O[NAME] = TypedArray; + + $export($export.G + $export.W + $export.F * (TypedArray != Base), O); + + $export($export.S, NAME, { + BYTES_PER_ELEMENT: BYTES + }); + + $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, { + from: $from, + of: $of + }); + + if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); + + $export($export.P, NAME, proto); + + setSpecies(NAME); + + $export($export.P + $export.F * FORCED_SET, NAME, { set: $set }); + + $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); + + if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString; + + $export($export.P + $export.F * fails(function () { + new TypedArray(1).slice(); + }), NAME, { slice: $slice }); + + $export($export.P + $export.F * (fails(function () { + return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString(); + }) || !fails(function () { + TypedArrayPrototype.toLocaleString.call([1, 2]); + })), NAME, { toLocaleString: $toLocaleString }); + + Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; + if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator); + }; +} else module.exports = function () { /* empty */ }; + +},{"101":101,"103":103,"105":105,"116":116,"117":117,"123":123,"127":127,"137":137,"138":138,"139":139,"141":141,"142":142,"143":143,"145":145,"146":146,"147":147,"152":152,"153":153,"164":164,"37":37,"39":39,"40":40,"41":41,"42":42,"47":47,"54":54,"58":58,"62":62,"64":64,"70":70,"71":71,"72":72,"78":78,"81":81,"86":86,"88":88,"89":89,"98":98,"99":99}],145:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(70); +var DESCRIPTORS = _dereq_(58); +var LIBRARY = _dereq_(89); +var $typed = _dereq_(146); +var hide = _dereq_(72); +var redefineAll = _dereq_(117); +var fails = _dereq_(64); +var anInstance = _dereq_(37); +var toInteger = _dereq_(139); +var toLength = _dereq_(141); +var toIndex = _dereq_(138); +var gOPN = _dereq_(103).f; +var dP = _dereq_(99).f; +var arrayFill = _dereq_(40); +var setToStringTag = _dereq_(124); +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length!'; +var WRONG_INDEX = 'Wrong index!'; +var $ArrayBuffer = global[ARRAY_BUFFER]; +var $DataView = global[DATA_VIEW]; +var Math = global.Math; +var RangeError = global.RangeError; +// eslint-disable-next-line no-shadow-restricted-names +var Infinity = global.Infinity; +var BaseBuffer = $ArrayBuffer; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; +var BUFFER = 'buffer'; +var BYTE_LENGTH = 'byteLength'; +var BYTE_OFFSET = 'byteOffset'; +var $BUFFER = DESCRIPTORS ? '_b' : BUFFER; +var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH; +var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +function packIEEE754(value, mLen, nBytes) { + var buffer = new Array(nBytes); + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0; + var i = 0; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + var e, m, c; + value = abs(value); + // eslint-disable-next-line no-self-compare + if (value != value || value === Infinity) { + // eslint-disable-next-line no-self-compare + m = value != value ? 1 : 0; + e = eMax; + } else { + e = floor(log(value) / LN2); + if (value * (c = pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * pow(2, mLen); + e = e + eBias; + } else { + m = value * pow(2, eBias - 1) * pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); + buffer[--i] |= s * 128; + return buffer; +} +function unpackIEEE754(buffer, mLen, nBytes) { + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = eLen - 7; + var i = nBytes - 1; + var s = buffer[i--]; + var e = s & 127; + var m; + s >>= 7; + for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : s ? -Infinity : Infinity; + } else { + m = m + pow(2, mLen); + e = e - eBias; + } return (s ? -1 : 1) * m * pow(2, e - mLen); +} + +function unpackI32(bytes) { + return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; +} +function packI8(it) { + return [it & 0xff]; +} +function packI16(it) { + return [it & 0xff, it >> 8 & 0xff]; +} +function packI32(it) { + return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; +} +function packF64(it) { + return packIEEE754(it, 52, 8); +} +function packF32(it) { + return packIEEE754(it, 23, 4); +} + +function addGetter(C, key, internal) { + dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } }); +} + +function get(view, bytes, index, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = store.slice(start, start + bytes); + return isLittleEndian ? pack : pack.reverse(); +} +function set(view, bytes, index, conversion, value, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = conversion(+value); + for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; +} + +if (!$typed.ABV) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + this._b = arrayFill.call(new Array(byteLength), 0); + this[$LENGTH] = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = buffer[$LENGTH]; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + this[$BUFFER] = buffer; + this[$OFFSET] = offset; + this[$LENGTH] = byteLength; + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); + addGetter($DataView, BUFFER, '_b'); + addGetter($DataView, BYTE_LENGTH, '_l'); + addGetter($DataView, BYTE_OFFSET, '_o'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packF32, value, arguments[2]); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packF64, value, arguments[2]); + } + }); +} else { + if (!fails(function () { + $ArrayBuffer(1); + }) || !fails(function () { + new $ArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new $ArrayBuffer(); // eslint-disable-line no-new + new $ArrayBuffer(1.5); // eslint-disable-line no-new + new $ArrayBuffer(NaN); // eslint-disable-line no-new + return $ArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new BaseBuffer(toIndex(length)); + }; + var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; + for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]); + } + if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var view = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = $DataView[PROTOTYPE].setInt8; + view.setInt8(0, 2147483648); + view.setInt8(1, 2147483649); + if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + } + }, true); +} +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +hide($DataView[PROTOTYPE], $typed.VIEW, true); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; + +},{"103":103,"117":117,"124":124,"138":138,"139":139,"141":141,"146":146,"37":37,"40":40,"58":58,"64":64,"70":70,"72":72,"89":89,"99":99}],146:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var hide = _dereq_(72); +var uid = _dereq_(147); +var TYPED = uid('typed_array'); +var VIEW = uid('view'); +var ABV = !!(global.ArrayBuffer && global.DataView); +var CONSTR = ABV; +var i = 0; +var l = 9; +var Typed; + +var TypedArrayConstructors = ( + 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' +).split(','); + +while (i < l) { + if (Typed = global[TypedArrayConstructors[i++]]) { + hide(Typed.prototype, TYPED, true); + hide(Typed.prototype, VIEW, true); + } else CONSTR = false; +} + +module.exports = { + ABV: ABV, + CONSTR: CONSTR, + TYPED: TYPED, + VIEW: VIEW +}; + +},{"147":147,"70":70,"72":72}],147:[function(_dereq_,module,exports){ +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + +},{}],148:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + +},{"70":70}],149:[function(_dereq_,module,exports){ +var isObject = _dereq_(81); +module.exports = function (it, TYPE) { + if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); + return it; +}; + +},{"81":81}],150:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var core = _dereq_(52); +var LIBRARY = _dereq_(89); +var wksExt = _dereq_(151); +var defineProperty = _dereq_(99).f; +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + +},{"151":151,"52":52,"70":70,"89":89,"99":99}],151:[function(_dereq_,module,exports){ +exports.f = _dereq_(152); + +},{"152":152}],152:[function(_dereq_,module,exports){ +var store = _dereq_(126)('wks'); +var uid = _dereq_(147); +var Symbol = _dereq_(70).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + +},{"126":126,"147":147,"70":70}],153:[function(_dereq_,module,exports){ +var classof = _dereq_(47); +var ITERATOR = _dereq_(152)('iterator'); +var Iterators = _dereq_(88); +module.exports = _dereq_(52).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + +},{"152":152,"47":47,"52":52,"88":88}],154:[function(_dereq_,module,exports){ +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) +var $export = _dereq_(62); + +$export($export.P, 'Array', { copyWithin: _dereq_(39) }); + +_dereq_(35)('copyWithin'); + +},{"35":35,"39":39,"62":62}],155:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $every = _dereq_(42)(4); + +$export($export.P + $export.F * !_dereq_(128)([].every, true), 'Array', { + // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments[1]); + } +}); + +},{"128":128,"42":42,"62":62}],156:[function(_dereq_,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +var $export = _dereq_(62); + +$export($export.P, 'Array', { fill: _dereq_(40) }); + +_dereq_(35)('fill'); + +},{"35":35,"40":40,"62":62}],157:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $filter = _dereq_(42)(2); + +$export($export.P + $export.F * !_dereq_(128)([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } +}); + +},{"128":128,"42":42,"62":62}],158:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) +var $export = _dereq_(62); +var $find = _dereq_(42)(6); +var KEY = 'findIndex'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +_dereq_(35)(KEY); + +},{"35":35,"42":42,"62":62}],159:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) +var $export = _dereq_(62); +var $find = _dereq_(42)(5); +var KEY = 'find'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +_dereq_(35)(KEY); + +},{"35":35,"42":42,"62":62}],160:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $forEach = _dereq_(42)(0); +var STRICT = _dereq_(128)([].forEach, true); + +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } +}); + +},{"128":128,"42":42,"62":62}],161:[function(_dereq_,module,exports){ +'use strict'; +var ctx = _dereq_(54); +var $export = _dereq_(62); +var toObject = _dereq_(142); +var call = _dereq_(83); +var isArrayIter = _dereq_(78); +var toLength = _dereq_(141); +var createProperty = _dereq_(53); +var getIterFn = _dereq_(153); + +$export($export.S + $export.F * !_dereq_(86)(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = getIterFn(O); + var length, result, step, iterator; + if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for (result = new C(length); length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + +},{"141":141,"142":142,"153":153,"53":53,"54":54,"62":62,"78":78,"83":83,"86":86}],162:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $indexOf = _dereq_(41)(false); +var $native = [].indexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(128)($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); + +},{"128":128,"41":41,"62":62}],163:[function(_dereq_,module,exports){ +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = _dereq_(62); + +$export($export.S, 'Array', { isArray: _dereq_(79) }); + +},{"62":62,"79":79}],164:[function(_dereq_,module,exports){ +'use strict'; +var addToUnscopables = _dereq_(35); +var step = _dereq_(87); +var Iterators = _dereq_(88); +var toIObject = _dereq_(140); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = _dereq_(85)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +},{"140":140,"35":35,"85":85,"87":87,"88":88}],165:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.13 Array.prototype.join(separator) +var $export = _dereq_(62); +var toIObject = _dereq_(140); +var arrayJoin = [].join; + +// fallback for not array-like strings +$export($export.P + $export.F * (_dereq_(77) != Object || !_dereq_(128)(arrayJoin)), 'Array', { + join: function join(separator) { + return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator); + } +}); + +},{"128":128,"140":140,"62":62,"77":77}],166:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var toIObject = _dereq_(140); +var toInteger = _dereq_(139); +var toLength = _dereq_(141); +var $native = [].lastIndexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(128)($native)), 'Array', { + // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0; + var O = toIObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0; + return -1; + } +}); + +},{"128":128,"139":139,"140":140,"141":141,"62":62}],167:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $map = _dereq_(42)(1); + +$export($export.P + $export.F * !_dereq_(128)([].map, true), 'Array', { + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments[1]); + } +}); + +},{"128":128,"42":42,"62":62}],168:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var createProperty = _dereq_(53); + +// WebKit Array.of isn't generic +$export($export.S + $export.F * _dereq_(64)(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); +}), 'Array', { + // 22.1.2.3 Array.of( ...items) + of: function of(/* ...args */) { + var index = 0; + var aLen = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(aLen); + while (aLen > index) createProperty(result, index, arguments[index++]); + result.length = aLen; + return result; + } +}); + +},{"53":53,"62":62,"64":64}],169:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $reduce = _dereq_(43); + +$export($export.P + $export.F * !_dereq_(128)([].reduceRight, true), 'Array', { + // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], true); + } +}); + +},{"128":128,"43":43,"62":62}],170:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $reduce = _dereq_(43); + +$export($export.P + $export.F * !_dereq_(128)([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } +}); + +},{"128":128,"43":43,"62":62}],171:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var html = _dereq_(73); +var cof = _dereq_(48); +var toAbsoluteIndex = _dereq_(137); +var toLength = _dereq_(141); +var arraySlice = [].slice; + +// fallback for not array-like ES3 strings and DOM objects +$export($export.P + $export.F * _dereq_(64)(function () { + if (html) arraySlice.call(html); +}), 'Array', { + slice: function slice(begin, end) { + var len = toLength(this.length); + var klass = cof(this); + end = end === undefined ? len : end; + if (klass == 'Array') return arraySlice.call(this, begin, end); + var start = toAbsoluteIndex(begin, len); + var upTo = toAbsoluteIndex(end, len); + var size = toLength(upTo - start); + var cloned = new Array(size); + var i = 0; + for (; i < size; i++) cloned[i] = klass == 'String' + ? this.charAt(start + i) + : this[start + i]; + return cloned; + } +}); + +},{"137":137,"141":141,"48":48,"62":62,"64":64,"73":73}],172:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $some = _dereq_(42)(3); + +$export($export.P + $export.F * !_dereq_(128)([].some, true), 'Array', { + // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments[1]); + } +}); + +},{"128":128,"42":42,"62":62}],173:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var aFunction = _dereq_(33); +var toObject = _dereq_(142); +var fails = _dereq_(64); +var $sort = [].sort; +var test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function () { + // IE8- + test.sort(undefined); +}) || !fails(function () { + // V8 bug + test.sort(null); + // Old WebKit +}) || !_dereq_(128)($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); + +},{"128":128,"142":142,"33":33,"62":62,"64":64}],174:[function(_dereq_,module,exports){ +_dereq_(123)('Array'); + +},{"123":123}],175:[function(_dereq_,module,exports){ +// 20.3.3.1 / 15.9.4.4 Date.now() +var $export = _dereq_(62); + +$export($export.S, 'Date', { now: function () { return new Date().getTime(); } }); + +},{"62":62}],176:[function(_dereq_,module,exports){ +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var $export = _dereq_(62); +var toISOString = _dereq_(55); + +// PhantomJS / old WebKit has a broken implementations +$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', { + toISOString: toISOString +}); + +},{"55":55,"62":62}],177:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var toObject = _dereq_(142); +var toPrimitive = _dereq_(143); + +$export($export.P + $export.F * _dereq_(64)(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; +}), 'Date', { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } +}); + +},{"142":142,"143":143,"62":62,"64":64}],178:[function(_dereq_,module,exports){ +var TO_PRIMITIVE = _dereq_(152)('toPrimitive'); +var proto = Date.prototype; + +if (!(TO_PRIMITIVE in proto)) _dereq_(72)(proto, TO_PRIMITIVE, _dereq_(56)); + +},{"152":152,"56":56,"72":72}],179:[function(_dereq_,module,exports){ +var DateProto = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var $toString = DateProto[TO_STRING]; +var getTime = DateProto.getTime; +if (new Date(NaN) + '' != INVALID_DATE) { + _dereq_(118)(DateProto, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString.call(this) : INVALID_DATE; + }); +} + +},{"118":118}],180:[function(_dereq_,module,exports){ +// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) +var $export = _dereq_(62); + +$export($export.P, 'Function', { bind: _dereq_(46) }); + +},{"46":46,"62":62}],181:[function(_dereq_,module,exports){ +'use strict'; +var isObject = _dereq_(81); +var getPrototypeOf = _dereq_(105); +var HAS_INSTANCE = _dereq_(152)('hasInstance'); +var FunctionProto = Function.prototype; +// 19.2.3.6 Function.prototype[@@hasInstance](V) +if (!(HAS_INSTANCE in FunctionProto)) _dereq_(99).f(FunctionProto, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) return false; + if (!isObject(this.prototype)) return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = getPrototypeOf(O)) if (this.prototype === O) return true; + return false; +} }); + +},{"105":105,"152":152,"81":81,"99":99}],182:[function(_dereq_,module,exports){ +var dP = _dereq_(99).f; +var FProto = Function.prototype; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// 19.2.4.2 name +NAME in FProto || _dereq_(58) && dP(FProto, NAME, { + configurable: true, + get: function () { + try { + return ('' + this).match(nameRE)[1]; + } catch (e) { + return ''; + } + } +}); + +},{"58":58,"99":99}],183:[function(_dereq_,module,exports){ +'use strict'; +var strong = _dereq_(49); +var validate = _dereq_(149); +var MAP = 'Map'; + +// 23.1 Map Objects +module.exports = _dereq_(51)(MAP, function (get) { + return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = strong.getEntry(validate(this, MAP), key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); + } +}, strong, true); + +},{"149":149,"49":49,"51":51}],184:[function(_dereq_,module,exports){ +// 20.2.2.3 Math.acosh(x) +var $export = _dereq_(62); +var log1p = _dereq_(92); +var sqrt = Math.sqrt; +var $acosh = Math.acosh; + +$export($export.S + $export.F * !($acosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + && Math.floor($acosh(Number.MAX_VALUE)) == 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + && $acosh(Infinity) == Infinity +), 'Math', { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? Math.log(x) + Math.LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); + +},{"62":62,"92":92}],185:[function(_dereq_,module,exports){ +// 20.2.2.5 Math.asinh(x) +var $export = _dereq_(62); +var $asinh = Math.asinh; + +function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1)); +} + +// Tor Browser bug: Math.asinh(0) -> -0 +$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh }); + +},{"62":62}],186:[function(_dereq_,module,exports){ +// 20.2.2.7 Math.atanh(x) +var $export = _dereq_(62); +var $atanh = Math.atanh; + +// Tor Browser bug: Math.atanh(-0) -> 0 +$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2; + } +}); + +},{"62":62}],187:[function(_dereq_,module,exports){ +// 20.2.2.9 Math.cbrt(x) +var $export = _dereq_(62); +var sign = _dereq_(93); + +$export($export.S, 'Math', { + cbrt: function cbrt(x) { + return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3); + } +}); + +},{"62":62,"93":93}],188:[function(_dereq_,module,exports){ +// 20.2.2.11 Math.clz32(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32; + } +}); + +},{"62":62}],189:[function(_dereq_,module,exports){ +// 20.2.2.12 Math.cosh(x) +var $export = _dereq_(62); +var exp = Math.exp; + +$export($export.S, 'Math', { + cosh: function cosh(x) { + return (exp(x = +x) + exp(-x)) / 2; + } +}); + +},{"62":62}],190:[function(_dereq_,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $export = _dereq_(62); +var $expm1 = _dereq_(90); + +$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 }); + +},{"62":62,"90":90}],191:[function(_dereq_,module,exports){ +// 20.2.2.16 Math.fround(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { fround: _dereq_(91) }); + +},{"62":62,"91":91}],192:[function(_dereq_,module,exports){ +// 20.2.2.17 Math.hypot([value1[, value2[, … ]]]) +var $export = _dereq_(62); +var abs = Math.abs; + +$export($export.S, 'Math', { + hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * Math.sqrt(sum); + } +}); + +},{"62":62}],193:[function(_dereq_,module,exports){ +// 20.2.2.18 Math.imul(x, y) +var $export = _dereq_(62); +var $imul = Math.imul; + +// some WebKit versions fails with big numbers, some has wrong arity +$export($export.S + $export.F * _dereq_(64)(function () { + return $imul(0xffffffff, 5) != -5 || $imul.length != 2; +}), 'Math', { + imul: function imul(x, y) { + var UINT16 = 0xffff; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); + +},{"62":62,"64":64}],194:[function(_dereq_,module,exports){ +// 20.2.2.21 Math.log10(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { + log10: function log10(x) { + return Math.log(x) * Math.LOG10E; + } +}); + +},{"62":62}],195:[function(_dereq_,module,exports){ +// 20.2.2.20 Math.log1p(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { log1p: _dereq_(92) }); + +},{"62":62,"92":92}],196:[function(_dereq_,module,exports){ +// 20.2.2.22 Math.log2(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { + log2: function log2(x) { + return Math.log(x) / Math.LN2; + } +}); + +},{"62":62}],197:[function(_dereq_,module,exports){ +// 20.2.2.28 Math.sign(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { sign: _dereq_(93) }); + +},{"62":62,"93":93}],198:[function(_dereq_,module,exports){ +// 20.2.2.30 Math.sinh(x) +var $export = _dereq_(62); +var expm1 = _dereq_(90); +var exp = Math.exp; + +// V8 near Chromium 38 has a problem with very small numbers +$export($export.S + $export.F * _dereq_(64)(function () { + return !Math.sinh(-2e-17) != -2e-17; +}), 'Math', { + sinh: function sinh(x) { + return Math.abs(x = +x) < 1 + ? (expm1(x) - expm1(-x)) / 2 + : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2); + } +}); + +},{"62":62,"64":64,"90":90}],199:[function(_dereq_,module,exports){ +// 20.2.2.33 Math.tanh(x) +var $export = _dereq_(62); +var expm1 = _dereq_(90); +var exp = Math.exp; + +$export($export.S, 'Math', { + tanh: function tanh(x) { + var a = expm1(x = +x); + var b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); + +},{"62":62,"90":90}],200:[function(_dereq_,module,exports){ +// 20.2.2.34 Math.trunc(x) +var $export = _dereq_(62); + +$export($export.S, 'Math', { + trunc: function trunc(it) { + return (it > 0 ? Math.floor : Math.ceil)(it); + } +}); + +},{"62":62}],201:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(70); +var has = _dereq_(71); +var cof = _dereq_(48); +var inheritIfRequired = _dereq_(75); +var toPrimitive = _dereq_(143); +var fails = _dereq_(64); +var gOPN = _dereq_(103).f; +var gOPD = _dereq_(101).f; +var dP = _dereq_(99).f; +var $trim = _dereq_(134).trim; +var NUMBER = 'Number'; +var $Number = global[NUMBER]; +var Base = $Number; +var proto = $Number.prototype; +// Opera ~12 has broken Object#toString +var BROKEN_COF = cof(_dereq_(98)(proto)) == NUMBER; +var TRIM = 'trim' in String.prototype; + +// 7.1.3 ToNumber(argument) +var toNumber = function (argument) { + var it = toPrimitive(argument, false); + if (typeof it == 'string' && it.length > 2) { + it = TRIM ? it.trim() : $trim(it, 3); + var first = it.charCodeAt(0); + var third, radix, maxCode; + if (first === 43 || first === 45) { + third = it.charCodeAt(2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (it.charCodeAt(1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i + default: return +it; + } + for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) { + code = digits.charCodeAt(i); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) { + $Number = function Number(value) { + var it = arguments.length < 1 ? 0 : value; + var that = this; + return that instanceof $Number + // check on 1..constructor(foo) case + && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER) + ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); + }; + for (var keys = _dereq_(58) ? gOPN(Base) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES6 (in case, if modules with ES6 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys.length > j; j++) { + if (has(Base, key = keys[j]) && !has($Number, key)) { + dP($Number, key, gOPD(Base, key)); + } + } + $Number.prototype = proto; + proto.constructor = $Number; + _dereq_(118)(global, NUMBER, $Number); +} + +},{"101":101,"103":103,"118":118,"134":134,"143":143,"48":48,"58":58,"64":64,"70":70,"71":71,"75":75,"98":98,"99":99}],202:[function(_dereq_,module,exports){ +// 20.1.2.1 Number.EPSILON +var $export = _dereq_(62); + +$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) }); + +},{"62":62}],203:[function(_dereq_,module,exports){ +// 20.1.2.2 Number.isFinite(number) +var $export = _dereq_(62); +var _isFinite = _dereq_(70).isFinite; + +$export($export.S, 'Number', { + isFinite: function isFinite(it) { + return typeof it == 'number' && _isFinite(it); + } +}); + +},{"62":62,"70":70}],204:[function(_dereq_,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var $export = _dereq_(62); + +$export($export.S, 'Number', { isInteger: _dereq_(80) }); + +},{"62":62,"80":80}],205:[function(_dereq_,module,exports){ +// 20.1.2.4 Number.isNaN(number) +var $export = _dereq_(62); + +$export($export.S, 'Number', { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } +}); + +},{"62":62}],206:[function(_dereq_,module,exports){ +// 20.1.2.5 Number.isSafeInteger(number) +var $export = _dereq_(62); +var isInteger = _dereq_(80); +var abs = Math.abs; + +$export($export.S, 'Number', { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1fffffffffffff; + } +}); + +},{"62":62,"80":80}],207:[function(_dereq_,module,exports){ +// 20.1.2.6 Number.MAX_SAFE_INTEGER +var $export = _dereq_(62); + +$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff }); + +},{"62":62}],208:[function(_dereq_,module,exports){ +// 20.1.2.10 Number.MIN_SAFE_INTEGER +var $export = _dereq_(62); + +$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff }); + +},{"62":62}],209:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var $parseFloat = _dereq_(112); +// 20.1.2.12 Number.parseFloat(string) +$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat }); + +},{"112":112,"62":62}],210:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var $parseInt = _dereq_(113); +// 20.1.2.13 Number.parseInt(string, radix) +$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt }); + +},{"113":113,"62":62}],211:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var toInteger = _dereq_(139); +var aNumberValue = _dereq_(34); +var repeat = _dereq_(133); +var $toFixed = 1.0.toFixed; +var floor = Math.floor; +var data = [0, 0, 0, 0, 0, 0]; +var ERROR = 'Number.toFixed: incorrect invocation!'; +var ZERO = '0'; + +var multiply = function (n, c) { + var i = -1; + var c2 = c; + while (++i < 6) { + c2 += n * data[i]; + data[i] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } +}; +var divide = function (n) { + var i = 6; + var c = 0; + while (--i >= 0) { + c += data[i]; + data[i] = floor(c / n); + c = (c % n) * 1e7; + } +}; +var numToString = function () { + var i = 6; + var s = ''; + while (--i >= 0) { + if (s !== '' || i === 0 || data[i] !== 0) { + var t = String(data[i]); + s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t; + } + } return s; +}; +var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; +var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; +}; + +$export($export.P + $export.F * (!!$toFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' +) || !_dereq_(64)(function () { + // V8 ~ Android 4.3- + $toFixed.call({}); +})), 'Number', { + toFixed: function toFixed(fractionDigits) { + var x = aNumberValue(this, ERROR); + var f = toInteger(fractionDigits); + var s = ''; + var m = ZERO; + var e, z, j, k; + if (f < 0 || f > 20) throw RangeError(ERROR); + // eslint-disable-next-line no-self-compare + if (x != x) return 'NaN'; + if (x <= -1e21 || x >= 1e21) return String(x); + if (x < 0) { + s = '-'; + x = -x; + } + if (x > 1e-21) { + e = log(x * pow(2, 69, 1)) - 69; + z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = f; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + m = numToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + m = numToString() + repeat.call(ZERO, f); + } + } + if (f > 0) { + k = m.length; + m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f)); + } else { + m = s + m; + } return m; + } +}); + +},{"133":133,"139":139,"34":34,"62":62,"64":64}],212:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $fails = _dereq_(64); +var aNumberValue = _dereq_(34); +var $toPrecision = 1.0.toPrecision; + +$export($export.P + $export.F * ($fails(function () { + // IE7- + return $toPrecision.call(1, undefined) !== '1'; +}) || !$fails(function () { + // V8 ~ Android 4.3- + $toPrecision.call({}); +})), 'Number', { + toPrecision: function toPrecision(precision) { + var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!'); + return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); + } +}); + +},{"34":34,"62":62,"64":64}],213:[function(_dereq_,module,exports){ +// 19.1.3.1 Object.assign(target, source) +var $export = _dereq_(62); + +$export($export.S + $export.F, 'Object', { assign: _dereq_(97) }); + +},{"62":62,"97":97}],214:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +$export($export.S, 'Object', { create: _dereq_(98) }); + +},{"62":62,"98":98}],215:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !_dereq_(58), 'Object', { defineProperties: _dereq_(100) }); + +},{"100":100,"58":58,"62":62}],216:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !_dereq_(58), 'Object', { defineProperty: _dereq_(99).f }); + +},{"58":58,"62":62,"99":99}],217:[function(_dereq_,module,exports){ +// 19.1.2.5 Object.freeze(O) +var isObject = _dereq_(81); +var meta = _dereq_(94).onFreeze; + +_dereq_(109)('freeze', function ($freeze) { + return function freeze(it) { + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); + +},{"109":109,"81":81,"94":94}],218:[function(_dereq_,module,exports){ +// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) +var toIObject = _dereq_(140); +var $getOwnPropertyDescriptor = _dereq_(101).f; + +_dereq_(109)('getOwnPropertyDescriptor', function () { + return function getOwnPropertyDescriptor(it, key) { + return $getOwnPropertyDescriptor(toIObject(it), key); + }; +}); + +},{"101":101,"109":109,"140":140}],219:[function(_dereq_,module,exports){ +// 19.1.2.7 Object.getOwnPropertyNames(O) +_dereq_(109)('getOwnPropertyNames', function () { + return _dereq_(102).f; +}); + +},{"102":102,"109":109}],220:[function(_dereq_,module,exports){ +// 19.1.2.9 Object.getPrototypeOf(O) +var toObject = _dereq_(142); +var $getPrototypeOf = _dereq_(105); + +_dereq_(109)('getPrototypeOf', function () { + return function getPrototypeOf(it) { + return $getPrototypeOf(toObject(it)); + }; +}); + +},{"105":105,"109":109,"142":142}],221:[function(_dereq_,module,exports){ +// 19.1.2.11 Object.isExtensible(O) +var isObject = _dereq_(81); + +_dereq_(109)('isExtensible', function ($isExtensible) { + return function isExtensible(it) { + return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; + }; +}); + +},{"109":109,"81":81}],222:[function(_dereq_,module,exports){ +// 19.1.2.12 Object.isFrozen(O) +var isObject = _dereq_(81); + +_dereq_(109)('isFrozen', function ($isFrozen) { + return function isFrozen(it) { + return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; + }; +}); + +},{"109":109,"81":81}],223:[function(_dereq_,module,exports){ +// 19.1.2.13 Object.isSealed(O) +var isObject = _dereq_(81); + +_dereq_(109)('isSealed', function ($isSealed) { + return function isSealed(it) { + return isObject(it) ? $isSealed ? $isSealed(it) : false : true; + }; +}); + +},{"109":109,"81":81}],224:[function(_dereq_,module,exports){ +// 19.1.3.10 Object.is(value1, value2) +var $export = _dereq_(62); +$export($export.S, 'Object', { is: _dereq_(121) }); + +},{"121":121,"62":62}],225:[function(_dereq_,module,exports){ +// 19.1.2.14 Object.keys(O) +var toObject = _dereq_(142); +var $keys = _dereq_(107); + +_dereq_(109)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + +},{"107":107,"109":109,"142":142}],226:[function(_dereq_,module,exports){ +// 19.1.2.15 Object.preventExtensions(O) +var isObject = _dereq_(81); +var meta = _dereq_(94).onFreeze; + +_dereq_(109)('preventExtensions', function ($preventExtensions) { + return function preventExtensions(it) { + return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it; + }; +}); + +},{"109":109,"81":81,"94":94}],227:[function(_dereq_,module,exports){ +// 19.1.2.17 Object.seal(O) +var isObject = _dereq_(81); +var meta = _dereq_(94).onFreeze; + +_dereq_(109)('seal', function ($seal) { + return function seal(it) { + return $seal && isObject(it) ? $seal(meta(it)) : it; + }; +}); + +},{"109":109,"81":81,"94":94}],228:[function(_dereq_,module,exports){ +// 19.1.3.19 Object.setPrototypeOf(O, proto) +var $export = _dereq_(62); +$export($export.S, 'Object', { setPrototypeOf: _dereq_(122).set }); + +},{"122":122,"62":62}],229:[function(_dereq_,module,exports){ +'use strict'; +// 19.1.3.6 Object.prototype.toString() +var classof = _dereq_(47); +var test = {}; +test[_dereq_(152)('toStringTag')] = 'z'; +if (test + '' != '[object z]') { + _dereq_(118)(Object.prototype, 'toString', function toString() { + return '[object ' + classof(this) + ']'; + }, true); +} + +},{"118":118,"152":152,"47":47}],230:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var $parseFloat = _dereq_(112); +// 18.2.4 parseFloat(string) +$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat }); + +},{"112":112,"62":62}],231:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var $parseInt = _dereq_(113); +// 18.2.5 parseInt(string, radix) +$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt }); + +},{"113":113,"62":62}],232:[function(_dereq_,module,exports){ +'use strict'; +var LIBRARY = _dereq_(89); +var global = _dereq_(70); +var ctx = _dereq_(54); +var classof = _dereq_(47); +var $export = _dereq_(62); +var isObject = _dereq_(81); +var aFunction = _dereq_(33); +var anInstance = _dereq_(37); +var forOf = _dereq_(68); +var speciesConstructor = _dereq_(127); +var task = _dereq_(136).set; +var microtask = _dereq_(95)(); +var newPromiseCapabilityModule = _dereq_(96); +var perform = _dereq_(114); +var userAgent = _dereq_(148); +var promiseResolve = _dereq_(115); +var PROMISE = 'Promise'; +var TypeError = global.TypeError; +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var $Promise = global[PROMISE]; +var isNode = classof(process) == 'process'; +var empty = function () { /* empty */ }; +var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; +var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; + +var USE_NATIVE = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[_dereq_(152)('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } +}(); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); +}; +var onUnhandled = function (promise) { + task.call(global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = perform(function () { + if (isNode) { + process.emit('unhandledRejection', value, promise); + } else if (handler = global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); +}; +var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; +}; +var onHandleUnhandled = function (promise) { + task.call(global, function () { + var handler; + if (isNode) { + process.emit('rejectionHandled', promise); + } else if (handler = global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); +}; +var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } +}; + +// constructor polyfill +if (!USE_NATIVE) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = _dereq_(117)($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); +_dereq_(124)($Promise, PROMISE); +_dereq_(123)(PROMISE); +Wrapper = _dereq_(52)[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); + } +}); +$export($export.S + $export.F * !(USE_NATIVE && _dereq_(86)(function (iter) { + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var values = []; + var index = 0; + var remaining = 1; + forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } +}); + +},{"114":114,"115":115,"117":117,"123":123,"124":124,"127":127,"136":136,"148":148,"152":152,"33":33,"37":37,"47":47,"52":52,"54":54,"62":62,"68":68,"70":70,"81":81,"86":86,"89":89,"95":95,"96":96}],233:[function(_dereq_,module,exports){ +// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) +var $export = _dereq_(62); +var aFunction = _dereq_(33); +var anObject = _dereq_(38); +var rApply = (_dereq_(70).Reflect || {}).apply; +var fApply = Function.apply; +// MS Edge argumentsList argument is optional +$export($export.S + $export.F * !_dereq_(64)(function () { + rApply(function () { /* empty */ }); +}), 'Reflect', { + apply: function apply(target, thisArgument, argumentsList) { + var T = aFunction(target); + var L = anObject(argumentsList); + return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); + } +}); + +},{"33":33,"38":38,"62":62,"64":64,"70":70}],234:[function(_dereq_,module,exports){ +// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) +var $export = _dereq_(62); +var create = _dereq_(98); +var aFunction = _dereq_(33); +var anObject = _dereq_(38); +var isObject = _dereq_(81); +var fails = _dereq_(64); +var bind = _dereq_(46); +var rConstruct = (_dereq_(70).Reflect || {}).construct; + +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(rConstruct(function () { /* empty */ }, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function () { + rConstruct(function () { /* empty */ }); +}); + +$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { + construct: function construct(Target, args /* , newTarget */) { + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + +},{"33":33,"38":38,"46":46,"62":62,"64":64,"70":70,"81":81,"98":98}],235:[function(_dereq_,module,exports){ +// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) +var dP = _dereq_(99); +var $export = _dereq_(62); +var anObject = _dereq_(38); +var toPrimitive = _dereq_(143); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +$export($export.S + $export.F * _dereq_(64)(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 }); +}), 'Reflect', { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + propertyKey = toPrimitive(propertyKey, true); + anObject(attributes); + try { + dP.f(target, propertyKey, attributes); + return true; + } catch (e) { + return false; + } + } +}); + +},{"143":143,"38":38,"62":62,"64":64,"99":99}],236:[function(_dereq_,module,exports){ +// 26.1.4 Reflect.deleteProperty(target, propertyKey) +var $export = _dereq_(62); +var gOPD = _dereq_(101).f; +var anObject = _dereq_(38); + +$export($export.S, 'Reflect', { + deleteProperty: function deleteProperty(target, propertyKey) { + var desc = gOPD(anObject(target), propertyKey); + return desc && !desc.configurable ? false : delete target[propertyKey]; + } +}); + +},{"101":101,"38":38,"62":62}],237:[function(_dereq_,module,exports){ +'use strict'; +// 26.1.5 Reflect.enumerate(target) +var $export = _dereq_(62); +var anObject = _dereq_(38); +var Enumerate = function (iterated) { + this._t = anObject(iterated); // target + this._i = 0; // next index + var keys = this._k = []; // keys + var key; + for (key in iterated) keys.push(key); +}; +_dereq_(84)(Enumerate, 'Object', function () { + var that = this; + var keys = that._k; + var key; + do { + if (that._i >= keys.length) return { value: undefined, done: true }; + } while (!((key = keys[that._i++]) in that._t)); + return { value: key, done: false }; +}); + +$export($export.S, 'Reflect', { + enumerate: function enumerate(target) { + return new Enumerate(target); + } +}); + +},{"38":38,"62":62,"84":84}],238:[function(_dereq_,module,exports){ +// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) +var gOPD = _dereq_(101); +var $export = _dereq_(62); +var anObject = _dereq_(38); + +$export($export.S, 'Reflect', { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return gOPD.f(anObject(target), propertyKey); + } +}); + +},{"101":101,"38":38,"62":62}],239:[function(_dereq_,module,exports){ +// 26.1.8 Reflect.getPrototypeOf(target) +var $export = _dereq_(62); +var getProto = _dereq_(105); +var anObject = _dereq_(38); + +$export($export.S, 'Reflect', { + getPrototypeOf: function getPrototypeOf(target) { + return getProto(anObject(target)); + } +}); + +},{"105":105,"38":38,"62":62}],240:[function(_dereq_,module,exports){ +// 26.1.6 Reflect.get(target, propertyKey [, receiver]) +var gOPD = _dereq_(101); +var getPrototypeOf = _dereq_(105); +var has = _dereq_(71); +var $export = _dereq_(62); +var isObject = _dereq_(81); +var anObject = _dereq_(38); + +function get(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var desc, proto; + if (anObject(target) === receiver) return target[propertyKey]; + if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value') + ? desc.value + : desc.get !== undefined + ? desc.get.call(receiver) + : undefined; + if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver); +} + +$export($export.S, 'Reflect', { get: get }); + +},{"101":101,"105":105,"38":38,"62":62,"71":71,"81":81}],241:[function(_dereq_,module,exports){ +// 26.1.9 Reflect.has(target, propertyKey) +var $export = _dereq_(62); + +$export($export.S, 'Reflect', { + has: function has(target, propertyKey) { + return propertyKey in target; + } +}); + +},{"62":62}],242:[function(_dereq_,module,exports){ +// 26.1.10 Reflect.isExtensible(target) +var $export = _dereq_(62); +var anObject = _dereq_(38); +var $isExtensible = Object.isExtensible; + +$export($export.S, 'Reflect', { + isExtensible: function isExtensible(target) { + anObject(target); + return $isExtensible ? $isExtensible(target) : true; + } +}); + +},{"38":38,"62":62}],243:[function(_dereq_,module,exports){ +// 26.1.11 Reflect.ownKeys(target) +var $export = _dereq_(62); + +$export($export.S, 'Reflect', { ownKeys: _dereq_(111) }); + +},{"111":111,"62":62}],244:[function(_dereq_,module,exports){ +// 26.1.12 Reflect.preventExtensions(target) +var $export = _dereq_(62); +var anObject = _dereq_(38); +var $preventExtensions = Object.preventExtensions; + +$export($export.S, 'Reflect', { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + if ($preventExtensions) $preventExtensions(target); + return true; + } catch (e) { + return false; + } + } +}); + +},{"38":38,"62":62}],245:[function(_dereq_,module,exports){ +// 26.1.14 Reflect.setPrototypeOf(target, proto) +var $export = _dereq_(62); +var setProto = _dereq_(122); + +if (setProto) $export($export.S, 'Reflect', { + setPrototypeOf: function setPrototypeOf(target, proto) { + setProto.check(target, proto); + try { + setProto.set(target, proto); + return true; + } catch (e) { + return false; + } + } +}); + +},{"122":122,"62":62}],246:[function(_dereq_,module,exports){ +// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) +var dP = _dereq_(99); +var gOPD = _dereq_(101); +var getPrototypeOf = _dereq_(105); +var has = _dereq_(71); +var $export = _dereq_(62); +var createDesc = _dereq_(116); +var anObject = _dereq_(38); +var isObject = _dereq_(81); + +function set(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDesc = gOPD.f(anObject(target), propertyKey); + var existingDescriptor, proto; + if (!ownDesc) { + if (isObject(proto = getPrototypeOf(target))) { + return set(proto, propertyKey, V, receiver); + } + ownDesc = createDesc(0); + } + if (has(ownDesc, 'value')) { + if (ownDesc.writable === false || !isObject(receiver)) return false; + if (existingDescriptor = gOPD.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; + existingDescriptor.value = V; + dP.f(receiver, propertyKey, existingDescriptor); + } else dP.f(receiver, propertyKey, createDesc(0, V)); + return true; + } + return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); +} + +$export($export.S, 'Reflect', { set: set }); + +},{"101":101,"105":105,"116":116,"38":38,"62":62,"71":71,"81":81,"99":99}],247:[function(_dereq_,module,exports){ +var global = _dereq_(70); +var inheritIfRequired = _dereq_(75); +var dP = _dereq_(99).f; +var gOPN = _dereq_(103).f; +var isRegExp = _dereq_(82); +var $flags = _dereq_(66); +var $RegExp = global.RegExp; +var Base = $RegExp; +var proto = $RegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; +// "new" creates a new object, old webkit buggy here +var CORRECT_NEW = new $RegExp(re1) !== re1; + +if (_dereq_(58) && (!CORRECT_NEW || _dereq_(64)(function () { + re2[_dereq_(152)('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))) { + $RegExp = function RegExp(p, f) { + var tiRE = this instanceof $RegExp; + var piRE = isRegExp(p); + var fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function (key) { + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function () { return Base[key]; }, + set: function (it) { Base[key] = it; } + }); + }; + for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + _dereq_(118)(global, 'RegExp', $RegExp); +} + +_dereq_(123)('RegExp'); + +},{"103":103,"118":118,"123":123,"152":152,"58":58,"64":64,"66":66,"70":70,"75":75,"82":82,"99":99}],248:[function(_dereq_,module,exports){ +'use strict'; +var regexpExec = _dereq_(120); +_dereq_(62)({ + target: 'RegExp', + proto: true, + forced: regexpExec !== /./.exec +}, { + exec: regexpExec +}); + +},{"120":120,"62":62}],249:[function(_dereq_,module,exports){ +// 21.2.5.3 get RegExp.prototype.flags() +if (_dereq_(58) && /./g.flags != 'g') _dereq_(99).f(RegExp.prototype, 'flags', { + configurable: true, + get: _dereq_(66) +}); + +},{"58":58,"66":66,"99":99}],250:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(38); +var toLength = _dereq_(141); +var advanceStringIndex = _dereq_(36); +var regExpExec = _dereq_(119); + +// @@match logic +_dereq_(65)('match', 1, function (defined, MATCH, $match, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative($match, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + if (!rx.global) return regExpExec(rx, S); + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + +},{"119":119,"141":141,"36":36,"38":38,"65":65}],251:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(38); +var toObject = _dereq_(142); +var toLength = _dereq_(141); +var toInteger = _dereq_(139); +var advanceStringIndex = _dereq_(36); +var regExpExec = _dereq_(119); +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +_dereq_(65)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); + +},{"119":119,"139":139,"141":141,"142":142,"36":36,"38":38,"65":65}],252:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(38); +var sameValue = _dereq_(121); +var regExpExec = _dereq_(119); + +// @@search logic +_dereq_(65)('search', 1, function (defined, SEARCH, $search, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.github.io/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[SEARCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search + function (regexp) { + var res = maybeCallNative($search, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); + +},{"119":119,"121":121,"38":38,"65":65}],253:[function(_dereq_,module,exports){ +'use strict'; + +var isRegExp = _dereq_(82); +var anObject = _dereq_(38); +var speciesConstructor = _dereq_(127); +var advanceStringIndex = _dereq_(36); +var toLength = _dereq_(141); +var callRegExpExec = _dereq_(119); +var regexpExec = _dereq_(120); +var fails = _dereq_(64); +var $min = Math.min; +var $push = [].push; +var $SPLIT = 'split'; +var LENGTH = 'length'; +var LAST_INDEX = 'lastIndex'; +var MAX_UINT32 = 0xffffffff; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +_dereq_(65)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}); + +},{"119":119,"120":120,"127":127,"141":141,"36":36,"38":38,"64":64,"65":65,"82":82}],254:[function(_dereq_,module,exports){ +'use strict'; +_dereq_(249); +var anObject = _dereq_(38); +var $flags = _dereq_(66); +var DESCRIPTORS = _dereq_(58); +var TO_STRING = 'toString'; +var $toString = /./[TO_STRING]; + +var define = function (fn) { + _dereq_(118)(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if (_dereq_(64)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); +} + +},{"118":118,"249":249,"38":38,"58":58,"64":64,"66":66}],255:[function(_dereq_,module,exports){ +'use strict'; +var strong = _dereq_(49); +var validate = _dereq_(149); +var SET = 'Set'; + +// 23.2 Set Objects +module.exports = _dereq_(51)(SET, function (get) { + return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); + } +}, strong); + +},{"149":149,"49":49,"51":51}],256:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.2 String.prototype.anchor(name) +_dereq_(131)('anchor', function (createHTML) { + return function anchor(name) { + return createHTML(this, 'a', 'name', name); + }; +}); + +},{"131":131}],257:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.3 String.prototype.big() +_dereq_(131)('big', function (createHTML) { + return function big() { + return createHTML(this, 'big', '', ''); + }; +}); + +},{"131":131}],258:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.4 String.prototype.blink() +_dereq_(131)('blink', function (createHTML) { + return function blink() { + return createHTML(this, 'blink', '', ''); + }; +}); + +},{"131":131}],259:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.5 String.prototype.bold() +_dereq_(131)('bold', function (createHTML) { + return function bold() { + return createHTML(this, 'b', '', ''); + }; +}); + +},{"131":131}],260:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $at = _dereq_(129)(false); +$export($export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } +}); + +},{"129":129,"62":62}],261:[function(_dereq_,module,exports){ +// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) +'use strict'; +var $export = _dereq_(62); +var toLength = _dereq_(141); +var context = _dereq_(130); +var ENDS_WITH = 'endsWith'; +var $endsWith = ''[ENDS_WITH]; + +$export($export.P + $export.F * _dereq_(63)(ENDS_WITH), 'String', { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = context(this, searchString, ENDS_WITH); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); + var search = String(searchString); + return $endsWith + ? $endsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); + +},{"130":130,"141":141,"62":62,"63":63}],262:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.6 String.prototype.fixed() +_dereq_(131)('fixed', function (createHTML) { + return function fixed() { + return createHTML(this, 'tt', '', ''); + }; +}); + +},{"131":131}],263:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.7 String.prototype.fontcolor(color) +_dereq_(131)('fontcolor', function (createHTML) { + return function fontcolor(color) { + return createHTML(this, 'font', 'color', color); + }; +}); + +},{"131":131}],264:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.8 String.prototype.fontsize(size) +_dereq_(131)('fontsize', function (createHTML) { + return function fontsize(size) { + return createHTML(this, 'font', 'size', size); + }; +}); + +},{"131":131}],265:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var toAbsoluteIndex = _dereq_(137); +var fromCharCode = String.fromCharCode; +var $fromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } +}); + +},{"137":137,"62":62}],266:[function(_dereq_,module,exports){ +// 21.1.3.7 String.prototype.includes(searchString, position = 0) +'use strict'; +var $export = _dereq_(62); +var context = _dereq_(130); +var INCLUDES = 'includes'; + +$export($export.P + $export.F * _dereq_(63)(INCLUDES), 'String', { + includes: function includes(searchString /* , position = 0 */) { + return !!~context(this, searchString, INCLUDES) + .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +},{"130":130,"62":62,"63":63}],267:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.9 String.prototype.italics() +_dereq_(131)('italics', function (createHTML) { + return function italics() { + return createHTML(this, 'i', '', ''); + }; +}); + +},{"131":131}],268:[function(_dereq_,module,exports){ +'use strict'; +var $at = _dereq_(129)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +_dereq_(85)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + +},{"129":129,"85":85}],269:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.10 String.prototype.link(url) +_dereq_(131)('link', function (createHTML) { + return function link(url) { + return createHTML(this, 'a', 'href', url); + }; +}); + +},{"131":131}],270:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var toIObject = _dereq_(140); +var toLength = _dereq_(141); + +$export($export.S, 'String', { + // 21.1.2.4 String.raw(callSite, ...substitutions) + raw: function raw(callSite) { + var tpl = toIObject(callSite.raw); + var len = toLength(tpl.length); + var aLen = arguments.length; + var res = []; + var i = 0; + while (len > i) { + res.push(String(tpl[i++])); + if (i < aLen) res.push(String(arguments[i])); + } return res.join(''); + } +}); + +},{"140":140,"141":141,"62":62}],271:[function(_dereq_,module,exports){ +var $export = _dereq_(62); + +$export($export.P, 'String', { + // 21.1.3.13 String.prototype.repeat(count) + repeat: _dereq_(133) +}); + +},{"133":133,"62":62}],272:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.11 String.prototype.small() +_dereq_(131)('small', function (createHTML) { + return function small() { + return createHTML(this, 'small', '', ''); + }; +}); + +},{"131":131}],273:[function(_dereq_,module,exports){ +// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) +'use strict'; +var $export = _dereq_(62); +var toLength = _dereq_(141); +var context = _dereq_(130); +var STARTS_WITH = 'startsWith'; +var $startsWith = ''[STARTS_WITH]; + +$export($export.P + $export.F * _dereq_(63)(STARTS_WITH), 'String', { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = context(this, searchString, STARTS_WITH); + var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return $startsWith + ? $startsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); + +},{"130":130,"141":141,"62":62,"63":63}],274:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.12 String.prototype.strike() +_dereq_(131)('strike', function (createHTML) { + return function strike() { + return createHTML(this, 'strike', '', ''); + }; +}); + +},{"131":131}],275:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.13 String.prototype.sub() +_dereq_(131)('sub', function (createHTML) { + return function sub() { + return createHTML(this, 'sub', '', ''); + }; +}); + +},{"131":131}],276:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.14 String.prototype.sup() +_dereq_(131)('sup', function (createHTML) { + return function sup() { + return createHTML(this, 'sup', '', ''); + }; +}); + +},{"131":131}],277:[function(_dereq_,module,exports){ +'use strict'; +// 21.1.3.25 String.prototype.trim() +_dereq_(134)('trim', function ($trim) { + return function trim() { + return $trim(this, 3); + }; +}); + +},{"134":134}],278:[function(_dereq_,module,exports){ +'use strict'; +// ECMAScript 6 symbols shim +var global = _dereq_(70); +var has = _dereq_(71); +var DESCRIPTORS = _dereq_(58); +var $export = _dereq_(62); +var redefine = _dereq_(118); +var META = _dereq_(94).KEY; +var $fails = _dereq_(64); +var shared = _dereq_(126); +var setToStringTag = _dereq_(124); +var uid = _dereq_(147); +var wks = _dereq_(152); +var wksExt = _dereq_(151); +var wksDefine = _dereq_(150); +var enumKeys = _dereq_(61); +var isArray = _dereq_(79); +var anObject = _dereq_(38); +var isObject = _dereq_(81); +var toObject = _dereq_(142); +var toIObject = _dereq_(140); +var toPrimitive = _dereq_(143); +var createDesc = _dereq_(116); +var _create = _dereq_(98); +var gOPNExt = _dereq_(102); +var $GOPD = _dereq_(101); +var $GOPS = _dereq_(104); +var $DP = _dereq_(99); +var $keys = _dereq_(107); +var gOPD = $GOPD.f; +var dP = $DP.f; +var gOPN = gOPNExt.f; +var $Symbol = global.Symbol; +var $JSON = global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE = 'prototype'; +var HIDDEN = wks('_hidden'); +var TO_PRIMITIVE = wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = shared('symbol-registry'); +var AllSymbols = shared('symbols'); +var OPSymbols = shared('op-symbols'); +var ObjectProto = Object[PROTOTYPE]; +var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function () { + return _create(dP({}, 'a', { + get: function () { return dP(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (it, key, D) { + var protoDesc = gOPD(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + dP(it, key, D); + if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function (tag) { + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto) $defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if (has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { enumerable: createDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = toPrimitive(key, true)); + if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = toIObject(it); + key = toPrimitive(key, true); + if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; + var D = gOPD(it, key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN(toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto; + var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto) $set.call(OPSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + _dereq_(103).f = gOPNExt.f = $getOwnPropertyNames; + _dereq_(108).f = $propertyIsEnumerable; + $GOPS.f = $getOwnPropertySymbols; + + if (DESCRIPTORS && !_dereq_(89)) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function (name) { + return wrap(wks(name)); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); + +for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + +for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); + +$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return $GOPS.f(toObject(it)); + } +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || _dereq_(72)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); + +},{"101":101,"102":102,"103":103,"104":104,"107":107,"108":108,"116":116,"118":118,"124":124,"126":126,"140":140,"142":142,"143":143,"147":147,"150":150,"151":151,"152":152,"38":38,"58":58,"61":61,"62":62,"64":64,"70":70,"71":71,"72":72,"79":79,"81":81,"89":89,"94":94,"98":98,"99":99}],279:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(62); +var $typed = _dereq_(146); +var buffer = _dereq_(145); +var anObject = _dereq_(38); +var toAbsoluteIndex = _dereq_(137); +var toLength = _dereq_(141); +var isObject = _dereq_(81); +var ArrayBuffer = _dereq_(70).ArrayBuffer; +var speciesConstructor = _dereq_(127); +var $ArrayBuffer = buffer.ArrayBuffer; +var $DataView = buffer.DataView; +var $isView = $typed.ABV && ArrayBuffer.isView; +var $slice = $ArrayBuffer.prototype.slice; +var VIEW = $typed.VIEW; +var ARRAY_BUFFER = 'ArrayBuffer'; + +$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer }); + +$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, { + // 24.1.3.1 ArrayBuffer.isView(arg) + isView: function isView(it) { + return $isView && $isView(it) || isObject(it) && VIEW in it; + } +}); + +$export($export.P + $export.U + $export.F * _dereq_(64)(function () { + return !new $ArrayBuffer(2).slice(1, undefined).byteLength; +}), ARRAY_BUFFER, { + // 24.1.4.3 ArrayBuffer.prototype.slice(start, end) + slice: function slice(start, end) { + if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix + var len = anObject(this).byteLength; + var first = toAbsoluteIndex(start, len); + var fin = toAbsoluteIndex(end === undefined ? len : end, len); + var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first)); + var viewS = new $DataView(this); + var viewT = new $DataView(result); + var index = 0; + while (first < fin) { + viewT.setUint8(index++, viewS.getUint8(first++)); + } return result; + } +}); + +_dereq_(123)(ARRAY_BUFFER); + +},{"123":123,"127":127,"137":137,"141":141,"145":145,"146":146,"38":38,"62":62,"64":64,"70":70,"81":81}],280:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +$export($export.G + $export.W + $export.F * !_dereq_(146).ABV, { + DataView: _dereq_(145).DataView +}); + +},{"145":145,"146":146,"62":62}],281:[function(_dereq_,module,exports){ +_dereq_(144)('Float32', 4, function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],282:[function(_dereq_,module,exports){ +_dereq_(144)('Float64', 8, function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],283:[function(_dereq_,module,exports){ +_dereq_(144)('Int16', 2, function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],284:[function(_dereq_,module,exports){ +_dereq_(144)('Int32', 4, function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],285:[function(_dereq_,module,exports){ +_dereq_(144)('Int8', 1, function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],286:[function(_dereq_,module,exports){ +_dereq_(144)('Uint16', 2, function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],287:[function(_dereq_,module,exports){ +_dereq_(144)('Uint32', 4, function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],288:[function(_dereq_,module,exports){ +_dereq_(144)('Uint8', 1, function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"144":144}],289:[function(_dereq_,module,exports){ +_dereq_(144)('Uint8', 1, function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}, true); + +},{"144":144}],290:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(70); +var each = _dereq_(42)(0); +var redefine = _dereq_(118); +var meta = _dereq_(94); +var assign = _dereq_(97); +var weak = _dereq_(50); +var isObject = _dereq_(81); +var validate = _dereq_(149); +var NATIVE_WEAK_MAP = _dereq_(149); +var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +var WEAK_MAP = 'WeakMap'; +var getWeak = meta.getWeak; +var isExtensible = Object.isExtensible; +var uncaughtFrozenStore = weak.ufstore; +var InternalMap; + +var wrapper = function (get) { + return function WeakMap() { + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + if (isObject(key)) { + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return weak.def(validate(this, WEAK_MAP), key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = _dereq_(51)(WEAK_MAP, wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if (NATIVE_WEAK_MAP && IS_IE11) { + InternalMap = weak.getConstructor(wrapper, WEAK_MAP); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function (key) { + var proto = $WeakMap.prototype; + var method = proto[key]; + redefine(proto, key, function (a, b) { + // store frozen objects on internal weakmap shim + if (isObject(a) && !isExtensible(a)) { + if (!this._f) this._f = new InternalMap(); + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} + +},{"118":118,"149":149,"42":42,"50":50,"51":51,"70":70,"81":81,"94":94,"97":97}],291:[function(_dereq_,module,exports){ +'use strict'; +var weak = _dereq_(50); +var validate = _dereq_(149); +var WEAK_SET = 'WeakSet'; + +// 23.4 WeakSet Objects +_dereq_(51)(WEAK_SET, function (get) { + return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return weak.def(validate(this, WEAK_SET), value, true); + } +}, weak, false, true); + +},{"149":149,"50":50,"51":51}],292:[function(_dereq_,module,exports){ +'use strict'; +// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap +var $export = _dereq_(62); +var flattenIntoArray = _dereq_(67); +var toObject = _dereq_(142); +var toLength = _dereq_(141); +var aFunction = _dereq_(33); +var arraySpeciesCreate = _dereq_(45); + +$export($export.P, 'Array', { + flatMap: function flatMap(callbackfn /* , thisArg */) { + var O = toObject(this); + var sourceLen, A; + aFunction(callbackfn); + sourceLen = toLength(O.length); + A = arraySpeciesCreate(O, 0); + flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]); + return A; + } +}); + +_dereq_(35)('flatMap'); + +},{"141":141,"142":142,"33":33,"35":35,"45":45,"62":62,"67":67}],293:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/Array.prototype.includes +var $export = _dereq_(62); +var $includes = _dereq_(41)(true); + +$export($export.P, 'Array', { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +_dereq_(35)('includes'); + +},{"35":35,"41":41,"62":62}],294:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = _dereq_(62); +var $entries = _dereq_(110)(true); + +$export($export.S, 'Object', { + entries: function entries(it) { + return $entries(it); + } +}); + +},{"110":110,"62":62}],295:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = _dereq_(62); +var ownKeys = _dereq_(111); +var toIObject = _dereq_(140); +var gOPD = _dereq_(101); +var createProperty = _dereq_(53); + +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIObject(object); + var getDesc = gOPD.f; + var keys = ownKeys(O); + var result = {}; + var i = 0; + var key, desc; + while (keys.length > i) { + desc = getDesc(O, key = keys[i++]); + if (desc !== undefined) createProperty(result, key, desc); + } + return result; + } +}); + +},{"101":101,"111":111,"140":140,"53":53,"62":62}],296:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = _dereq_(62); +var $values = _dereq_(110)(false); + +$export($export.S, 'Object', { + values: function values(it) { + return $values(it); + } +}); + +},{"110":110,"62":62}],297:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-promise-finally +'use strict'; +var $export = _dereq_(62); +var core = _dereq_(52); +var global = _dereq_(70); +var speciesConstructor = _dereq_(127); +var promiseResolve = _dereq_(115); + +$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { + var C = speciesConstructor(this, core.Promise || global.Promise); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); +} }); + +},{"115":115,"127":127,"52":52,"62":62,"70":70}],298:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = _dereq_(62); +var $pad = _dereq_(132); +var userAgent = _dereq_(148); + +// https://github.com/zloirock/core-js/issues/280 +var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); + +$export($export.P + $export.F * WEBKIT_BUG, 'String', { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); + } +}); + +},{"132":132,"148":148,"62":62}],299:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = _dereq_(62); +var $pad = _dereq_(132); +var userAgent = _dereq_(148); + +// https://github.com/zloirock/core-js/issues/280 +var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); + +$export($export.P + $export.F * WEBKIT_BUG, 'String', { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); + } +}); + +},{"132":132,"148":148,"62":62}],300:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +_dereq_(134)('trimLeft', function ($trim) { + return function trimLeft() { + return $trim(this, 1); + }; +}, 'trimStart'); + +},{"134":134}],301:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +_dereq_(134)('trimRight', function ($trim) { + return function trimRight() { + return $trim(this, 2); + }; +}, 'trimEnd'); + +},{"134":134}],302:[function(_dereq_,module,exports){ +_dereq_(150)('asyncIterator'); + +},{"150":150}],303:[function(_dereq_,module,exports){ +var $iterators = _dereq_(164); +var getKeys = _dereq_(107); +var redefine = _dereq_(118); +var global = _dereq_(70); +var hide = _dereq_(72); +var Iterators = _dereq_(88); +var wks = _dereq_(152); +var ITERATOR = wks('iterator'); +var TO_STRING_TAG = wks('toStringTag'); +var ArrayValues = Iterators.Array; + +var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false +}; + +for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); + if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); + } +} + +},{"107":107,"118":118,"152":152,"164":164,"70":70,"72":72,"88":88}],304:[function(_dereq_,module,exports){ +var $export = _dereq_(62); +var $task = _dereq_(136); +$export($export.G + $export.B, { + setImmediate: $task.set, + clearImmediate: $task.clear +}); + +},{"136":136,"62":62}],305:[function(_dereq_,module,exports){ +// ie9- setTimeout & setInterval additional parameters fix +var global = _dereq_(70); +var $export = _dereq_(62); +var userAgent = _dereq_(148); +var slice = [].slice; +var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check +var wrap = function (set) { + return function (fn, time /* , ...args */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice.call(arguments, 2) : false; + return set(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(this, args); + } : fn, time); + }; +}; +$export($export.G + $export.B + $export.F * MSIE, { + setTimeout: wrap(global.setTimeout), + setInterval: wrap(global.setInterval) +}); + +},{"148":148,"62":62,"70":70}],306:[function(_dereq_,module,exports){ +_dereq_(305); +_dereq_(304); +_dereq_(303); +module.exports = _dereq_(52); + +},{"303":303,"304":304,"305":305,"52":52}],307:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var runtime = (function (exports) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return PromiseImpl.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return PromiseImpl.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { + if (PromiseImpl === void 0) PromiseImpl = Promise; + + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList), + PromiseImpl + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + typeof module === "object" ? module.exports : {} +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); +} + +},{}]},{},[1]); diff --git a/yarn.lock b/yarn.lock index 4af2a46a96..01e6b51f13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -675,6 +675,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/polyfill@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" + integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + "@babel/preset-env@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.6.tgz#2a0773b08589ecba4995fc71b1965e4f531af40b" @@ -2855,6 +2863,11 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" +core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + core-js@^3.6.4: version "3.6.4" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" @@ -9812,6 +9825,11 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" From ca01ca50b1962bf0a66f0592857a23e53d0ca89a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 13 Mar 2020 09:43:30 +0100 Subject: [PATCH 314/449] Move polyfills to bundle --- gulpfile.js | 2 +- src/bundle.js | 7 + src/polyfill.js | 7203 ------------------------------------------- src/scripts/site.js | 5 +- yarn.lock | 16 +- 5 files changed, 27 insertions(+), 7206 deletions(-) delete mode 100644 src/polyfill.js diff --git a/gulpfile.js b/gulpfile.js index d5d9ddf8ba..04a8028f53 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -113,7 +113,7 @@ function copy() { function injectBundle() { return src('src/index.html', {base: './src/'}) .pipe(inject( - src(['src/polyfill.js', 'src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} + src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} )) .pipe(dest('dist/')) .pipe(browserSync.stream()); diff --git a/src/bundle.js b/src/bundle.js index 5d05e4b686..5e1a2ab3e3 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -97,6 +97,8 @@ _define("material-icons", function() { return material_icons; }); +// Noto Sans + var jellyfin_noto = require("jellyfin-noto"); _define("jellyfin-noto", function () { return jellyfin_noto; @@ -107,3 +109,8 @@ var page = require("page"); _define("page", function() { return page; }); + +var polyfill = require("@babel/polyfill/dist/polyfill"); +_define("polyfill", function () { + return polyfill; +}); diff --git a/src/polyfill.js b/src/polyfill.js deleted file mode 100644 index ed6d153fd1..0000000000 --- a/src/polyfill.js +++ /dev/null @@ -1,7203 +0,0 @@ -(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 2 ? arguments[2] : undefined; - var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); - var inc = 1; - if (from < to && to < from + count) { - inc = -1; - from += count - 1; - to += count - 1; - } - while (count-- > 0) { - if (from in O) O[to] = O[from]; - else delete O[to]; - to += inc; - from += inc; - } return O; -}; - -},{"137":137,"141":141,"142":142}],40:[function(_dereq_,module,exports){ -// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) -'use strict'; -var toObject = _dereq_(142); -var toAbsoluteIndex = _dereq_(137); -var toLength = _dereq_(141); -module.exports = function fill(value /* , start = 0, end = @length */) { - var O = toObject(this); - var length = toLength(O.length); - var aLen = arguments.length; - var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); - var end = aLen > 2 ? arguments[2] : undefined; - var endPos = end === undefined ? length : toAbsoluteIndex(end, length); - while (endPos > index) O[index++] = value; - return O; -}; - -},{"137":137,"141":141,"142":142}],41:[function(_dereq_,module,exports){ -// false -> Array#indexOf -// true -> Array#includes -var toIObject = _dereq_(140); -var toLength = _dereq_(141); -var toAbsoluteIndex = _dereq_(137); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -},{"137":137,"140":140,"141":141}],42:[function(_dereq_,module,exports){ -// 0 -> Array#forEach -// 1 -> Array#map -// 2 -> Array#filter -// 3 -> Array#some -// 4 -> Array#every -// 5 -> Array#find -// 6 -> Array#findIndex -var ctx = _dereq_(54); -var IObject = _dereq_(77); -var toObject = _dereq_(142); -var toLength = _dereq_(141); -var asc = _dereq_(45); -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - for (;length > index; index++) if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - if (TYPE) { - if (IS_MAP) result[index] = res; // map - else if (res) switch (TYPE) { - case 3: return true; // some - case 5: return val; // find - case 6: return index; // findIndex - case 2: result.push(val); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; -}; - -},{"141":141,"142":142,"45":45,"54":54,"77":77}],43:[function(_dereq_,module,exports){ -var aFunction = _dereq_(33); -var toObject = _dereq_(142); -var IObject = _dereq_(77); -var toLength = _dereq_(141); - -module.exports = function (that, callbackfn, aLen, memo, isRight) { - aFunction(callbackfn); - var O = toObject(that); - var self = IObject(O); - var length = toLength(O.length); - var index = isRight ? length - 1 : 0; - var i = isRight ? -1 : 1; - if (aLen < 2) for (;;) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - index += i; - if (isRight ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); - } - } - for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { - memo = callbackfn(memo, self[index], index, O); - } - return memo; -}; - -},{"141":141,"142":142,"33":33,"77":77}],44:[function(_dereq_,module,exports){ -var isObject = _dereq_(81); -var isArray = _dereq_(79); -var SPECIES = _dereq_(152)('species'); - -module.exports = function (original) { - var C; - if (isArray(original)) { - C = original.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? Array : C; -}; - -},{"152":152,"79":79,"81":81}],45:[function(_dereq_,module,exports){ -// 9.4.2.3 ArraySpeciesCreate(originalArray, length) -var speciesConstructor = _dereq_(44); - -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); -}; - -},{"44":44}],46:[function(_dereq_,module,exports){ -'use strict'; -var aFunction = _dereq_(33); -var isObject = _dereq_(81); -var invoke = _dereq_(76); -var arraySlice = [].slice; -var factories = {}; - -var construct = function (F, len, args) { - if (!(len in factories)) { - for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; - // eslint-disable-next-line no-new-func - factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); - } return factories[len](F, args); -}; - -module.exports = Function.bind || function bind(that /* , ...args */) { - var fn = aFunction(this); - var partArgs = arraySlice.call(arguments, 1); - var bound = function (/* args... */) { - var args = partArgs.concat(arraySlice.call(arguments)); - return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); - }; - if (isObject(fn.prototype)) bound.prototype = fn.prototype; - return bound; -}; - -},{"33":33,"76":76,"81":81}],47:[function(_dereq_,module,exports){ -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof = _dereq_(48); -var TAG = _dereq_(152)('toStringTag'); -// ES3 wrong here -var ARG = cof(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (e) { /* empty */ } -}; - -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof(O) - // ES3 arguments fallback - : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; - -},{"152":152,"48":48}],48:[function(_dereq_,module,exports){ -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - -},{}],49:[function(_dereq_,module,exports){ -'use strict'; -var dP = _dereq_(99).f; -var create = _dereq_(98); -var redefineAll = _dereq_(117); -var ctx = _dereq_(54); -var anInstance = _dereq_(37); -var forOf = _dereq_(68); -var $iterDefine = _dereq_(85); -var step = _dereq_(87); -var setSpecies = _dereq_(123); -var DESCRIPTORS = _dereq_(58); -var fastKey = _dereq_(94).fastKey; -var validate = _dereq_(149); -var SIZE = DESCRIPTORS ? '_s' : 'size'; - -var getEntry = function (that, key) { - // fast case - var index = fastKey(key); - var entry; - if (index !== 'F') return that._i[index]; - // frozen object case - for (entry = that._f; entry; entry = entry.n) { - if (entry.k == key) return entry; - } -}; - -module.exports = { - getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; // collection type - that._i = create(null); // index - that._f = undefined; // first entry - that._l = undefined; // last entry - that[SIZE] = 0; // size - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { - entry.r = true; - if (entry.p) entry.p = entry.p.n = undefined; - delete data[entry.i]; - } - that._f = that._l = undefined; - that[SIZE] = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function (key) { - var that = validate(this, NAME); - var entry = getEntry(that, key); - if (entry) { - var next = entry.n; - var prev = entry.p; - delete that._i[entry.i]; - entry.r = true; - if (prev) prev.n = next; - if (next) next.p = prev; - if (that._f == entry) that._f = next; - if (that._l == entry) that._l = prev; - that[SIZE]--; - } return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn /* , that = undefined */) { - validate(this, NAME); - var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - while (entry = entry ? entry.n : this._f) { - f(entry.v, entry.k, this); - // revert to the last existing entry - while (entry && entry.r) entry = entry.p; - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(validate(this, NAME), key); - } - }); - if (DESCRIPTORS) dP(C.prototype, 'size', { - get: function () { - return validate(this, NAME)[SIZE]; - } - }); - return C; - }, - def: function (that, key, value) { - var entry = getEntry(that, key); - var prev, index; - // change existing entry - if (entry) { - entry.v = value; - // create new entry - } else { - that._l = entry = { - i: index = fastKey(key, true), // <- index - k: key, // <- key - v: value, // <- value - p: prev = that._l, // <- previous entry - n: undefined, // <- next entry - r: false // <- removed - }; - if (!that._f) that._f = entry; - if (prev) prev.n = entry; - that[SIZE]++; - // add to index - if (index !== 'F') that._i[index] = entry; - } return that; - }, - getEntry: getEntry, - setStrong: function (C, NAME, IS_MAP) { - // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - $iterDefine(C, NAME, function (iterated, kind) { - this._t = validate(iterated, NAME); // target - this._k = kind; // kind - this._l = undefined; // previous - }, function () { - var that = this; - var kind = that._k; - var entry = that._l; - // revert to the last existing entry - while (entry && entry.r) entry = entry.p; - // get next entry - if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { - // or finish the iteration - that._t = undefined; - return step(1); - } - // return step by kind - if (kind == 'keys') return step(0, entry.k); - if (kind == 'values') return step(0, entry.v); - return step(0, [entry.k, entry.v]); - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); - - // add [@@species], 23.1.2.2, 23.2.2.2 - setSpecies(NAME); - } -}; - -},{"117":117,"123":123,"149":149,"37":37,"54":54,"58":58,"68":68,"85":85,"87":87,"94":94,"98":98,"99":99}],50:[function(_dereq_,module,exports){ -'use strict'; -var redefineAll = _dereq_(117); -var getWeak = _dereq_(94).getWeak; -var anObject = _dereq_(38); -var isObject = _dereq_(81); -var anInstance = _dereq_(37); -var forOf = _dereq_(68); -var createArrayMethod = _dereq_(42); -var $has = _dereq_(71); -var validate = _dereq_(149); -var arrayFind = createArrayMethod(5); -var arrayFindIndex = createArrayMethod(6); -var id = 0; - -// fallback for uncaught frozen keys -var uncaughtFrozenStore = function (that) { - return that._l || (that._l = new UncaughtFrozenStore()); -}; -var UncaughtFrozenStore = function () { - this.a = []; -}; -var findUncaughtFrozen = function (store, key) { - return arrayFind(store.a, function (it) { - return it[0] === key; - }); -}; -UncaughtFrozenStore.prototype = { - get: function (key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function (key) { - return !!findUncaughtFrozen(this, key); - }, - set: function (key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value; - else this.a.push([key, value]); - }, - 'delete': function (key) { - var index = arrayFindIndex(this.a, function (it) { - return it[0] === key; - }); - if (~index) this.a.splice(index, 1); - return !!~index; - } -}; - -module.exports = { - getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; // collection type - that._i = id++; // collection id - that._l = undefined; // leak store for uncaught frozen objects - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function (key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); - return data && $has(data, this._i) && delete data[this._i]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); - return data && $has(data, this._i); - } - }); - return C; - }, - def: function (that, key, value) { - var data = getWeak(anObject(key), true); - if (data === true) uncaughtFrozenStore(that).set(key, value); - else data[that._i] = value; - return that; - }, - ufstore: uncaughtFrozenStore -}; - -},{"117":117,"149":149,"37":37,"38":38,"42":42,"68":68,"71":71,"81":81,"94":94}],51:[function(_dereq_,module,exports){ -'use strict'; -var global = _dereq_(70); -var $export = _dereq_(62); -var redefine = _dereq_(118); -var redefineAll = _dereq_(117); -var meta = _dereq_(94); -var forOf = _dereq_(68); -var anInstance = _dereq_(37); -var isObject = _dereq_(81); -var fails = _dereq_(64); -var $iterDetect = _dereq_(86); -var setToStringTag = _dereq_(124); -var inheritIfRequired = _dereq_(75); - -module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { - var Base = global[NAME]; - var C = Base; - var ADDER = IS_MAP ? 'set' : 'add'; - var proto = C && C.prototype; - var O = {}; - var fixMethod = function (KEY) { - var fn = proto[KEY]; - redefine(proto, KEY, - KEY == 'delete' ? function (a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'has' ? function has(a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'get' ? function get(a) { - return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } - : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } - ); - }; - if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { - new C().entries().next(); - }))) { - // create collection constructor - C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); - redefineAll(C.prototype, methods); - meta.NEED = true; - } else { - var instance = new C(); - // early implementations not supports chaining - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); - // most early implementations doesn't supports iterables, most modern - not close it correctly - var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new - // for early implementations -0 and +0 not the same - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new C(); - var index = 5; - while (index--) $instance[ADDER](index, index); - return !$instance.has(-0); - }); - if (!ACCEPT_ITERABLES) { - C = wrapper(function (target, iterable) { - anInstance(target, C, NAME); - var that = inheritIfRequired(new Base(), target, C); - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - return that; - }); - C.prototype = proto; - proto.constructor = C; - } - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - // weak collections should not contains .clear method - if (IS_WEAK && proto.clear) delete proto.clear; - } - - setToStringTag(C, NAME); - - O[NAME] = C; - $export($export.G + $export.W + $export.F * (C != Base), O); - - if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); - - return C; -}; - -},{"117":117,"118":118,"124":124,"37":37,"62":62,"64":64,"68":68,"70":70,"75":75,"81":81,"86":86,"94":94}],52:[function(_dereq_,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"18":18}],53:[function(_dereq_,module,exports){ -'use strict'; -var $defineProperty = _dereq_(99); -var createDesc = _dereq_(116); - -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value)); - else object[index] = value; -}; - -},{"116":116,"99":99}],54:[function(_dereq_,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"19":19,"33":33}],55:[function(_dereq_,module,exports){ -'use strict'; -// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() -var fails = _dereq_(64); -var getTime = Date.prototype.getTime; -var $toISOString = Date.prototype.toISOString; - -var lz = function (num) { - return num > 9 ? num : '0' + num; -}; - -// PhantomJS / old WebKit has a broken implementations -module.exports = (fails(function () { - return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; -}) || !fails(function () { - $toISOString.call(new Date(NaN)); -})) ? function toISOString() { - if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); - var d = this; - var y = d.getUTCFullYear(); - var m = d.getUTCMilliseconds(); - var s = y < 0 ? '-' : y > 9999 ? '+' : ''; - return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + - '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + - 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + - ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; -} : $toISOString; - -},{"64":64}],56:[function(_dereq_,module,exports){ -'use strict'; -var anObject = _dereq_(38); -var toPrimitive = _dereq_(143); -var NUMBER = 'number'; - -module.exports = function (hint) { - if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint'); - return toPrimitive(anObject(this), hint != NUMBER); -}; - -},{"143":143,"38":38}],57:[function(_dereq_,module,exports){ -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - -},{}],58:[function(_dereq_,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"20":20,"64":64}],59:[function(_dereq_,module,exports){ -arguments[4][21][0].apply(exports,arguments) -},{"21":21,"70":70,"81":81}],60:[function(_dereq_,module,exports){ -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - -},{}],61:[function(_dereq_,module,exports){ -// all enumerable object keys, includes symbols -var getKeys = _dereq_(107); -var gOPS = _dereq_(104); -var pIE = _dereq_(108); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - -},{"104":104,"107":107,"108":108}],62:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var core = _dereq_(52); -var hide = _dereq_(72); -var redefine = _dereq_(118); -var ctx = _dereq_(54); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - // export native or passed - out = (own ? target : source)[key]; - // bind timers to global for call from export context - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // extend global - if (target) redefine(target, key, out, type & $export.U); - // export - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } -}; -global.core = core; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - -},{"118":118,"52":52,"54":54,"70":70,"72":72}],63:[function(_dereq_,module,exports){ -var MATCH = _dereq_(152)('match'); -module.exports = function (KEY) { - var re = /./; - try { - '/./'[KEY](re); - } catch (e) { - try { - re[MATCH] = false; - return !'/./'[KEY](re); - } catch (f) { /* empty */ } - } return true; -}; - -},{"152":152}],64:[function(_dereq_,module,exports){ -arguments[4][23][0].apply(exports,arguments) -},{"23":23}],65:[function(_dereq_,module,exports){ -'use strict'; -_dereq_(248); -var redefine = _dereq_(118); -var hide = _dereq_(72); -var fails = _dereq_(64); -var defined = _dereq_(57); -var wks = _dereq_(152); -var regexpExec = _dereq_(120); - -var SPECIES = wks('species'); - -var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - return ''.replace(re, '$') !== '7'; -}); - -var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { - // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - var re = /(?:)/; - var originalExec = re.exec; - re.exec = function () { return originalExec.apply(this, arguments); }; - var result = 'ab'.split(re); - return result.length === 2 && result[0] === 'a' && result[1] === 'b'; -})(); - -module.exports = function (KEY, length, exec) { - var SYMBOL = wks(KEY); - - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) != 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - re.exec = function () { execCalled = true; return null; }; - if (KEY === 'split') { - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - } - re[SYMBOL](''); - return !execCalled; - }) : undefined; - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || - (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var fns = exec( - defined, - SYMBOL, - ''[KEY], - function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; - } - return { done: true, value: nativeMethod.call(str, regexp, arg2) }; - } - return { done: false }; - } - ); - var strfn = fns[0]; - var rxfn = fns[1]; - - redefine(String.prototype, KEY, strfn); - hide(RegExp.prototype, SYMBOL, length == 2 - // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { return rxfn.call(string, this, arg); } - // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { return rxfn.call(string, this); } - ); - } -}; - -},{"118":118,"120":120,"152":152,"248":248,"57":57,"64":64,"72":72}],66:[function(_dereq_,module,exports){ -'use strict'; -// 21.2.5.3 get RegExp.prototype.flags -var anObject = _dereq_(38); -module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; -}; - -},{"38":38}],67:[function(_dereq_,module,exports){ -'use strict'; -// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray -var isArray = _dereq_(79); -var isObject = _dereq_(81); -var toLength = _dereq_(141); -var ctx = _dereq_(54); -var IS_CONCAT_SPREADABLE = _dereq_(152)('isConcatSpreadable'); - -function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) { - var targetIndex = start; - var sourceIndex = 0; - var mapFn = mapper ? ctx(mapper, thisArg, 3) : false; - var element, spreadable; - - while (sourceIndex < sourceLen) { - if (sourceIndex in source) { - element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; - - spreadable = false; - if (isObject(element)) { - spreadable = element[IS_CONCAT_SPREADABLE]; - spreadable = spreadable !== undefined ? !!spreadable : isArray(element); - } - - if (spreadable && depth > 0) { - targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; - } else { - if (targetIndex >= 0x1fffffffffffff) throw TypeError(); - target[targetIndex] = element; - } - - targetIndex++; - } - sourceIndex++; - } - return targetIndex; -} - -module.exports = flattenIntoArray; - -},{"141":141,"152":152,"54":54,"79":79,"81":81}],68:[function(_dereq_,module,exports){ -var ctx = _dereq_(54); -var call = _dereq_(83); -var isArrayIter = _dereq_(78); -var anObject = _dereq_(38); -var toLength = _dereq_(141); -var getIterFn = _dereq_(153); -var BREAK = {}; -var RETURN = {}; -var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); - var f = ctx(fn, that, entries ? 2 : 1); - var index = 0; - var length, step, iterator, result; - if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); - // fast case for arrays with default iterator - if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { - result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); - if (result === BREAK || result === RETURN) return result; - } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { - result = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) return result; - } -}; -exports.BREAK = BREAK; -exports.RETURN = RETURN; - -},{"141":141,"153":153,"38":38,"54":54,"78":78,"83":83}],69:[function(_dereq_,module,exports){ -module.exports = _dereq_(126)('native-function-to-string', Function.toString); - -},{"126":126}],70:[function(_dereq_,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"24":24}],71:[function(_dereq_,module,exports){ -arguments[4][25][0].apply(exports,arguments) -},{"25":25}],72:[function(_dereq_,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"116":116,"26":26,"58":58,"99":99}],73:[function(_dereq_,module,exports){ -var document = _dereq_(70).document; -module.exports = document && document.documentElement; - -},{"70":70}],74:[function(_dereq_,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"27":27,"58":58,"59":59,"64":64}],75:[function(_dereq_,module,exports){ -var isObject = _dereq_(81); -var setPrototypeOf = _dereq_(122).set; -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); - } return that; -}; - -},{"122":122,"81":81}],76:[function(_dereq_,module,exports){ -// fast apply, http://jsperf.lnkit.com/fast-apply/5 -module.exports = function (fn, args, that) { - var un = that === undefined; - switch (args.length) { - case 0: return un ? fn() - : fn.call(that); - case 1: return un ? fn(args[0]) - : fn.call(that, args[0]); - case 2: return un ? fn(args[0], args[1]) - : fn.call(that, args[0], args[1]); - case 3: return un ? fn(args[0], args[1], args[2]) - : fn.call(that, args[0], args[1], args[2]); - case 4: return un ? fn(args[0], args[1], args[2], args[3]) - : fn.call(that, args[0], args[1], args[2], args[3]); - } return fn.apply(that, args); -}; - -},{}],77:[function(_dereq_,module,exports){ -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = _dereq_(48); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - -},{"48":48}],78:[function(_dereq_,module,exports){ -// check on default Array iterator -var Iterators = _dereq_(88); -var ITERATOR = _dereq_(152)('iterator'); -var ArrayProto = Array.prototype; - -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; - -},{"152":152,"88":88}],79:[function(_dereq_,module,exports){ -// 7.2.2 IsArray(argument) -var cof = _dereq_(48); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - -},{"48":48}],80:[function(_dereq_,module,exports){ -// 20.1.2.3 Number.isInteger(number) -var isObject = _dereq_(81); -var floor = Math.floor; -module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; -}; - -},{"81":81}],81:[function(_dereq_,module,exports){ -arguments[4][28][0].apply(exports,arguments) -},{"28":28}],82:[function(_dereq_,module,exports){ -// 7.2.8 IsRegExp(argument) -var isObject = _dereq_(81); -var cof = _dereq_(48); -var MATCH = _dereq_(152)('match'); -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); -}; - -},{"152":152,"48":48,"81":81}],83:[function(_dereq_,module,exports){ -// call something on iterator step with safe closing on error -var anObject = _dereq_(38); -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } -}; - -},{"38":38}],84:[function(_dereq_,module,exports){ -'use strict'; -var create = _dereq_(98); -var descriptor = _dereq_(116); -var setToStringTag = _dereq_(124); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -_dereq_(72)(IteratorPrototype, _dereq_(152)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - -},{"116":116,"124":124,"152":152,"72":72,"98":98}],85:[function(_dereq_,module,exports){ -'use strict'; -var LIBRARY = _dereq_(89); -var $export = _dereq_(62); -var redefine = _dereq_(118); -var hide = _dereq_(72); -var Iterators = _dereq_(88); -var $iterCreate = _dereq_(84); -var setToStringTag = _dereq_(124); -var getPrototypeOf = _dereq_(105); -var ITERATOR = _dereq_(152)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - -},{"105":105,"118":118,"124":124,"152":152,"62":62,"72":72,"84":84,"88":88,"89":89}],86:[function(_dereq_,module,exports){ -var ITERATOR = _dereq_(152)('iterator'); -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - riter['return'] = function () { SAFE_CLOSING = true; }; - // eslint-disable-next-line no-throw-literal - Array.from(riter, function () { throw 2; }); -} catch (e) { /* empty */ } - -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - try { - var arr = [7]; - var iter = arr[ITERATOR](); - iter.next = function () { return { done: safe = true }; }; - arr[ITERATOR] = function () { return iter; }; - exec(arr); - } catch (e) { /* empty */ } - return safe; -}; - -},{"152":152}],87:[function(_dereq_,module,exports){ -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - -},{}],88:[function(_dereq_,module,exports){ -module.exports = {}; - -},{}],89:[function(_dereq_,module,exports){ -module.exports = false; - -},{}],90:[function(_dereq_,module,exports){ -// 20.2.2.14 Math.expm1(x) -var $expm1 = Math.expm1; -module.exports = (!$expm1 - // Old FF bug - || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 - // Tor Browser bug - || $expm1(-2e-17) != -2e-17 -) ? function expm1(x) { - return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; -} : $expm1; - -},{}],91:[function(_dereq_,module,exports){ -// 20.2.2.16 Math.fround(x) -var sign = _dereq_(93); -var pow = Math.pow; -var EPSILON = pow(2, -52); -var EPSILON32 = pow(2, -23); -var MAX32 = pow(2, 127) * (2 - EPSILON32); -var MIN32 = pow(2, -126); - -var roundTiesToEven = function (n) { - return n + 1 / EPSILON - 1 / EPSILON; -}; - -module.exports = Math.fround || function fround(x) { - var $abs = Math.abs(x); - var $sign = sign(x); - var a, result; - if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; - a = (1 + EPSILON32 / EPSILON) * $abs; - result = a - (a - $abs); - // eslint-disable-next-line no-self-compare - if (result > MAX32 || result != result) return $sign * Infinity; - return $sign * result; -}; - -},{"93":93}],92:[function(_dereq_,module,exports){ -// 20.2.2.20 Math.log1p(x) -module.exports = Math.log1p || function log1p(x) { - return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); -}; - -},{}],93:[function(_dereq_,module,exports){ -// 20.2.2.28 Math.sign(x) -module.exports = Math.sign || function sign(x) { - // eslint-disable-next-line no-self-compare - return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; -}; - -},{}],94:[function(_dereq_,module,exports){ -var META = _dereq_(147)('meta'); -var isObject = _dereq_(81); -var has = _dereq_(71); -var setDesc = _dereq_(99).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !_dereq_(64)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - -},{"147":147,"64":64,"71":71,"81":81,"99":99}],95:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var macrotask = _dereq_(136).set; -var Observer = global.MutationObserver || global.WebKitMutationObserver; -var process = global.process; -var Promise = global.Promise; -var isNode = _dereq_(48)(process) == 'process'; - -module.exports = function () { - var head, last, notify; - - var flush = function () { - var parent, fn; - if (isNode && (parent = process.domain)) parent.exit(); - while (head) { - fn = head.fn; - head = head.next; - try { - fn(); - } catch (e) { - if (head) notify(); - else last = undefined; - throw e; - } - } last = undefined; - if (parent) parent.enter(); - }; - - // Node.js - if (isNode) { - notify = function () { - process.nextTick(flush); - }; - // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 - } else if (Observer && !(global.navigator && global.navigator.standalone)) { - var toggle = true; - var node = document.createTextNode(''); - new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new - notify = function () { - node.data = toggle = !toggle; - }; - // environments with maybe non-completely correct, but existent Promise - } else if (Promise && Promise.resolve) { - // Promise.resolve without an argument throws an error in LG WebOS 2 - var promise = Promise.resolve(undefined); - notify = function () { - promise.then(flush); - }; - // for other environments - macrotask based on: - // - setImmediate - // - MessageChannel - // - window.postMessag - // - onreadystatechange - // - setTimeout - } else { - notify = function () { - // strange IE + webpack dev server bug - use .call(global) - macrotask.call(global, flush); - }; - } - - return function (fn) { - var task = { fn: fn, next: undefined }; - if (last) last.next = task; - if (!head) { - head = task; - notify(); - } last = task; - }; -}; - -},{"136":136,"48":48,"70":70}],96:[function(_dereq_,module,exports){ -'use strict'; -// 25.4.1.5 NewPromiseCapability(C) -var aFunction = _dereq_(33); - -function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); -} - -module.exports.f = function (C) { - return new PromiseCapability(C); -}; - -},{"33":33}],97:[function(_dereq_,module,exports){ -'use strict'; -// 19.1.2.1 Object.assign(target, source, ...) -var DESCRIPTORS = _dereq_(58); -var getKeys = _dereq_(107); -var gOPS = _dereq_(104); -var pIE = _dereq_(108); -var toObject = _dereq_(142); -var IObject = _dereq_(77); -var $assign = Object.assign; - -// should work with symbols and should have deterministic property order (V8 bug) -module.exports = !$assign || _dereq_(64)(function () { - var A = {}; - var B = {}; - // eslint-disable-next-line no-undef - var S = Symbol(); - var K = 'abcdefghijklmnopqrst'; - A[S] = 7; - K.split('').forEach(function (k) { B[k] = k; }); - return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; -}) ? function assign(target, source) { // eslint-disable-line no-unused-vars - var T = toObject(target); - var aLen = arguments.length; - var index = 1; - var getSymbols = gOPS.f; - var isEnum = pIE.f; - while (aLen > index) { - var S = IObject(arguments[index++]); - var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; - } - } return T; -} : $assign; - -},{"104":104,"107":107,"108":108,"142":142,"58":58,"64":64,"77":77}],98:[function(_dereq_,module,exports){ -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = _dereq_(38); -var dPs = _dereq_(100); -var enumBugKeys = _dereq_(60); -var IE_PROTO = _dereq_(125)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = _dereq_(59)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - _dereq_(73).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - -},{"100":100,"125":125,"38":38,"59":59,"60":60,"73":73}],99:[function(_dereq_,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"143":143,"29":29,"38":38,"58":58,"74":74}],100:[function(_dereq_,module,exports){ -var dP = _dereq_(99); -var anObject = _dereq_(38); -var getKeys = _dereq_(107); - -module.exports = _dereq_(58) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - -},{"107":107,"38":38,"58":58,"99":99}],101:[function(_dereq_,module,exports){ -var pIE = _dereq_(108); -var createDesc = _dereq_(116); -var toIObject = _dereq_(140); -var toPrimitive = _dereq_(143); -var has = _dereq_(71); -var IE8_DOM_DEFINE = _dereq_(74); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = _dereq_(58) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - -},{"108":108,"116":116,"140":140,"143":143,"58":58,"71":71,"74":74}],102:[function(_dereq_,module,exports){ -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = _dereq_(140); -var gOPN = _dereq_(103).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - -},{"103":103,"140":140}],103:[function(_dereq_,module,exports){ -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = _dereq_(106); -var hiddenKeys = _dereq_(60).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - -},{"106":106,"60":60}],104:[function(_dereq_,module,exports){ -exports.f = Object.getOwnPropertySymbols; - -},{}],105:[function(_dereq_,module,exports){ -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = _dereq_(71); -var toObject = _dereq_(142); -var IE_PROTO = _dereq_(125)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - -},{"125":125,"142":142,"71":71}],106:[function(_dereq_,module,exports){ -var has = _dereq_(71); -var toIObject = _dereq_(140); -var arrayIndexOf = _dereq_(41)(false); -var IE_PROTO = _dereq_(125)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - -},{"125":125,"140":140,"41":41,"71":71}],107:[function(_dereq_,module,exports){ -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = _dereq_(106); -var enumBugKeys = _dereq_(60); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - -},{"106":106,"60":60}],108:[function(_dereq_,module,exports){ -exports.f = {}.propertyIsEnumerable; - -},{}],109:[function(_dereq_,module,exports){ -// most Object methods by ES6 should accept primitives -var $export = _dereq_(62); -var core = _dereq_(52); -var fails = _dereq_(64); -module.exports = function (KEY, exec) { - var fn = (core.Object || {})[KEY] || Object[KEY]; - var exp = {}; - exp[KEY] = exec(fn); - $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); -}; - -},{"52":52,"62":62,"64":64}],110:[function(_dereq_,module,exports){ -var DESCRIPTORS = _dereq_(58); -var getKeys = _dereq_(107); -var toIObject = _dereq_(140); -var isEnum = _dereq_(108).f; -module.exports = function (isEntries) { - return function (it) { - var O = toIObject(it); - var keys = getKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS || isEnum.call(O, key)) { - result.push(isEntries ? [key, O[key]] : O[key]); - } - } - return result; - }; -}; - -},{"107":107,"108":108,"140":140,"58":58}],111:[function(_dereq_,module,exports){ -// all object keys, includes non-enumerable and symbols -var gOPN = _dereq_(103); -var gOPS = _dereq_(104); -var anObject = _dereq_(38); -var Reflect = _dereq_(70).Reflect; -module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = gOPN.f(anObject(it)); - var getSymbols = gOPS.f; - return getSymbols ? keys.concat(getSymbols(it)) : keys; -}; - -},{"103":103,"104":104,"38":38,"70":70}],112:[function(_dereq_,module,exports){ -var $parseFloat = _dereq_(70).parseFloat; -var $trim = _dereq_(134).trim; - -module.exports = 1 / $parseFloat(_dereq_(135) + '-0') !== -Infinity ? function parseFloat(str) { - var string = $trim(String(str), 3); - var result = $parseFloat(string); - return result === 0 && string.charAt(0) == '-' ? -0 : result; -} : $parseFloat; - -},{"134":134,"135":135,"70":70}],113:[function(_dereq_,module,exports){ -var $parseInt = _dereq_(70).parseInt; -var $trim = _dereq_(134).trim; -var ws = _dereq_(135); -var hex = /^[-+]?0[xX]/; - -module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) { - var string = $trim(String(str), 3); - return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); -} : $parseInt; - -},{"134":134,"135":135,"70":70}],114:[function(_dereq_,module,exports){ -module.exports = function (exec) { - try { - return { e: false, v: exec() }; - } catch (e) { - return { e: true, v: e }; - } -}; - -},{}],115:[function(_dereq_,module,exports){ -var anObject = _dereq_(38); -var isObject = _dereq_(81); -var newPromiseCapability = _dereq_(96); - -module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; -}; - -},{"38":38,"81":81,"96":96}],116:[function(_dereq_,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"30":30}],117:[function(_dereq_,module,exports){ -var redefine = _dereq_(118); -module.exports = function (target, src, safe) { - for (var key in src) redefine(target, key, src[key], safe); - return target; -}; - -},{"118":118}],118:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var hide = _dereq_(72); -var has = _dereq_(71); -var SRC = _dereq_(147)('src'); -var $toString = _dereq_(69); -var TO_STRING = 'toString'; -var TPL = ('' + $toString).split(TO_STRING); - -_dereq_(52).inspectSource = function (it) { - return $toString.call(it); -}; - -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); - } -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); - -},{"147":147,"52":52,"69":69,"70":70,"71":71,"72":72}],119:[function(_dereq_,module,exports){ -'use strict'; - -var classof = _dereq_(47); -var builtinExec = RegExp.prototype.exec; - - // `RegExpExec` abstract operation -// https://tc39.github.io/ecma262/#sec-regexpexec -module.exports = function (R, S) { - var exec = R.exec; - if (typeof exec === 'function') { - var result = exec.call(R, S); - if (typeof result !== 'object') { - throw new TypeError('RegExp exec method returned something other than an Object or null'); - } - return result; - } - if (classof(R) !== 'RegExp') { - throw new TypeError('RegExp#exec called on incompatible receiver'); - } - return builtinExec.call(R, S); -}; - -},{"47":47}],120:[function(_dereq_,module,exports){ -'use strict'; - -var regexpFlags = _dereq_(66); - -var nativeExec = RegExp.prototype.exec; -// This always refers to the native implementation, because the -// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, -// which loads this file before patching the method. -var nativeReplace = String.prototype.replace; - -var patchedExec = nativeExec; - -var LAST_INDEX = 'lastIndex'; - -var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/, - re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; -})(); - -// nonparticipating capturing group, copied from es5-shim's String#split patch. -var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - -var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; - -if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; - - match = nativeExec.call(re, str); - - if (UPDATES_LAST_INDEX_WRONG && match) { - re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - // eslint-disable-next-line no-loop-func - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - return match; - }; -} - -module.exports = patchedExec; - -},{"66":66}],121:[function(_dereq_,module,exports){ -// 7.2.9 SameValue(x, y) -module.exports = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare - return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; -}; - -},{}],122:[function(_dereq_,module,exports){ -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -var isObject = _dereq_(81); -var anObject = _dereq_(38); -var check = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line - function (test, buggy, set) { - try { - set = _dereq_(54)(Function.call, _dereq_(101).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { buggy = true; } - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto; - else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check -}; - -},{"101":101,"38":38,"54":54,"81":81}],123:[function(_dereq_,module,exports){ -'use strict'; -var global = _dereq_(70); -var dP = _dereq_(99); -var DESCRIPTORS = _dereq_(58); -var SPECIES = _dereq_(152)('species'); - -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function () { return this; } - }); -}; - -},{"152":152,"58":58,"70":70,"99":99}],124:[function(_dereq_,module,exports){ -var def = _dereq_(99).f; -var has = _dereq_(71); -var TAG = _dereq_(152)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - -},{"152":152,"71":71,"99":99}],125:[function(_dereq_,module,exports){ -var shared = _dereq_(126)('keys'); -var uid = _dereq_(147); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - -},{"126":126,"147":147}],126:[function(_dereq_,module,exports){ -var core = _dereq_(52); -var global = _dereq_(70); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: _dereq_(89) ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); - -},{"52":52,"70":70,"89":89}],127:[function(_dereq_,module,exports){ -// 7.3.20 SpeciesConstructor(O, defaultConstructor) -var anObject = _dereq_(38); -var aFunction = _dereq_(33); -var SPECIES = _dereq_(152)('species'); -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); -}; - -},{"152":152,"33":33,"38":38}],128:[function(_dereq_,module,exports){ -'use strict'; -var fails = _dereq_(64); - -module.exports = function (method, arg) { - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call - arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); - }); -}; - -},{"64":64}],129:[function(_dereq_,module,exports){ -var toInteger = _dereq_(139); -var defined = _dereq_(57); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - -},{"139":139,"57":57}],130:[function(_dereq_,module,exports){ -// helper for String#{startsWith, endsWith, includes} -var isRegExp = _dereq_(82); -var defined = _dereq_(57); - -module.exports = function (that, searchString, NAME) { - if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); - return String(defined(that)); -}; - -},{"57":57,"82":82}],131:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var fails = _dereq_(64); -var defined = _dereq_(57); -var quot = /"/g; -// B.2.3.2.1 CreateHTML(string, tag, attribute, value) -var createHTML = function (string, tag, attribute, value) { - var S = String(defined(string)); - var p1 = '<' + tag; - if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; - return p1 + '>' + S + ''; -}; -module.exports = function (NAME, exec) { - var O = {}; - O[NAME] = exec(createHTML); - $export($export.P + $export.F * fails(function () { - var test = ''[NAME]('"'); - return test !== test.toLowerCase() || test.split('"').length > 3; - }), 'String', O); -}; - -},{"57":57,"62":62,"64":64}],132:[function(_dereq_,module,exports){ -// https://github.com/tc39/proposal-string-pad-start-end -var toLength = _dereq_(141); -var repeat = _dereq_(133); -var defined = _dereq_(57); - -module.exports = function (that, maxLength, fillString, left) { - var S = String(defined(that)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - if (intMaxLength <= stringLength || fillStr == '') return S; - var fillLen = intMaxLength - stringLength; - var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return left ? stringFiller + S : S + stringFiller; -}; - -},{"133":133,"141":141,"57":57}],133:[function(_dereq_,module,exports){ -'use strict'; -var toInteger = _dereq_(139); -var defined = _dereq_(57); - -module.exports = function repeat(count) { - var str = String(defined(this)); - var res = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); - for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; - return res; -}; - -},{"139":139,"57":57}],134:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var defined = _dereq_(57); -var fails = _dereq_(64); -var spaces = _dereq_(135); -var space = '[' + spaces + ']'; -var non = '\u200b\u0085'; -var ltrim = RegExp('^' + space + space + '*'); -var rtrim = RegExp(space + space + '*$'); - -var exporter = function (KEY, exec, ALIAS) { - var exp = {}; - var FORCE = fails(function () { - return !!spaces[KEY]() || non[KEY]() != non; - }); - var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; - if (ALIAS) exp[ALIAS] = fn; - $export($export.P + $export.F * FORCE, 'String', exp); -}; - -// 1 -> String#trimLeft -// 2 -> String#trimRight -// 3 -> String#trim -var trim = exporter.trim = function (string, TYPE) { - string = String(defined(string)); - if (TYPE & 1) string = string.replace(ltrim, ''); - if (TYPE & 2) string = string.replace(rtrim, ''); - return string; -}; - -module.exports = exporter; - -},{"135":135,"57":57,"62":62,"64":64}],135:[function(_dereq_,module,exports){ -module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + - '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; - -},{}],136:[function(_dereq_,module,exports){ -var ctx = _dereq_(54); -var invoke = _dereq_(76); -var html = _dereq_(73); -var cel = _dereq_(59); -var global = _dereq_(70); -var process = global.process; -var setTask = global.setImmediate; -var clearTask = global.clearImmediate; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; -var run = function () { - var id = +this; - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; -var listener = function (event) { - run.call(event.data); -}; -// Node.js 0.9+ & IE10+ has setImmediate, otherwise: -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var args = []; - var i = 1; - while (arguments.length > i) args.push(arguments[i++]); - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - invoke(typeof fn == 'function' ? fn : Function(fn), args); - }; - defer(counter); - return counter; - }; - clearTask = function clearImmediate(id) { - delete queue[id]; - }; - // Node.js 0.8- - if (_dereq_(48)(process) == 'process') { - defer = function (id) { - process.nextTick(ctx(run, id, 1)); - }; - // Sphere (JS game engine) Dispatch API - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(ctx(run, id, 1)); - }; - // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx(port.postMessage, port, 1); - // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { - defer = function (id) { - global.postMessage(id + '', '*'); - }; - global.addEventListener('message', listener, false); - // IE8- - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function (id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run.call(id); - }; - }; - // Rest old browsers - } else { - defer = function (id) { - setTimeout(ctx(run, id, 1), 0); - }; - } -} -module.exports = { - set: setTask, - clear: clearTask -}; - -},{"48":48,"54":54,"59":59,"70":70,"73":73,"76":76}],137:[function(_dereq_,module,exports){ -var toInteger = _dereq_(139); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - -},{"139":139}],138:[function(_dereq_,module,exports){ -// https://tc39.github.io/ecma262/#sec-toindex -var toInteger = _dereq_(139); -var toLength = _dereq_(141); -module.exports = function (it) { - if (it === undefined) return 0; - var number = toInteger(it); - var length = toLength(number); - if (number !== length) throw RangeError('Wrong length!'); - return length; -}; - -},{"139":139,"141":141}],139:[function(_dereq_,module,exports){ -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - -},{}],140:[function(_dereq_,module,exports){ -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = _dereq_(77); -var defined = _dereq_(57); -module.exports = function (it) { - return IObject(defined(it)); -}; - -},{"57":57,"77":77}],141:[function(_dereq_,module,exports){ -// 7.1.15 ToLength -var toInteger = _dereq_(139); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - -},{"139":139}],142:[function(_dereq_,module,exports){ -// 7.1.13 ToObject(argument) -var defined = _dereq_(57); -module.exports = function (it) { - return Object(defined(it)); -}; - -},{"57":57}],143:[function(_dereq_,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"31":31,"81":81}],144:[function(_dereq_,module,exports){ -'use strict'; -if (_dereq_(58)) { - var LIBRARY = _dereq_(89); - var global = _dereq_(70); - var fails = _dereq_(64); - var $export = _dereq_(62); - var $typed = _dereq_(146); - var $buffer = _dereq_(145); - var ctx = _dereq_(54); - var anInstance = _dereq_(37); - var propertyDesc = _dereq_(116); - var hide = _dereq_(72); - var redefineAll = _dereq_(117); - var toInteger = _dereq_(139); - var toLength = _dereq_(141); - var toIndex = _dereq_(138); - var toAbsoluteIndex = _dereq_(137); - var toPrimitive = _dereq_(143); - var has = _dereq_(71); - var classof = _dereq_(47); - var isObject = _dereq_(81); - var toObject = _dereq_(142); - var isArrayIter = _dereq_(78); - var create = _dereq_(98); - var getPrototypeOf = _dereq_(105); - var gOPN = _dereq_(103).f; - var getIterFn = _dereq_(153); - var uid = _dereq_(147); - var wks = _dereq_(152); - var createArrayMethod = _dereq_(42); - var createArrayIncludes = _dereq_(41); - var speciesConstructor = _dereq_(127); - var ArrayIterators = _dereq_(164); - var Iterators = _dereq_(88); - var $iterDetect = _dereq_(86); - var setSpecies = _dereq_(123); - var arrayFill = _dereq_(40); - var arrayCopyWithin = _dereq_(39); - var $DP = _dereq_(99); - var $GOPD = _dereq_(101); - var dP = $DP.f; - var gOPD = $GOPD.f; - var RangeError = global.RangeError; - var TypeError = global.TypeError; - var Uint8Array = global.Uint8Array; - var ARRAY_BUFFER = 'ArrayBuffer'; - var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER; - var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; - var PROTOTYPE = 'prototype'; - var ArrayProto = Array[PROTOTYPE]; - var $ArrayBuffer = $buffer.ArrayBuffer; - var $DataView = $buffer.DataView; - var arrayForEach = createArrayMethod(0); - var arrayFilter = createArrayMethod(2); - var arraySome = createArrayMethod(3); - var arrayEvery = createArrayMethod(4); - var arrayFind = createArrayMethod(5); - var arrayFindIndex = createArrayMethod(6); - var arrayIncludes = createArrayIncludes(true); - var arrayIndexOf = createArrayIncludes(false); - var arrayValues = ArrayIterators.values; - var arrayKeys = ArrayIterators.keys; - var arrayEntries = ArrayIterators.entries; - var arrayLastIndexOf = ArrayProto.lastIndexOf; - var arrayReduce = ArrayProto.reduce; - var arrayReduceRight = ArrayProto.reduceRight; - var arrayJoin = ArrayProto.join; - var arraySort = ArrayProto.sort; - var arraySlice = ArrayProto.slice; - var arrayToString = ArrayProto.toString; - var arrayToLocaleString = ArrayProto.toLocaleString; - var ITERATOR = wks('iterator'); - var TAG = wks('toStringTag'); - var TYPED_CONSTRUCTOR = uid('typed_constructor'); - var DEF_CONSTRUCTOR = uid('def_constructor'); - var ALL_CONSTRUCTORS = $typed.CONSTR; - var TYPED_ARRAY = $typed.TYPED; - var VIEW = $typed.VIEW; - var WRONG_LENGTH = 'Wrong length!'; - - var $map = createArrayMethod(1, function (O, length) { - return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); - }); - - var LITTLE_ENDIAN = fails(function () { - // eslint-disable-next-line no-undef - return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; - }); - - var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () { - new Uint8Array(1).set({}); - }); - - var toOffset = function (it, BYTES) { - var offset = toInteger(it); - if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!'); - return offset; - }; - - var validate = function (it) { - if (isObject(it) && TYPED_ARRAY in it) return it; - throw TypeError(it + ' is not a typed array!'); - }; - - var allocate = function (C, length) { - if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) { - throw TypeError('It is not a typed array constructor!'); - } return new C(length); - }; - - var speciesFromList = function (O, list) { - return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); - }; - - var fromList = function (C, list) { - var index = 0; - var length = list.length; - var result = allocate(C, length); - while (length > index) result[index] = list[index++]; - return result; - }; - - var addGetter = function (it, key, internal) { - dP(it, key, { get: function () { return this._d[internal]; } }); - }; - - var $from = function from(source /* , mapfn, thisArg */) { - var O = toObject(source); - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var iterFn = getIterFn(O); - var i, length, values, result, step, iterator; - if (iterFn != undefined && !isArrayIter(iterFn)) { - for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) { - values.push(step.value); - } O = values; - } - if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2); - for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) { - result[i] = mapping ? mapfn(O[i], i) : O[i]; - } - return result; - }; - - var $of = function of(/* ...items */) { - var index = 0; - var length = arguments.length; - var result = allocate(this, length); - while (length > index) result[index] = arguments[index++]; - return result; - }; - - // iOS Safari 6.x fails here - var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); }); - - var $toLocaleString = function toLocaleString() { - return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); - }; - - var proto = { - copyWithin: function copyWithin(target, start /* , end */) { - return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); - }, - every: function every(callbackfn /* , thisArg */) { - return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); - }, - fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars - return arrayFill.apply(validate(this), arguments); - }, - filter: function filter(callbackfn /* , thisArg */) { - return speciesFromList(this, arrayFilter(validate(this), callbackfn, - arguments.length > 1 ? arguments[1] : undefined)); - }, - find: function find(predicate /* , thisArg */) { - return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); - }, - findIndex: function findIndex(predicate /* , thisArg */) { - return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); - }, - forEach: function forEach(callbackfn /* , thisArg */) { - arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); - }, - indexOf: function indexOf(searchElement /* , fromIndex */) { - return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); - }, - includes: function includes(searchElement /* , fromIndex */) { - return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); - }, - join: function join(separator) { // eslint-disable-line no-unused-vars - return arrayJoin.apply(validate(this), arguments); - }, - lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars - return arrayLastIndexOf.apply(validate(this), arguments); - }, - map: function map(mapfn /* , thisArg */) { - return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); - }, - reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars - return arrayReduce.apply(validate(this), arguments); - }, - reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars - return arrayReduceRight.apply(validate(this), arguments); - }, - reverse: function reverse() { - var that = this; - var length = validate(that).length; - var middle = Math.floor(length / 2); - var index = 0; - var value; - while (index < middle) { - value = that[index]; - that[index++] = that[--length]; - that[length] = value; - } return that; - }, - some: function some(callbackfn /* , thisArg */) { - return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); - }, - sort: function sort(comparefn) { - return arraySort.call(validate(this), comparefn); - }, - subarray: function subarray(begin, end) { - var O = validate(this); - var length = O.length; - var $begin = toAbsoluteIndex(begin, length); - return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( - O.buffer, - O.byteOffset + $begin * O.BYTES_PER_ELEMENT, - toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin) - ); - } - }; - - var $slice = function slice(start, end) { - return speciesFromList(this, arraySlice.call(validate(this), start, end)); - }; - - var $set = function set(arrayLike /* , offset */) { - validate(this); - var offset = toOffset(arguments[1], 1); - var length = this.length; - var src = toObject(arrayLike); - var len = toLength(src.length); - var index = 0; - if (len + offset > length) throw RangeError(WRONG_LENGTH); - while (index < len) this[offset + index] = src[index++]; - }; - - var $iterators = { - entries: function entries() { - return arrayEntries.call(validate(this)); - }, - keys: function keys() { - return arrayKeys.call(validate(this)); - }, - values: function values() { - return arrayValues.call(validate(this)); - } - }; - - var isTAIndex = function (target, key) { - return isObject(target) - && target[TYPED_ARRAY] - && typeof key != 'symbol' - && key in target - && String(+key) == String(key); - }; - var $getDesc = function getOwnPropertyDescriptor(target, key) { - return isTAIndex(target, key = toPrimitive(key, true)) - ? propertyDesc(2, target[key]) - : gOPD(target, key); - }; - var $setDesc = function defineProperty(target, key, desc) { - if (isTAIndex(target, key = toPrimitive(key, true)) - && isObject(desc) - && has(desc, 'value') - && !has(desc, 'get') - && !has(desc, 'set') - // TODO: add validation descriptor w/o calling accessors - && !desc.configurable - && (!has(desc, 'writable') || desc.writable) - && (!has(desc, 'enumerable') || desc.enumerable) - ) { - target[key] = desc.value; - return target; - } return dP(target, key, desc); - }; - - if (!ALL_CONSTRUCTORS) { - $GOPD.f = $getDesc; - $DP.f = $setDesc; - } - - $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { - getOwnPropertyDescriptor: $getDesc, - defineProperty: $setDesc - }); - - if (fails(function () { arrayToString.call({}); })) { - arrayToString = arrayToLocaleString = function toString() { - return arrayJoin.call(this); - }; - } - - var $TypedArrayPrototype$ = redefineAll({}, proto); - redefineAll($TypedArrayPrototype$, $iterators); - hide($TypedArrayPrototype$, ITERATOR, $iterators.values); - redefineAll($TypedArrayPrototype$, { - slice: $slice, - set: $set, - constructor: function () { /* noop */ }, - toString: arrayToString, - toLocaleString: $toLocaleString - }); - addGetter($TypedArrayPrototype$, 'buffer', 'b'); - addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); - addGetter($TypedArrayPrototype$, 'byteLength', 'l'); - addGetter($TypedArrayPrototype$, 'length', 'e'); - dP($TypedArrayPrototype$, TAG, { - get: function () { return this[TYPED_ARRAY]; } - }); - - // eslint-disable-next-line max-statements - module.exports = function (KEY, BYTES, wrapper, CLAMPED) { - CLAMPED = !!CLAMPED; - var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'; - var GETTER = 'get' + KEY; - var SETTER = 'set' + KEY; - var TypedArray = global[NAME]; - var Base = TypedArray || {}; - var TAC = TypedArray && getPrototypeOf(TypedArray); - var FORCED = !TypedArray || !$typed.ABV; - var O = {}; - var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; - var getter = function (that, index) { - var data = that._d; - return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); - }; - var setter = function (that, index, value) { - var data = that._d; - if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; - data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); - }; - var addElement = function (that, index) { - dP(that, index, { - get: function () { - return getter(this, index); - }, - set: function (value) { - return setter(this, index, value); - }, - enumerable: true - }); - }; - if (FORCED) { - TypedArray = wrapper(function (that, data, $offset, $length) { - anInstance(that, TypedArray, NAME, '_d'); - var index = 0; - var offset = 0; - var buffer, byteLength, length, klass; - if (!isObject(data)) { - length = toIndex(data); - byteLength = length * BYTES; - buffer = new $ArrayBuffer(byteLength); - } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { - buffer = data; - offset = toOffset($offset, BYTES); - var $len = data.byteLength; - if ($length === undefined) { - if ($len % BYTES) throw RangeError(WRONG_LENGTH); - byteLength = $len - offset; - if (byteLength < 0) throw RangeError(WRONG_LENGTH); - } else { - byteLength = toLength($length) * BYTES; - if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH); - } - length = byteLength / BYTES; - } else if (TYPED_ARRAY in data) { - return fromList(TypedArray, data); - } else { - return $from.call(TypedArray, data); - } - hide(that, '_d', { - b: buffer, - o: offset, - l: byteLength, - e: length, - v: new $DataView(buffer) - }); - while (index < length) addElement(that, index++); - }); - TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); - hide(TypedArrayPrototype, 'constructor', TypedArray); - } else if (!fails(function () { - TypedArray(1); - }) || !fails(function () { - new TypedArray(-1); // eslint-disable-line no-new - }) || !$iterDetect(function (iter) { - new TypedArray(); // eslint-disable-line no-new - new TypedArray(null); // eslint-disable-line no-new - new TypedArray(1.5); // eslint-disable-line no-new - new TypedArray(iter); // eslint-disable-line no-new - }, true)) { - TypedArray = wrapper(function (that, data, $offset, $length) { - anInstance(that, TypedArray, NAME); - var klass; - // `ws` module bug, temporarily remove validation length for Uint8Array - // https://github.com/websockets/ws/pull/645 - if (!isObject(data)) return new Base(toIndex(data)); - if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { - return $length !== undefined - ? new Base(data, toOffset($offset, BYTES), $length) - : $offset !== undefined - ? new Base(data, toOffset($offset, BYTES)) - : new Base(data); - } - if (TYPED_ARRAY in data) return fromList(TypedArray, data); - return $from.call(TypedArray, data); - }); - arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) { - if (!(key in TypedArray)) hide(TypedArray, key, Base[key]); - }); - TypedArray[PROTOTYPE] = TypedArrayPrototype; - if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray; - } - var $nativeIterator = TypedArrayPrototype[ITERATOR]; - var CORRECT_ITER_NAME = !!$nativeIterator - && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined); - var $iterator = $iterators.values; - hide(TypedArray, TYPED_CONSTRUCTOR, true); - hide(TypedArrayPrototype, TYPED_ARRAY, NAME); - hide(TypedArrayPrototype, VIEW, true); - hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); - - if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) { - dP(TypedArrayPrototype, TAG, { - get: function () { return NAME; } - }); - } - - O[NAME] = TypedArray; - - $export($export.G + $export.W + $export.F * (TypedArray != Base), O); - - $export($export.S, NAME, { - BYTES_PER_ELEMENT: BYTES - }); - - $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, { - from: $from, - of: $of - }); - - if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); - - $export($export.P, NAME, proto); - - setSpecies(NAME); - - $export($export.P + $export.F * FORCED_SET, NAME, { set: $set }); - - $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); - - if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString; - - $export($export.P + $export.F * fails(function () { - new TypedArray(1).slice(); - }), NAME, { slice: $slice }); - - $export($export.P + $export.F * (fails(function () { - return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString(); - }) || !fails(function () { - TypedArrayPrototype.toLocaleString.call([1, 2]); - })), NAME, { toLocaleString: $toLocaleString }); - - Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; - if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator); - }; -} else module.exports = function () { /* empty */ }; - -},{"101":101,"103":103,"105":105,"116":116,"117":117,"123":123,"127":127,"137":137,"138":138,"139":139,"141":141,"142":142,"143":143,"145":145,"146":146,"147":147,"152":152,"153":153,"164":164,"37":37,"39":39,"40":40,"41":41,"42":42,"47":47,"54":54,"58":58,"62":62,"64":64,"70":70,"71":71,"72":72,"78":78,"81":81,"86":86,"88":88,"89":89,"98":98,"99":99}],145:[function(_dereq_,module,exports){ -'use strict'; -var global = _dereq_(70); -var DESCRIPTORS = _dereq_(58); -var LIBRARY = _dereq_(89); -var $typed = _dereq_(146); -var hide = _dereq_(72); -var redefineAll = _dereq_(117); -var fails = _dereq_(64); -var anInstance = _dereq_(37); -var toInteger = _dereq_(139); -var toLength = _dereq_(141); -var toIndex = _dereq_(138); -var gOPN = _dereq_(103).f; -var dP = _dereq_(99).f; -var arrayFill = _dereq_(40); -var setToStringTag = _dereq_(124); -var ARRAY_BUFFER = 'ArrayBuffer'; -var DATA_VIEW = 'DataView'; -var PROTOTYPE = 'prototype'; -var WRONG_LENGTH = 'Wrong length!'; -var WRONG_INDEX = 'Wrong index!'; -var $ArrayBuffer = global[ARRAY_BUFFER]; -var $DataView = global[DATA_VIEW]; -var Math = global.Math; -var RangeError = global.RangeError; -// eslint-disable-next-line no-shadow-restricted-names -var Infinity = global.Infinity; -var BaseBuffer = $ArrayBuffer; -var abs = Math.abs; -var pow = Math.pow; -var floor = Math.floor; -var log = Math.log; -var LN2 = Math.LN2; -var BUFFER = 'buffer'; -var BYTE_LENGTH = 'byteLength'; -var BYTE_OFFSET = 'byteOffset'; -var $BUFFER = DESCRIPTORS ? '_b' : BUFFER; -var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH; -var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; - -// IEEE754 conversions based on https://github.com/feross/ieee754 -function packIEEE754(value, mLen, nBytes) { - var buffer = new Array(nBytes); - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0; - var i = 0; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - var e, m, c; - value = abs(value); - // eslint-disable-next-line no-self-compare - if (value != value || value === Infinity) { - // eslint-disable-next-line no-self-compare - m = value != value ? 1 : 0; - e = eMax; - } else { - e = floor(log(value) / LN2); - if (value * (c = pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * pow(2, mLen); - e = e + eBias; - } else { - m = value * pow(2, eBias - 1) * pow(2, mLen); - e = 0; - } - } - for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); - e = e << mLen | m; - eLen += mLen; - for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); - buffer[--i] |= s * 128; - return buffer; -} -function unpackIEEE754(buffer, mLen, nBytes) { - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = eLen - 7; - var i = nBytes - 1; - var s = buffer[i--]; - var e = s & 127; - var m; - s >>= 7; - for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); - m = e & (1 << -nBits) - 1; - e >>= -nBits; - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : s ? -Infinity : Infinity; - } else { - m = m + pow(2, mLen); - e = e - eBias; - } return (s ? -1 : 1) * m * pow(2, e - mLen); -} - -function unpackI32(bytes) { - return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; -} -function packI8(it) { - return [it & 0xff]; -} -function packI16(it) { - return [it & 0xff, it >> 8 & 0xff]; -} -function packI32(it) { - return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; -} -function packF64(it) { - return packIEEE754(it, 52, 8); -} -function packF32(it) { - return packIEEE754(it, 23, 4); -} - -function addGetter(C, key, internal) { - dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } }); -} - -function get(view, bytes, index, isLittleEndian) { - var numIndex = +index; - var intIndex = toIndex(numIndex); - if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); - var store = view[$BUFFER]._b; - var start = intIndex + view[$OFFSET]; - var pack = store.slice(start, start + bytes); - return isLittleEndian ? pack : pack.reverse(); -} -function set(view, bytes, index, conversion, value, isLittleEndian) { - var numIndex = +index; - var intIndex = toIndex(numIndex); - if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); - var store = view[$BUFFER]._b; - var start = intIndex + view[$OFFSET]; - var pack = conversion(+value); - for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; -} - -if (!$typed.ABV) { - $ArrayBuffer = function ArrayBuffer(length) { - anInstance(this, $ArrayBuffer, ARRAY_BUFFER); - var byteLength = toIndex(length); - this._b = arrayFill.call(new Array(byteLength), 0); - this[$LENGTH] = byteLength; - }; - - $DataView = function DataView(buffer, byteOffset, byteLength) { - anInstance(this, $DataView, DATA_VIEW); - anInstance(buffer, $ArrayBuffer, DATA_VIEW); - var bufferLength = buffer[$LENGTH]; - var offset = toInteger(byteOffset); - if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!'); - byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); - if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); - this[$BUFFER] = buffer; - this[$OFFSET] = offset; - this[$LENGTH] = byteLength; - }; - - if (DESCRIPTORS) { - addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); - addGetter($DataView, BUFFER, '_b'); - addGetter($DataView, BYTE_LENGTH, '_l'); - addGetter($DataView, BYTE_OFFSET, '_o'); - } - - redefineAll($DataView[PROTOTYPE], { - getInt8: function getInt8(byteOffset) { - return get(this, 1, byteOffset)[0] << 24 >> 24; - }, - getUint8: function getUint8(byteOffset) { - return get(this, 1, byteOffset)[0]; - }, - getInt16: function getInt16(byteOffset /* , littleEndian */) { - var bytes = get(this, 2, byteOffset, arguments[1]); - return (bytes[1] << 8 | bytes[0]) << 16 >> 16; - }, - getUint16: function getUint16(byteOffset /* , littleEndian */) { - var bytes = get(this, 2, byteOffset, arguments[1]); - return bytes[1] << 8 | bytes[0]; - }, - getInt32: function getInt32(byteOffset /* , littleEndian */) { - return unpackI32(get(this, 4, byteOffset, arguments[1])); - }, - getUint32: function getUint32(byteOffset /* , littleEndian */) { - return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; - }, - getFloat32: function getFloat32(byteOffset /* , littleEndian */) { - return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); - }, - getFloat64: function getFloat64(byteOffset /* , littleEndian */) { - return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); - }, - setInt8: function setInt8(byteOffset, value) { - set(this, 1, byteOffset, packI8, value); - }, - setUint8: function setUint8(byteOffset, value) { - set(this, 1, byteOffset, packI8, value); - }, - setInt16: function setInt16(byteOffset, value /* , littleEndian */) { - set(this, 2, byteOffset, packI16, value, arguments[2]); - }, - setUint16: function setUint16(byteOffset, value /* , littleEndian */) { - set(this, 2, byteOffset, packI16, value, arguments[2]); - }, - setInt32: function setInt32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packI32, value, arguments[2]); - }, - setUint32: function setUint32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packI32, value, arguments[2]); - }, - setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packF32, value, arguments[2]); - }, - setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { - set(this, 8, byteOffset, packF64, value, arguments[2]); - } - }); -} else { - if (!fails(function () { - $ArrayBuffer(1); - }) || !fails(function () { - new $ArrayBuffer(-1); // eslint-disable-line no-new - }) || fails(function () { - new $ArrayBuffer(); // eslint-disable-line no-new - new $ArrayBuffer(1.5); // eslint-disable-line no-new - new $ArrayBuffer(NaN); // eslint-disable-line no-new - return $ArrayBuffer.name != ARRAY_BUFFER; - })) { - $ArrayBuffer = function ArrayBuffer(length) { - anInstance(this, $ArrayBuffer); - return new BaseBuffer(toIndex(length)); - }; - var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; - for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) { - if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]); - } - if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer; - } - // iOS Safari 7.x bug - var view = new $DataView(new $ArrayBuffer(2)); - var $setInt8 = $DataView[PROTOTYPE].setInt8; - view.setInt8(0, 2147483648); - view.setInt8(1, 2147483649); - if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], { - setInt8: function setInt8(byteOffset, value) { - $setInt8.call(this, byteOffset, value << 24 >> 24); - }, - setUint8: function setUint8(byteOffset, value) { - $setInt8.call(this, byteOffset, value << 24 >> 24); - } - }, true); -} -setToStringTag($ArrayBuffer, ARRAY_BUFFER); -setToStringTag($DataView, DATA_VIEW); -hide($DataView[PROTOTYPE], $typed.VIEW, true); -exports[ARRAY_BUFFER] = $ArrayBuffer; -exports[DATA_VIEW] = $DataView; - -},{"103":103,"117":117,"124":124,"138":138,"139":139,"141":141,"146":146,"37":37,"40":40,"58":58,"64":64,"70":70,"72":72,"89":89,"99":99}],146:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var hide = _dereq_(72); -var uid = _dereq_(147); -var TYPED = uid('typed_array'); -var VIEW = uid('view'); -var ABV = !!(global.ArrayBuffer && global.DataView); -var CONSTR = ABV; -var i = 0; -var l = 9; -var Typed; - -var TypedArrayConstructors = ( - 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' -).split(','); - -while (i < l) { - if (Typed = global[TypedArrayConstructors[i++]]) { - hide(Typed.prototype, TYPED, true); - hide(Typed.prototype, VIEW, true); - } else CONSTR = false; -} - -module.exports = { - ABV: ABV, - CONSTR: CONSTR, - TYPED: TYPED, - VIEW: VIEW -}; - -},{"147":147,"70":70,"72":72}],147:[function(_dereq_,module,exports){ -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - -},{}],148:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var navigator = global.navigator; - -module.exports = navigator && navigator.userAgent || ''; - -},{"70":70}],149:[function(_dereq_,module,exports){ -var isObject = _dereq_(81); -module.exports = function (it, TYPE) { - if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); - return it; -}; - -},{"81":81}],150:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var core = _dereq_(52); -var LIBRARY = _dereq_(89); -var wksExt = _dereq_(151); -var defineProperty = _dereq_(99).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - -},{"151":151,"52":52,"70":70,"89":89,"99":99}],151:[function(_dereq_,module,exports){ -exports.f = _dereq_(152); - -},{"152":152}],152:[function(_dereq_,module,exports){ -var store = _dereq_(126)('wks'); -var uid = _dereq_(147); -var Symbol = _dereq_(70).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - -},{"126":126,"147":147,"70":70}],153:[function(_dereq_,module,exports){ -var classof = _dereq_(47); -var ITERATOR = _dereq_(152)('iterator'); -var Iterators = _dereq_(88); -module.exports = _dereq_(52).getIteratorMethod = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; - -},{"152":152,"47":47,"52":52,"88":88}],154:[function(_dereq_,module,exports){ -// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) -var $export = _dereq_(62); - -$export($export.P, 'Array', { copyWithin: _dereq_(39) }); - -_dereq_(35)('copyWithin'); - -},{"35":35,"39":39,"62":62}],155:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $every = _dereq_(42)(4); - -$export($export.P + $export.F * !_dereq_(128)([].every, true), 'Array', { - // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) - every: function every(callbackfn /* , thisArg */) { - return $every(this, callbackfn, arguments[1]); - } -}); - -},{"128":128,"42":42,"62":62}],156:[function(_dereq_,module,exports){ -// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) -var $export = _dereq_(62); - -$export($export.P, 'Array', { fill: _dereq_(40) }); - -_dereq_(35)('fill'); - -},{"35":35,"40":40,"62":62}],157:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $filter = _dereq_(42)(2); - -$export($export.P + $export.F * !_dereq_(128)([].filter, true), 'Array', { - // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments[1]); - } -}); - -},{"128":128,"42":42,"62":62}],158:[function(_dereq_,module,exports){ -'use strict'; -// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) -var $export = _dereq_(62); -var $find = _dereq_(42)(6); -var KEY = 'findIndex'; -var forced = true; -// Shouldn't skip holes -if (KEY in []) Array(1)[KEY](function () { forced = false; }); -$export($export.P + $export.F * forced, 'Array', { - findIndex: function findIndex(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); -_dereq_(35)(KEY); - -},{"35":35,"42":42,"62":62}],159:[function(_dereq_,module,exports){ -'use strict'; -// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) -var $export = _dereq_(62); -var $find = _dereq_(42)(5); -var KEY = 'find'; -var forced = true; -// Shouldn't skip holes -if (KEY in []) Array(1)[KEY](function () { forced = false; }); -$export($export.P + $export.F * forced, 'Array', { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); -_dereq_(35)(KEY); - -},{"35":35,"42":42,"62":62}],160:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $forEach = _dereq_(42)(0); -var STRICT = _dereq_(128)([].forEach, true); - -$export($export.P + $export.F * !STRICT, 'Array', { - // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) - forEach: function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments[1]); - } -}); - -},{"128":128,"42":42,"62":62}],161:[function(_dereq_,module,exports){ -'use strict'; -var ctx = _dereq_(54); -var $export = _dereq_(62); -var toObject = _dereq_(142); -var call = _dereq_(83); -var isArrayIter = _dereq_(78); -var toLength = _dereq_(141); -var createProperty = _dereq_(53); -var getIterFn = _dereq_(153); - -$export($export.S + $export.F * !_dereq_(86)(function (iter) { Array.from(iter); }), 'Array', { - // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) - from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - // if object isn't iterable or it's array with default iterator - use simple case - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - result.length = index; - return result; - } -}); - -},{"141":141,"142":142,"153":153,"53":53,"54":54,"62":62,"78":78,"83":83,"86":86}],162:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $indexOf = _dereq_(41)(false); -var $native = [].indexOf; -var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; - -$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(128)($native)), 'Array', { - // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - return NEGATIVE_ZERO - // convert -0 to +0 - ? $native.apply(this, arguments) || 0 - : $indexOf(this, searchElement, arguments[1]); - } -}); - -},{"128":128,"41":41,"62":62}],163:[function(_dereq_,module,exports){ -// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) -var $export = _dereq_(62); - -$export($export.S, 'Array', { isArray: _dereq_(79) }); - -},{"62":62,"79":79}],164:[function(_dereq_,module,exports){ -'use strict'; -var addToUnscopables = _dereq_(35); -var step = _dereq_(87); -var Iterators = _dereq_(88); -var toIObject = _dereq_(140); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = _dereq_(85)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - -},{"140":140,"35":35,"85":85,"87":87,"88":88}],165:[function(_dereq_,module,exports){ -'use strict'; -// 22.1.3.13 Array.prototype.join(separator) -var $export = _dereq_(62); -var toIObject = _dereq_(140); -var arrayJoin = [].join; - -// fallback for not array-like strings -$export($export.P + $export.F * (_dereq_(77) != Object || !_dereq_(128)(arrayJoin)), 'Array', { - join: function join(separator) { - return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator); - } -}); - -},{"128":128,"140":140,"62":62,"77":77}],166:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var toIObject = _dereq_(140); -var toInteger = _dereq_(139); -var toLength = _dereq_(141); -var $native = [].lastIndexOf; -var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0; - -$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(128)($native)), 'Array', { - // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) - lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { - // convert -0 to +0 - if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0; - var O = toIObject(this); - var length = toLength(O.length); - var index = length - 1; - if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1])); - if (index < 0) index = length + index; - for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0; - return -1; - } -}); - -},{"128":128,"139":139,"140":140,"141":141,"62":62}],167:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $map = _dereq_(42)(1); - -$export($export.P + $export.F * !_dereq_(128)([].map, true), 'Array', { - // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) - map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments[1]); - } -}); - -},{"128":128,"42":42,"62":62}],168:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var createProperty = _dereq_(53); - -// WebKit Array.of isn't generic -$export($export.S + $export.F * _dereq_(64)(function () { - function F() { /* empty */ } - return !(Array.of.call(F) instanceof F); -}), 'Array', { - // 22.1.2.3 Array.of( ...items) - of: function of(/* ...args */) { - var index = 0; - var aLen = arguments.length; - var result = new (typeof this == 'function' ? this : Array)(aLen); - while (aLen > index) createProperty(result, index, arguments[index++]); - result.length = aLen; - return result; - } -}); - -},{"53":53,"62":62,"64":64}],169:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $reduce = _dereq_(43); - -$export($export.P + $export.F * !_dereq_(128)([].reduceRight, true), 'Array', { - // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) - reduceRight: function reduceRight(callbackfn /* , initialValue */) { - return $reduce(this, callbackfn, arguments.length, arguments[1], true); - } -}); - -},{"128":128,"43":43,"62":62}],170:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $reduce = _dereq_(43); - -$export($export.P + $export.F * !_dereq_(128)([].reduce, true), 'Array', { - // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) - reduce: function reduce(callbackfn /* , initialValue */) { - return $reduce(this, callbackfn, arguments.length, arguments[1], false); - } -}); - -},{"128":128,"43":43,"62":62}],171:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var html = _dereq_(73); -var cof = _dereq_(48); -var toAbsoluteIndex = _dereq_(137); -var toLength = _dereq_(141); -var arraySlice = [].slice; - -// fallback for not array-like ES3 strings and DOM objects -$export($export.P + $export.F * _dereq_(64)(function () { - if (html) arraySlice.call(html); -}), 'Array', { - slice: function slice(begin, end) { - var len = toLength(this.length); - var klass = cof(this); - end = end === undefined ? len : end; - if (klass == 'Array') return arraySlice.call(this, begin, end); - var start = toAbsoluteIndex(begin, len); - var upTo = toAbsoluteIndex(end, len); - var size = toLength(upTo - start); - var cloned = new Array(size); - var i = 0; - for (; i < size; i++) cloned[i] = klass == 'String' - ? this.charAt(start + i) - : this[start + i]; - return cloned; - } -}); - -},{"137":137,"141":141,"48":48,"62":62,"64":64,"73":73}],172:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $some = _dereq_(42)(3); - -$export($export.P + $export.F * !_dereq_(128)([].some, true), 'Array', { - // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) - some: function some(callbackfn /* , thisArg */) { - return $some(this, callbackfn, arguments[1]); - } -}); - -},{"128":128,"42":42,"62":62}],173:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var aFunction = _dereq_(33); -var toObject = _dereq_(142); -var fails = _dereq_(64); -var $sort = [].sort; -var test = [1, 2, 3]; - -$export($export.P + $export.F * (fails(function () { - // IE8- - test.sort(undefined); -}) || !fails(function () { - // V8 bug - test.sort(null); - // Old WebKit -}) || !_dereq_(128)($sort)), 'Array', { - // 22.1.3.25 Array.prototype.sort(comparefn) - sort: function sort(comparefn) { - return comparefn === undefined - ? $sort.call(toObject(this)) - : $sort.call(toObject(this), aFunction(comparefn)); - } -}); - -},{"128":128,"142":142,"33":33,"62":62,"64":64}],174:[function(_dereq_,module,exports){ -_dereq_(123)('Array'); - -},{"123":123}],175:[function(_dereq_,module,exports){ -// 20.3.3.1 / 15.9.4.4 Date.now() -var $export = _dereq_(62); - -$export($export.S, 'Date', { now: function () { return new Date().getTime(); } }); - -},{"62":62}],176:[function(_dereq_,module,exports){ -// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() -var $export = _dereq_(62); -var toISOString = _dereq_(55); - -// PhantomJS / old WebKit has a broken implementations -$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', { - toISOString: toISOString -}); - -},{"55":55,"62":62}],177:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var toObject = _dereq_(142); -var toPrimitive = _dereq_(143); - -$export($export.P + $export.F * _dereq_(64)(function () { - return new Date(NaN).toJSON() !== null - || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; -}), 'Date', { - // eslint-disable-next-line no-unused-vars - toJSON: function toJSON(key) { - var O = toObject(this); - var pv = toPrimitive(O); - return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); - } -}); - -},{"142":142,"143":143,"62":62,"64":64}],178:[function(_dereq_,module,exports){ -var TO_PRIMITIVE = _dereq_(152)('toPrimitive'); -var proto = Date.prototype; - -if (!(TO_PRIMITIVE in proto)) _dereq_(72)(proto, TO_PRIMITIVE, _dereq_(56)); - -},{"152":152,"56":56,"72":72}],179:[function(_dereq_,module,exports){ -var DateProto = Date.prototype; -var INVALID_DATE = 'Invalid Date'; -var TO_STRING = 'toString'; -var $toString = DateProto[TO_STRING]; -var getTime = DateProto.getTime; -if (new Date(NaN) + '' != INVALID_DATE) { - _dereq_(118)(DateProto, TO_STRING, function toString() { - var value = getTime.call(this); - // eslint-disable-next-line no-self-compare - return value === value ? $toString.call(this) : INVALID_DATE; - }); -} - -},{"118":118}],180:[function(_dereq_,module,exports){ -// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) -var $export = _dereq_(62); - -$export($export.P, 'Function', { bind: _dereq_(46) }); - -},{"46":46,"62":62}],181:[function(_dereq_,module,exports){ -'use strict'; -var isObject = _dereq_(81); -var getPrototypeOf = _dereq_(105); -var HAS_INSTANCE = _dereq_(152)('hasInstance'); -var FunctionProto = Function.prototype; -// 19.2.3.6 Function.prototype[@@hasInstance](V) -if (!(HAS_INSTANCE in FunctionProto)) _dereq_(99).f(FunctionProto, HAS_INSTANCE, { value: function (O) { - if (typeof this != 'function' || !isObject(O)) return false; - if (!isObject(this.prototype)) return O instanceof this; - // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: - while (O = getPrototypeOf(O)) if (this.prototype === O) return true; - return false; -} }); - -},{"105":105,"152":152,"81":81,"99":99}],182:[function(_dereq_,module,exports){ -var dP = _dereq_(99).f; -var FProto = Function.prototype; -var nameRE = /^\s*function ([^ (]*)/; -var NAME = 'name'; - -// 19.2.4.2 name -NAME in FProto || _dereq_(58) && dP(FProto, NAME, { - configurable: true, - get: function () { - try { - return ('' + this).match(nameRE)[1]; - } catch (e) { - return ''; - } - } -}); - -},{"58":58,"99":99}],183:[function(_dereq_,module,exports){ -'use strict'; -var strong = _dereq_(49); -var validate = _dereq_(149); -var MAP = 'Map'; - -// 23.1 Map Objects -module.exports = _dereq_(51)(MAP, function (get) { - return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = strong.getEntry(validate(this, MAP), key); - return entry && entry.v; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); - } -}, strong, true); - -},{"149":149,"49":49,"51":51}],184:[function(_dereq_,module,exports){ -// 20.2.2.3 Math.acosh(x) -var $export = _dereq_(62); -var log1p = _dereq_(92); -var sqrt = Math.sqrt; -var $acosh = Math.acosh; - -$export($export.S + $export.F * !($acosh - // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 - && Math.floor($acosh(Number.MAX_VALUE)) == 710 - // Tor Browser bug: Math.acosh(Infinity) -> NaN - && $acosh(Infinity) == Infinity -), 'Math', { - acosh: function acosh(x) { - return (x = +x) < 1 ? NaN : x > 94906265.62425156 - ? Math.log(x) + Math.LN2 - : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); - } -}); - -},{"62":62,"92":92}],185:[function(_dereq_,module,exports){ -// 20.2.2.5 Math.asinh(x) -var $export = _dereq_(62); -var $asinh = Math.asinh; - -function asinh(x) { - return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1)); -} - -// Tor Browser bug: Math.asinh(0) -> -0 -$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh }); - -},{"62":62}],186:[function(_dereq_,module,exports){ -// 20.2.2.7 Math.atanh(x) -var $export = _dereq_(62); -var $atanh = Math.atanh; - -// Tor Browser bug: Math.atanh(-0) -> 0 -$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', { - atanh: function atanh(x) { - return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2; - } -}); - -},{"62":62}],187:[function(_dereq_,module,exports){ -// 20.2.2.9 Math.cbrt(x) -var $export = _dereq_(62); -var sign = _dereq_(93); - -$export($export.S, 'Math', { - cbrt: function cbrt(x) { - return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3); - } -}); - -},{"62":62,"93":93}],188:[function(_dereq_,module,exports){ -// 20.2.2.11 Math.clz32(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { - clz32: function clz32(x) { - return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32; - } -}); - -},{"62":62}],189:[function(_dereq_,module,exports){ -// 20.2.2.12 Math.cosh(x) -var $export = _dereq_(62); -var exp = Math.exp; - -$export($export.S, 'Math', { - cosh: function cosh(x) { - return (exp(x = +x) + exp(-x)) / 2; - } -}); - -},{"62":62}],190:[function(_dereq_,module,exports){ -// 20.2.2.14 Math.expm1(x) -var $export = _dereq_(62); -var $expm1 = _dereq_(90); - -$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 }); - -},{"62":62,"90":90}],191:[function(_dereq_,module,exports){ -// 20.2.2.16 Math.fround(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { fround: _dereq_(91) }); - -},{"62":62,"91":91}],192:[function(_dereq_,module,exports){ -// 20.2.2.17 Math.hypot([value1[, value2[, … ]]]) -var $export = _dereq_(62); -var abs = Math.abs; - -$export($export.S, 'Math', { - hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars - var sum = 0; - var i = 0; - var aLen = arguments.length; - var larg = 0; - var arg, div; - while (i < aLen) { - arg = abs(arguments[i++]); - if (larg < arg) { - div = larg / arg; - sum = sum * div * div + 1; - larg = arg; - } else if (arg > 0) { - div = arg / larg; - sum += div * div; - } else sum += arg; - } - return larg === Infinity ? Infinity : larg * Math.sqrt(sum); - } -}); - -},{"62":62}],193:[function(_dereq_,module,exports){ -// 20.2.2.18 Math.imul(x, y) -var $export = _dereq_(62); -var $imul = Math.imul; - -// some WebKit versions fails with big numbers, some has wrong arity -$export($export.S + $export.F * _dereq_(64)(function () { - return $imul(0xffffffff, 5) != -5 || $imul.length != 2; -}), 'Math', { - imul: function imul(x, y) { - var UINT16 = 0xffff; - var xn = +x; - var yn = +y; - var xl = UINT16 & xn; - var yl = UINT16 & yn; - return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); - } -}); - -},{"62":62,"64":64}],194:[function(_dereq_,module,exports){ -// 20.2.2.21 Math.log10(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { - log10: function log10(x) { - return Math.log(x) * Math.LOG10E; - } -}); - -},{"62":62}],195:[function(_dereq_,module,exports){ -// 20.2.2.20 Math.log1p(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { log1p: _dereq_(92) }); - -},{"62":62,"92":92}],196:[function(_dereq_,module,exports){ -// 20.2.2.22 Math.log2(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { - log2: function log2(x) { - return Math.log(x) / Math.LN2; - } -}); - -},{"62":62}],197:[function(_dereq_,module,exports){ -// 20.2.2.28 Math.sign(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { sign: _dereq_(93) }); - -},{"62":62,"93":93}],198:[function(_dereq_,module,exports){ -// 20.2.2.30 Math.sinh(x) -var $export = _dereq_(62); -var expm1 = _dereq_(90); -var exp = Math.exp; - -// V8 near Chromium 38 has a problem with very small numbers -$export($export.S + $export.F * _dereq_(64)(function () { - return !Math.sinh(-2e-17) != -2e-17; -}), 'Math', { - sinh: function sinh(x) { - return Math.abs(x = +x) < 1 - ? (expm1(x) - expm1(-x)) / 2 - : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2); - } -}); - -},{"62":62,"64":64,"90":90}],199:[function(_dereq_,module,exports){ -// 20.2.2.33 Math.tanh(x) -var $export = _dereq_(62); -var expm1 = _dereq_(90); -var exp = Math.exp; - -$export($export.S, 'Math', { - tanh: function tanh(x) { - var a = expm1(x = +x); - var b = expm1(-x); - return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); - } -}); - -},{"62":62,"90":90}],200:[function(_dereq_,module,exports){ -// 20.2.2.34 Math.trunc(x) -var $export = _dereq_(62); - -$export($export.S, 'Math', { - trunc: function trunc(it) { - return (it > 0 ? Math.floor : Math.ceil)(it); - } -}); - -},{"62":62}],201:[function(_dereq_,module,exports){ -'use strict'; -var global = _dereq_(70); -var has = _dereq_(71); -var cof = _dereq_(48); -var inheritIfRequired = _dereq_(75); -var toPrimitive = _dereq_(143); -var fails = _dereq_(64); -var gOPN = _dereq_(103).f; -var gOPD = _dereq_(101).f; -var dP = _dereq_(99).f; -var $trim = _dereq_(134).trim; -var NUMBER = 'Number'; -var $Number = global[NUMBER]; -var Base = $Number; -var proto = $Number.prototype; -// Opera ~12 has broken Object#toString -var BROKEN_COF = cof(_dereq_(98)(proto)) == NUMBER; -var TRIM = 'trim' in String.prototype; - -// 7.1.3 ToNumber(argument) -var toNumber = function (argument) { - var it = toPrimitive(argument, false); - if (typeof it == 'string' && it.length > 2) { - it = TRIM ? it.trim() : $trim(it, 3); - var first = it.charCodeAt(0); - var third, radix, maxCode; - if (first === 43 || first === 45) { - third = it.charCodeAt(2); - if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix - } else if (first === 48) { - switch (it.charCodeAt(1)) { - case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i - case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i - default: return +it; - } - for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) { - code = digits.charCodeAt(i); - // parseInt parses a string to a first unavailable symbol - // but ToNumber should return NaN if a string contains unavailable symbols - if (code < 48 || code > maxCode) return NaN; - } return parseInt(digits, radix); - } - } return +it; -}; - -if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) { - $Number = function Number(value) { - var it = arguments.length < 1 ? 0 : value; - var that = this; - return that instanceof $Number - // check on 1..constructor(foo) case - && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER) - ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); - }; - for (var keys = _dereq_(58) ? gOPN(Base) : ( - // ES3: - 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + - // ES6 (in case, if modules with ES6 Number statics required before): - 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + - 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' - ).split(','), j = 0, key; keys.length > j; j++) { - if (has(Base, key = keys[j]) && !has($Number, key)) { - dP($Number, key, gOPD(Base, key)); - } - } - $Number.prototype = proto; - proto.constructor = $Number; - _dereq_(118)(global, NUMBER, $Number); -} - -},{"101":101,"103":103,"118":118,"134":134,"143":143,"48":48,"58":58,"64":64,"70":70,"71":71,"75":75,"98":98,"99":99}],202:[function(_dereq_,module,exports){ -// 20.1.2.1 Number.EPSILON -var $export = _dereq_(62); - -$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) }); - -},{"62":62}],203:[function(_dereq_,module,exports){ -// 20.1.2.2 Number.isFinite(number) -var $export = _dereq_(62); -var _isFinite = _dereq_(70).isFinite; - -$export($export.S, 'Number', { - isFinite: function isFinite(it) { - return typeof it == 'number' && _isFinite(it); - } -}); - -},{"62":62,"70":70}],204:[function(_dereq_,module,exports){ -// 20.1.2.3 Number.isInteger(number) -var $export = _dereq_(62); - -$export($export.S, 'Number', { isInteger: _dereq_(80) }); - -},{"62":62,"80":80}],205:[function(_dereq_,module,exports){ -// 20.1.2.4 Number.isNaN(number) -var $export = _dereq_(62); - -$export($export.S, 'Number', { - isNaN: function isNaN(number) { - // eslint-disable-next-line no-self-compare - return number != number; - } -}); - -},{"62":62}],206:[function(_dereq_,module,exports){ -// 20.1.2.5 Number.isSafeInteger(number) -var $export = _dereq_(62); -var isInteger = _dereq_(80); -var abs = Math.abs; - -$export($export.S, 'Number', { - isSafeInteger: function isSafeInteger(number) { - return isInteger(number) && abs(number) <= 0x1fffffffffffff; - } -}); - -},{"62":62,"80":80}],207:[function(_dereq_,module,exports){ -// 20.1.2.6 Number.MAX_SAFE_INTEGER -var $export = _dereq_(62); - -$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff }); - -},{"62":62}],208:[function(_dereq_,module,exports){ -// 20.1.2.10 Number.MIN_SAFE_INTEGER -var $export = _dereq_(62); - -$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff }); - -},{"62":62}],209:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var $parseFloat = _dereq_(112); -// 20.1.2.12 Number.parseFloat(string) -$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat }); - -},{"112":112,"62":62}],210:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var $parseInt = _dereq_(113); -// 20.1.2.13 Number.parseInt(string, radix) -$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt }); - -},{"113":113,"62":62}],211:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var toInteger = _dereq_(139); -var aNumberValue = _dereq_(34); -var repeat = _dereq_(133); -var $toFixed = 1.0.toFixed; -var floor = Math.floor; -var data = [0, 0, 0, 0, 0, 0]; -var ERROR = 'Number.toFixed: incorrect invocation!'; -var ZERO = '0'; - -var multiply = function (n, c) { - var i = -1; - var c2 = c; - while (++i < 6) { - c2 += n * data[i]; - data[i] = c2 % 1e7; - c2 = floor(c2 / 1e7); - } -}; -var divide = function (n) { - var i = 6; - var c = 0; - while (--i >= 0) { - c += data[i]; - data[i] = floor(c / n); - c = (c % n) * 1e7; - } -}; -var numToString = function () { - var i = 6; - var s = ''; - while (--i >= 0) { - if (s !== '' || i === 0 || data[i] !== 0) { - var t = String(data[i]); - s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t; - } - } return s; -}; -var pow = function (x, n, acc) { - return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); -}; -var log = function (x) { - var n = 0; - var x2 = x; - while (x2 >= 4096) { - n += 12; - x2 /= 4096; - } - while (x2 >= 2) { - n += 1; - x2 /= 2; - } return n; -}; - -$export($export.P + $export.F * (!!$toFixed && ( - 0.00008.toFixed(3) !== '0.000' || - 0.9.toFixed(0) !== '1' || - 1.255.toFixed(2) !== '1.25' || - 1000000000000000128.0.toFixed(0) !== '1000000000000000128' -) || !_dereq_(64)(function () { - // V8 ~ Android 4.3- - $toFixed.call({}); -})), 'Number', { - toFixed: function toFixed(fractionDigits) { - var x = aNumberValue(this, ERROR); - var f = toInteger(fractionDigits); - var s = ''; - var m = ZERO; - var e, z, j, k; - if (f < 0 || f > 20) throw RangeError(ERROR); - // eslint-disable-next-line no-self-compare - if (x != x) return 'NaN'; - if (x <= -1e21 || x >= 1e21) return String(x); - if (x < 0) { - s = '-'; - x = -x; - } - if (x > 1e-21) { - e = log(x * pow(2, 69, 1)) - 69; - z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1); - z *= 0x10000000000000; - e = 52 - e; - if (e > 0) { - multiply(0, z); - j = f; - while (j >= 7) { - multiply(1e7, 0); - j -= 7; - } - multiply(pow(10, j, 1), 0); - j = e - 1; - while (j >= 23) { - divide(1 << 23); - j -= 23; - } - divide(1 << j); - multiply(1, 1); - divide(2); - m = numToString(); - } else { - multiply(0, z); - multiply(1 << -e, 0); - m = numToString() + repeat.call(ZERO, f); - } - } - if (f > 0) { - k = m.length; - m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f)); - } else { - m = s + m; - } return m; - } -}); - -},{"133":133,"139":139,"34":34,"62":62,"64":64}],212:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $fails = _dereq_(64); -var aNumberValue = _dereq_(34); -var $toPrecision = 1.0.toPrecision; - -$export($export.P + $export.F * ($fails(function () { - // IE7- - return $toPrecision.call(1, undefined) !== '1'; -}) || !$fails(function () { - // V8 ~ Android 4.3- - $toPrecision.call({}); -})), 'Number', { - toPrecision: function toPrecision(precision) { - var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!'); - return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); - } -}); - -},{"34":34,"62":62,"64":64}],213:[function(_dereq_,module,exports){ -// 19.1.3.1 Object.assign(target, source) -var $export = _dereq_(62); - -$export($export.S + $export.F, 'Object', { assign: _dereq_(97) }); - -},{"62":62,"97":97}],214:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -$export($export.S, 'Object', { create: _dereq_(98) }); - -},{"62":62,"98":98}],215:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) -$export($export.S + $export.F * !_dereq_(58), 'Object', { defineProperties: _dereq_(100) }); - -},{"100":100,"58":58,"62":62}],216:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !_dereq_(58), 'Object', { defineProperty: _dereq_(99).f }); - -},{"58":58,"62":62,"99":99}],217:[function(_dereq_,module,exports){ -// 19.1.2.5 Object.freeze(O) -var isObject = _dereq_(81); -var meta = _dereq_(94).onFreeze; - -_dereq_(109)('freeze', function ($freeze) { - return function freeze(it) { - return $freeze && isObject(it) ? $freeze(meta(it)) : it; - }; -}); - -},{"109":109,"81":81,"94":94}],218:[function(_dereq_,module,exports){ -// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) -var toIObject = _dereq_(140); -var $getOwnPropertyDescriptor = _dereq_(101).f; - -_dereq_(109)('getOwnPropertyDescriptor', function () { - return function getOwnPropertyDescriptor(it, key) { - return $getOwnPropertyDescriptor(toIObject(it), key); - }; -}); - -},{"101":101,"109":109,"140":140}],219:[function(_dereq_,module,exports){ -// 19.1.2.7 Object.getOwnPropertyNames(O) -_dereq_(109)('getOwnPropertyNames', function () { - return _dereq_(102).f; -}); - -},{"102":102,"109":109}],220:[function(_dereq_,module,exports){ -// 19.1.2.9 Object.getPrototypeOf(O) -var toObject = _dereq_(142); -var $getPrototypeOf = _dereq_(105); - -_dereq_(109)('getPrototypeOf', function () { - return function getPrototypeOf(it) { - return $getPrototypeOf(toObject(it)); - }; -}); - -},{"105":105,"109":109,"142":142}],221:[function(_dereq_,module,exports){ -// 19.1.2.11 Object.isExtensible(O) -var isObject = _dereq_(81); - -_dereq_(109)('isExtensible', function ($isExtensible) { - return function isExtensible(it) { - return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; - }; -}); - -},{"109":109,"81":81}],222:[function(_dereq_,module,exports){ -// 19.1.2.12 Object.isFrozen(O) -var isObject = _dereq_(81); - -_dereq_(109)('isFrozen', function ($isFrozen) { - return function isFrozen(it) { - return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; - }; -}); - -},{"109":109,"81":81}],223:[function(_dereq_,module,exports){ -// 19.1.2.13 Object.isSealed(O) -var isObject = _dereq_(81); - -_dereq_(109)('isSealed', function ($isSealed) { - return function isSealed(it) { - return isObject(it) ? $isSealed ? $isSealed(it) : false : true; - }; -}); - -},{"109":109,"81":81}],224:[function(_dereq_,module,exports){ -// 19.1.3.10 Object.is(value1, value2) -var $export = _dereq_(62); -$export($export.S, 'Object', { is: _dereq_(121) }); - -},{"121":121,"62":62}],225:[function(_dereq_,module,exports){ -// 19.1.2.14 Object.keys(O) -var toObject = _dereq_(142); -var $keys = _dereq_(107); - -_dereq_(109)('keys', function () { - return function keys(it) { - return $keys(toObject(it)); - }; -}); - -},{"107":107,"109":109,"142":142}],226:[function(_dereq_,module,exports){ -// 19.1.2.15 Object.preventExtensions(O) -var isObject = _dereq_(81); -var meta = _dereq_(94).onFreeze; - -_dereq_(109)('preventExtensions', function ($preventExtensions) { - return function preventExtensions(it) { - return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it; - }; -}); - -},{"109":109,"81":81,"94":94}],227:[function(_dereq_,module,exports){ -// 19.1.2.17 Object.seal(O) -var isObject = _dereq_(81); -var meta = _dereq_(94).onFreeze; - -_dereq_(109)('seal', function ($seal) { - return function seal(it) { - return $seal && isObject(it) ? $seal(meta(it)) : it; - }; -}); - -},{"109":109,"81":81,"94":94}],228:[function(_dereq_,module,exports){ -// 19.1.3.19 Object.setPrototypeOf(O, proto) -var $export = _dereq_(62); -$export($export.S, 'Object', { setPrototypeOf: _dereq_(122).set }); - -},{"122":122,"62":62}],229:[function(_dereq_,module,exports){ -'use strict'; -// 19.1.3.6 Object.prototype.toString() -var classof = _dereq_(47); -var test = {}; -test[_dereq_(152)('toStringTag')] = 'z'; -if (test + '' != '[object z]') { - _dereq_(118)(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); -} - -},{"118":118,"152":152,"47":47}],230:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var $parseFloat = _dereq_(112); -// 18.2.4 parseFloat(string) -$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat }); - -},{"112":112,"62":62}],231:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var $parseInt = _dereq_(113); -// 18.2.5 parseInt(string, radix) -$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt }); - -},{"113":113,"62":62}],232:[function(_dereq_,module,exports){ -'use strict'; -var LIBRARY = _dereq_(89); -var global = _dereq_(70); -var ctx = _dereq_(54); -var classof = _dereq_(47); -var $export = _dereq_(62); -var isObject = _dereq_(81); -var aFunction = _dereq_(33); -var anInstance = _dereq_(37); -var forOf = _dereq_(68); -var speciesConstructor = _dereq_(127); -var task = _dereq_(136).set; -var microtask = _dereq_(95)(); -var newPromiseCapabilityModule = _dereq_(96); -var perform = _dereq_(114); -var userAgent = _dereq_(148); -var promiseResolve = _dereq_(115); -var PROMISE = 'Promise'; -var TypeError = global.TypeError; -var process = global.process; -var versions = process && process.versions; -var v8 = versions && versions.v8 || ''; -var $Promise = global[PROMISE]; -var isNode = classof(process) == 'process'; -var empty = function () { /* empty */ }; -var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; -var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; - -var USE_NATIVE = !!function () { - try { - // correct subclassing with @@species support - var promise = $Promise.resolve(1); - var FakePromise = (promise.constructor = {})[_dereq_(152)('species')] = function (exec) { - exec(empty, empty); - }; - // unhandled rejections tracking support, NodeJS Promise without it fails @@species test - return (isNode || typeof PromiseRejectionEvent == 'function') - && promise.then(empty) instanceof FakePromise - // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables - // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 - // we can't detect it synchronously, so just check versions - && v8.indexOf('6.6') !== 0 - && userAgent.indexOf('Chrome/66') === -1; - } catch (e) { /* empty */ } -}(); - -// helpers -var isThenable = function (it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; -}; -var notify = function (promise, isReject) { - if (promise._n) return; - promise._n = true; - var chain = promise._c; - microtask(function () { - var value = promise._v; - var ok = promise._s == 1; - var i = 0; - var run = function (reaction) { - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - try { - if (handler) { - if (!ok) { - if (promise._h == 2) onHandleUnhandled(promise); - promise._h = 1; - } - if (handler === true) result = value; - else { - if (domain) domain.enter(); - result = handler(value); // may throw - if (domain) { - domain.exit(); - exited = true; - } - } - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (e) { - if (domain && !exited) domain.exit(); - reject(e); - } - }; - while (chain.length > i) run(chain[i++]); // variable length - can't use forEach - promise._c = []; - promise._n = false; - if (isReject && !promise._h) onUnhandled(promise); - }); -}; -var onUnhandled = function (promise) { - task.call(global, function () { - var value = promise._v; - var unhandled = isUnhandled(promise); - var result, handler, console; - if (unhandled) { - result = perform(function () { - if (isNode) { - process.emit('unhandledRejection', value, promise); - } else if (handler = global.onunhandledrejection) { - handler({ promise: promise, reason: value }); - } else if ((console = global.console) && console.error) { - console.error('Unhandled promise rejection', value); - } - }); - // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should - promise._h = isNode || isUnhandled(promise) ? 2 : 1; - } promise._a = undefined; - if (unhandled && result.e) throw result.v; - }); -}; -var isUnhandled = function (promise) { - return promise._h !== 1 && (promise._a || promise._c).length === 0; -}; -var onHandleUnhandled = function (promise) { - task.call(global, function () { - var handler; - if (isNode) { - process.emit('rejectionHandled', promise); - } else if (handler = global.onrejectionhandled) { - handler({ promise: promise, reason: promise._v }); - } - }); -}; -var $reject = function (value) { - var promise = this; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; // unwrap - promise._v = value; - promise._s = 2; - if (!promise._a) promise._a = promise._c.slice(); - notify(promise, true); -}; -var $resolve = function (value) { - var promise = this; - var then; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; // unwrap - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - if (then = isThenable(value)) { - microtask(function () { - var wrapper = { _w: promise, _d: false }; // wrap - try { - then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); - } catch (e) { - $reject.call(wrapper, e); - } - }); - } else { - promise._v = value; - promise._s = 1; - notify(promise, false); - } - } catch (e) { - $reject.call({ _w: promise, _d: false }, e); // wrap - } -}; - -// constructor polyfill -if (!USE_NATIVE) { - // 25.4.3.1 Promise(executor) - $Promise = function Promise(executor) { - anInstance(this, $Promise, PROMISE, '_h'); - aFunction(executor); - Internal.call(this); - try { - executor(ctx($resolve, this, 1), ctx($reject, this, 1)); - } catch (err) { - $reject.call(this, err); - } - }; - // eslint-disable-next-line no-unused-vars - Internal = function Promise(executor) { - this._c = []; // <- awaiting reactions - this._a = undefined; // <- checked in isUnhandled reactions - this._s = 0; // <- state - this._d = false; // <- done - this._v = undefined; // <- value - this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled - this._n = false; // <- notify - }; - Internal.prototype = _dereq_(117)($Promise.prototype, { - // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) - then: function then(onFulfilled, onRejected) { - var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = isNode ? process.domain : undefined; - this._c.push(reaction); - if (this._a) this._a.push(reaction); - if (this._s) notify(this, false); - return reaction.promise; - }, - // 25.4.5.1 Promise.prototype.catch(onRejected) - 'catch': function (onRejected) { - return this.then(undefined, onRejected); - } - }); - OwnPromiseCapability = function () { - var promise = new Internal(); - this.promise = promise; - this.resolve = ctx($resolve, promise, 1); - this.reject = ctx($reject, promise, 1); - }; - newPromiseCapabilityModule.f = newPromiseCapability = function (C) { - return C === $Promise || C === Wrapper - ? new OwnPromiseCapability(C) - : newGenericPromiseCapability(C); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); -_dereq_(124)($Promise, PROMISE); -_dereq_(123)(PROMISE); -Wrapper = _dereq_(52)[PROMISE]; - -// statics -$export($export.S + $export.F * !USE_NATIVE, PROMISE, { - // 25.4.4.5 Promise.reject(r) - reject: function reject(r) { - var capability = newPromiseCapability(this); - var $$reject = capability.reject; - $$reject(r); - return capability.promise; - } -}); -$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { - // 25.4.4.6 Promise.resolve(x) - resolve: function resolve(x) { - return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); - } -}); -$export($export.S + $export.F * !(USE_NATIVE && _dereq_(86)(function (iter) { - $Promise.all(iter)['catch'](empty); -})), PROMISE, { - // 25.4.4.1 Promise.all(iterable) - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var values = []; - var index = 0; - var remaining = 1; - forOf(iterable, false, function (promise) { - var $index = index++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - C.resolve(promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[$index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.e) reject(result.v); - return capability.promise; - }, - // 25.4.4.4 Promise.race(iterable) - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - forOf(iterable, false, function (promise) { - C.resolve(promise).then(capability.resolve, reject); - }); - }); - if (result.e) reject(result.v); - return capability.promise; - } -}); - -},{"114":114,"115":115,"117":117,"123":123,"124":124,"127":127,"136":136,"148":148,"152":152,"33":33,"37":37,"47":47,"52":52,"54":54,"62":62,"68":68,"70":70,"81":81,"86":86,"89":89,"95":95,"96":96}],233:[function(_dereq_,module,exports){ -// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) -var $export = _dereq_(62); -var aFunction = _dereq_(33); -var anObject = _dereq_(38); -var rApply = (_dereq_(70).Reflect || {}).apply; -var fApply = Function.apply; -// MS Edge argumentsList argument is optional -$export($export.S + $export.F * !_dereq_(64)(function () { - rApply(function () { /* empty */ }); -}), 'Reflect', { - apply: function apply(target, thisArgument, argumentsList) { - var T = aFunction(target); - var L = anObject(argumentsList); - return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); - } -}); - -},{"33":33,"38":38,"62":62,"64":64,"70":70}],234:[function(_dereq_,module,exports){ -// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) -var $export = _dereq_(62); -var create = _dereq_(98); -var aFunction = _dereq_(33); -var anObject = _dereq_(38); -var isObject = _dereq_(81); -var fails = _dereq_(64); -var bind = _dereq_(46); -var rConstruct = (_dereq_(70).Reflect || {}).construct; - -// MS Edge supports only 2 arguments and argumentsList argument is optional -// FF Nightly sets third argument as `new.target`, but does not create `this` from it -var NEW_TARGET_BUG = fails(function () { - function F() { /* empty */ } - return !(rConstruct(function () { /* empty */ }, [], F) instanceof F); -}); -var ARGS_BUG = !fails(function () { - rConstruct(function () { /* empty */ }); -}); - -$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { - construct: function construct(Target, args /* , newTarget */) { - aFunction(Target); - anObject(args); - var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); - if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget); - if (Target == newTarget) { - // w/o altered newTarget, optimization for 0-4 arguments - switch (args.length) { - case 0: return new Target(); - case 1: return new Target(args[0]); - case 2: return new Target(args[0], args[1]); - case 3: return new Target(args[0], args[1], args[2]); - case 4: return new Target(args[0], args[1], args[2], args[3]); - } - // w/o altered newTarget, lot of arguments case - var $args = [null]; - $args.push.apply($args, args); - return new (bind.apply(Target, $args))(); - } - // with altered newTarget, not support built-in constructors - var proto = newTarget.prototype; - var instance = create(isObject(proto) ? proto : Object.prototype); - var result = Function.apply.call(Target, instance, args); - return isObject(result) ? result : instance; - } -}); - -},{"33":33,"38":38,"46":46,"62":62,"64":64,"70":70,"81":81,"98":98}],235:[function(_dereq_,module,exports){ -// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) -var dP = _dereq_(99); -var $export = _dereq_(62); -var anObject = _dereq_(38); -var toPrimitive = _dereq_(143); - -// MS Edge has broken Reflect.defineProperty - throwing instead of returning false -$export($export.S + $export.F * _dereq_(64)(function () { - // eslint-disable-next-line no-undef - Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 }); -}), 'Reflect', { - defineProperty: function defineProperty(target, propertyKey, attributes) { - anObject(target); - propertyKey = toPrimitive(propertyKey, true); - anObject(attributes); - try { - dP.f(target, propertyKey, attributes); - return true; - } catch (e) { - return false; - } - } -}); - -},{"143":143,"38":38,"62":62,"64":64,"99":99}],236:[function(_dereq_,module,exports){ -// 26.1.4 Reflect.deleteProperty(target, propertyKey) -var $export = _dereq_(62); -var gOPD = _dereq_(101).f; -var anObject = _dereq_(38); - -$export($export.S, 'Reflect', { - deleteProperty: function deleteProperty(target, propertyKey) { - var desc = gOPD(anObject(target), propertyKey); - return desc && !desc.configurable ? false : delete target[propertyKey]; - } -}); - -},{"101":101,"38":38,"62":62}],237:[function(_dereq_,module,exports){ -'use strict'; -// 26.1.5 Reflect.enumerate(target) -var $export = _dereq_(62); -var anObject = _dereq_(38); -var Enumerate = function (iterated) { - this._t = anObject(iterated); // target - this._i = 0; // next index - var keys = this._k = []; // keys - var key; - for (key in iterated) keys.push(key); -}; -_dereq_(84)(Enumerate, 'Object', function () { - var that = this; - var keys = that._k; - var key; - do { - if (that._i >= keys.length) return { value: undefined, done: true }; - } while (!((key = keys[that._i++]) in that._t)); - return { value: key, done: false }; -}); - -$export($export.S, 'Reflect', { - enumerate: function enumerate(target) { - return new Enumerate(target); - } -}); - -},{"38":38,"62":62,"84":84}],238:[function(_dereq_,module,exports){ -// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) -var gOPD = _dereq_(101); -var $export = _dereq_(62); -var anObject = _dereq_(38); - -$export($export.S, 'Reflect', { - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { - return gOPD.f(anObject(target), propertyKey); - } -}); - -},{"101":101,"38":38,"62":62}],239:[function(_dereq_,module,exports){ -// 26.1.8 Reflect.getPrototypeOf(target) -var $export = _dereq_(62); -var getProto = _dereq_(105); -var anObject = _dereq_(38); - -$export($export.S, 'Reflect', { - getPrototypeOf: function getPrototypeOf(target) { - return getProto(anObject(target)); - } -}); - -},{"105":105,"38":38,"62":62}],240:[function(_dereq_,module,exports){ -// 26.1.6 Reflect.get(target, propertyKey [, receiver]) -var gOPD = _dereq_(101); -var getPrototypeOf = _dereq_(105); -var has = _dereq_(71); -var $export = _dereq_(62); -var isObject = _dereq_(81); -var anObject = _dereq_(38); - -function get(target, propertyKey /* , receiver */) { - var receiver = arguments.length < 3 ? target : arguments[2]; - var desc, proto; - if (anObject(target) === receiver) return target[propertyKey]; - if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value') - ? desc.value - : desc.get !== undefined - ? desc.get.call(receiver) - : undefined; - if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver); -} - -$export($export.S, 'Reflect', { get: get }); - -},{"101":101,"105":105,"38":38,"62":62,"71":71,"81":81}],241:[function(_dereq_,module,exports){ -// 26.1.9 Reflect.has(target, propertyKey) -var $export = _dereq_(62); - -$export($export.S, 'Reflect', { - has: function has(target, propertyKey) { - return propertyKey in target; - } -}); - -},{"62":62}],242:[function(_dereq_,module,exports){ -// 26.1.10 Reflect.isExtensible(target) -var $export = _dereq_(62); -var anObject = _dereq_(38); -var $isExtensible = Object.isExtensible; - -$export($export.S, 'Reflect', { - isExtensible: function isExtensible(target) { - anObject(target); - return $isExtensible ? $isExtensible(target) : true; - } -}); - -},{"38":38,"62":62}],243:[function(_dereq_,module,exports){ -// 26.1.11 Reflect.ownKeys(target) -var $export = _dereq_(62); - -$export($export.S, 'Reflect', { ownKeys: _dereq_(111) }); - -},{"111":111,"62":62}],244:[function(_dereq_,module,exports){ -// 26.1.12 Reflect.preventExtensions(target) -var $export = _dereq_(62); -var anObject = _dereq_(38); -var $preventExtensions = Object.preventExtensions; - -$export($export.S, 'Reflect', { - preventExtensions: function preventExtensions(target) { - anObject(target); - try { - if ($preventExtensions) $preventExtensions(target); - return true; - } catch (e) { - return false; - } - } -}); - -},{"38":38,"62":62}],245:[function(_dereq_,module,exports){ -// 26.1.14 Reflect.setPrototypeOf(target, proto) -var $export = _dereq_(62); -var setProto = _dereq_(122); - -if (setProto) $export($export.S, 'Reflect', { - setPrototypeOf: function setPrototypeOf(target, proto) { - setProto.check(target, proto); - try { - setProto.set(target, proto); - return true; - } catch (e) { - return false; - } - } -}); - -},{"122":122,"62":62}],246:[function(_dereq_,module,exports){ -// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) -var dP = _dereq_(99); -var gOPD = _dereq_(101); -var getPrototypeOf = _dereq_(105); -var has = _dereq_(71); -var $export = _dereq_(62); -var createDesc = _dereq_(116); -var anObject = _dereq_(38); -var isObject = _dereq_(81); - -function set(target, propertyKey, V /* , receiver */) { - var receiver = arguments.length < 4 ? target : arguments[3]; - var ownDesc = gOPD.f(anObject(target), propertyKey); - var existingDescriptor, proto; - if (!ownDesc) { - if (isObject(proto = getPrototypeOf(target))) { - return set(proto, propertyKey, V, receiver); - } - ownDesc = createDesc(0); - } - if (has(ownDesc, 'value')) { - if (ownDesc.writable === false || !isObject(receiver)) return false; - if (existingDescriptor = gOPD.f(receiver, propertyKey)) { - if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; - existingDescriptor.value = V; - dP.f(receiver, propertyKey, existingDescriptor); - } else dP.f(receiver, propertyKey, createDesc(0, V)); - return true; - } - return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); -} - -$export($export.S, 'Reflect', { set: set }); - -},{"101":101,"105":105,"116":116,"38":38,"62":62,"71":71,"81":81,"99":99}],247:[function(_dereq_,module,exports){ -var global = _dereq_(70); -var inheritIfRequired = _dereq_(75); -var dP = _dereq_(99).f; -var gOPN = _dereq_(103).f; -var isRegExp = _dereq_(82); -var $flags = _dereq_(66); -var $RegExp = global.RegExp; -var Base = $RegExp; -var proto = $RegExp.prototype; -var re1 = /a/g; -var re2 = /a/g; -// "new" creates a new object, old webkit buggy here -var CORRECT_NEW = new $RegExp(re1) !== re1; - -if (_dereq_(58) && (!CORRECT_NEW || _dereq_(64)(function () { - re2[_dereq_(152)('match')] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; -}))) { - $RegExp = function RegExp(p, f) { - var tiRE = this instanceof $RegExp; - var piRE = isRegExp(p); - var fiU = f === undefined; - return !tiRE && piRE && p.constructor === $RegExp && fiU ? p - : inheritIfRequired(CORRECT_NEW - ? new Base(piRE && !fiU ? p.source : p, f) - : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) - , tiRE ? this : proto, $RegExp); - }; - var proxy = function (key) { - key in $RegExp || dP($RegExp, key, { - configurable: true, - get: function () { return Base[key]; }, - set: function (it) { Base[key] = it; } - }); - }; - for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); - proto.constructor = $RegExp; - $RegExp.prototype = proto; - _dereq_(118)(global, 'RegExp', $RegExp); -} - -_dereq_(123)('RegExp'); - -},{"103":103,"118":118,"123":123,"152":152,"58":58,"64":64,"66":66,"70":70,"75":75,"82":82,"99":99}],248:[function(_dereq_,module,exports){ -'use strict'; -var regexpExec = _dereq_(120); -_dereq_(62)({ - target: 'RegExp', - proto: true, - forced: regexpExec !== /./.exec -}, { - exec: regexpExec -}); - -},{"120":120,"62":62}],249:[function(_dereq_,module,exports){ -// 21.2.5.3 get RegExp.prototype.flags() -if (_dereq_(58) && /./g.flags != 'g') _dereq_(99).f(RegExp.prototype, 'flags', { - configurable: true, - get: _dereq_(66) -}); - -},{"58":58,"66":66,"99":99}],250:[function(_dereq_,module,exports){ -'use strict'; - -var anObject = _dereq_(38); -var toLength = _dereq_(141); -var advanceStringIndex = _dereq_(36); -var regExpExec = _dereq_(119); - -// @@match logic -_dereq_(65)('match', 1, function (defined, MATCH, $match, maybeCallNative) { - return [ - // `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[MATCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, - // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative($match, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - if (!rx.global) return regExpExec(rx, S); - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - return n === 0 ? null : A; - } - ]; -}); - -},{"119":119,"141":141,"36":36,"38":38,"65":65}],251:[function(_dereq_,module,exports){ -'use strict'; - -var anObject = _dereq_(38); -var toObject = _dereq_(142); -var toLength = _dereq_(141); -var toInteger = _dereq_(139); -var advanceStringIndex = _dereq_(36); -var regExpExec = _dereq_(119); -var max = Math.max; -var min = Math.min; -var floor = Math.floor; -var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; -var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; - -var maybeToString = function (it) { - return it === undefined ? it : String(it); -}; - -// @@replace logic -_dereq_(65)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { - return [ - // `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = defined(this); - var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; - return fn !== undefined - ? fn.call(searchValue, O, replaceValue) - : $replace.call(String(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - var res = maybeCallNative($replace, regexp, this, replaceValue); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - var global = rx.global; - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - var results = []; - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - results.push(result); - if (!global) break; - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - return accumulatedResult + S.slice(nextSourcePosition); - } - ]; - - // https://tc39.github.io/ecma262/#sec-getsubstitution - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return $replace.call(replacement, symbols, function (match, ch) { - var capture; - switch (ch.charAt(0)) { - case '$': return '$'; - case '&': return matched; - case '`': return str.slice(0, position); - case "'": return str.slice(tailPos); - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - } -}); - -},{"119":119,"139":139,"141":141,"142":142,"36":36,"38":38,"65":65}],252:[function(_dereq_,module,exports){ -'use strict'; - -var anObject = _dereq_(38); -var sameValue = _dereq_(121); -var regExpExec = _dereq_(119); - -// @@search logic -_dereq_(65)('search', 1, function (defined, SEARCH, $search, maybeCallNative) { - return [ - // `String.prototype.search` method - // https://tc39.github.io/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[SEARCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); - }, - // `RegExp.prototype[@@search]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search - function (regexp) { - var res = maybeCallNative($search, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - } - ]; -}); - -},{"119":119,"121":121,"38":38,"65":65}],253:[function(_dereq_,module,exports){ -'use strict'; - -var isRegExp = _dereq_(82); -var anObject = _dereq_(38); -var speciesConstructor = _dereq_(127); -var advanceStringIndex = _dereq_(36); -var toLength = _dereq_(141); -var callRegExpExec = _dereq_(119); -var regexpExec = _dereq_(120); -var fails = _dereq_(64); -var $min = Math.min; -var $push = [].push; -var $SPLIT = 'split'; -var LENGTH = 'length'; -var LAST_INDEX = 'lastIndex'; -var MAX_UINT32 = 0xffffffff; - -// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError -var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); - -// @@split logic -_dereq_(65)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { - var internalSplit; - if ( - 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || - 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || - 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || - '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || - '.'[$SPLIT](/()()/)[LENGTH] > 1 || - ''[$SPLIT](/.?/)[LENGTH] - ) { - // based on es5-shim implementation, need to rework it - internalSplit = function (separator, limit) { - var string = String(this); - if (separator === undefined && limit === 0) return []; - // If `separator` is not a regex, use native split - if (!isRegExp(separator)) return $split.call(string, separator, limit); - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + - (separator.multiline ? 'm' : '') + - (separator.unicode ? 'u' : '') + - (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; - var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; - // Make `global` and avoid `lastIndex` issues by working with a copy - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var match, lastIndex, lastLength; - while (match = regexpExec.call(separatorCopy, string)) { - lastIndex = separatorCopy[LAST_INDEX]; - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); - lastLength = match[0][LENGTH]; - lastLastIndex = lastIndex; - if (output[LENGTH] >= splitLimit) break; - } - if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop - } - if (lastLastIndex === string[LENGTH]) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; - }; - // Chakra, V8 - } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { - internalSplit = function (separator, limit) { - return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); - }; - } else { - internalSplit = $split; - } - - return [ - // `String.prototype.split` method - // https://tc39.github.io/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = defined(this); - var splitter = separator == undefined ? undefined : separator[SPLIT]; - return splitter !== undefined - ? splitter.call(separator, O, limit) - : internalSplit.call(String(O), separator, limit); - }, - // `RegExp.prototype[@@split]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (regexp, limit) { - var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var C = speciesConstructor(rx, RegExp); - - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + - (rx.multiline ? 'm' : '') + - (rx.unicode ? 'u' : '') + - (SUPPORTS_Y ? 'y' : 'g'); - - // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - while (q < S.length) { - splitter.lastIndex = SUPPORTS_Y ? q : 0; - var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); - var e; - if ( - z === null || - (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p - ) { - q = advanceStringIndex(S, q, unicodeMatching); - } else { - A.push(S.slice(p, q)); - if (A.length === lim) return A; - for (var i = 1; i <= z.length - 1; i++) { - A.push(z[i]); - if (A.length === lim) return A; - } - q = p = e; - } - } - A.push(S.slice(p)); - return A; - } - ]; -}); - -},{"119":119,"120":120,"127":127,"141":141,"36":36,"38":38,"64":64,"65":65,"82":82}],254:[function(_dereq_,module,exports){ -'use strict'; -_dereq_(249); -var anObject = _dereq_(38); -var $flags = _dereq_(66); -var DESCRIPTORS = _dereq_(58); -var TO_STRING = 'toString'; -var $toString = /./[TO_STRING]; - -var define = function (fn) { - _dereq_(118)(RegExp.prototype, TO_STRING, fn, true); -}; - -// 21.2.5.14 RegExp.prototype.toString() -if (_dereq_(64)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { - define(function toString() { - var R = anObject(this); - return '/'.concat(R.source, '/', - 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); - }); -// FF44- RegExp#toString has a wrong name -} else if ($toString.name != TO_STRING) { - define(function toString() { - return $toString.call(this); - }); -} - -},{"118":118,"249":249,"38":38,"58":58,"64":64,"66":66}],255:[function(_dereq_,module,exports){ -'use strict'; -var strong = _dereq_(49); -var validate = _dereq_(149); -var SET = 'Set'; - -// 23.2 Set Objects -module.exports = _dereq_(51)(SET, function (get) { - return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); - } -}, strong); - -},{"149":149,"49":49,"51":51}],256:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.2 String.prototype.anchor(name) -_dereq_(131)('anchor', function (createHTML) { - return function anchor(name) { - return createHTML(this, 'a', 'name', name); - }; -}); - -},{"131":131}],257:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.3 String.prototype.big() -_dereq_(131)('big', function (createHTML) { - return function big() { - return createHTML(this, 'big', '', ''); - }; -}); - -},{"131":131}],258:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.4 String.prototype.blink() -_dereq_(131)('blink', function (createHTML) { - return function blink() { - return createHTML(this, 'blink', '', ''); - }; -}); - -},{"131":131}],259:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.5 String.prototype.bold() -_dereq_(131)('bold', function (createHTML) { - return function bold() { - return createHTML(this, 'b', '', ''); - }; -}); - -},{"131":131}],260:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $at = _dereq_(129)(false); -$export($export.P, 'String', { - // 21.1.3.3 String.prototype.codePointAt(pos) - codePointAt: function codePointAt(pos) { - return $at(this, pos); - } -}); - -},{"129":129,"62":62}],261:[function(_dereq_,module,exports){ -// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) -'use strict'; -var $export = _dereq_(62); -var toLength = _dereq_(141); -var context = _dereq_(130); -var ENDS_WITH = 'endsWith'; -var $endsWith = ''[ENDS_WITH]; - -$export($export.P + $export.F * _dereq_(63)(ENDS_WITH), 'String', { - endsWith: function endsWith(searchString /* , endPosition = @length */) { - var that = context(this, searchString, ENDS_WITH); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); - var search = String(searchString); - return $endsWith - ? $endsWith.call(that, search, end) - : that.slice(end - search.length, end) === search; - } -}); - -},{"130":130,"141":141,"62":62,"63":63}],262:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.6 String.prototype.fixed() -_dereq_(131)('fixed', function (createHTML) { - return function fixed() { - return createHTML(this, 'tt', '', ''); - }; -}); - -},{"131":131}],263:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.7 String.prototype.fontcolor(color) -_dereq_(131)('fontcolor', function (createHTML) { - return function fontcolor(color) { - return createHTML(this, 'font', 'color', color); - }; -}); - -},{"131":131}],264:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.8 String.prototype.fontsize(size) -_dereq_(131)('fontsize', function (createHTML) { - return function fontsize(size) { - return createHTML(this, 'font', 'size', size); - }; -}); - -},{"131":131}],265:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var toAbsoluteIndex = _dereq_(137); -var fromCharCode = String.fromCharCode; -var $fromCodePoint = String.fromCodePoint; - -// length should be 1, old FF problem -$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { - // 21.1.2.2 String.fromCodePoint(...codePoints) - fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars - var res = []; - var aLen = arguments.length; - var i = 0; - var code; - while (aLen > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); - res.push(code < 0x10000 - ? fromCharCode(code) - : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) - ); - } return res.join(''); - } -}); - -},{"137":137,"62":62}],266:[function(_dereq_,module,exports){ -// 21.1.3.7 String.prototype.includes(searchString, position = 0) -'use strict'; -var $export = _dereq_(62); -var context = _dereq_(130); -var INCLUDES = 'includes'; - -$export($export.P + $export.F * _dereq_(63)(INCLUDES), 'String', { - includes: function includes(searchString /* , position = 0 */) { - return !!~context(this, searchString, INCLUDES) - .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); - } -}); - -},{"130":130,"62":62,"63":63}],267:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.9 String.prototype.italics() -_dereq_(131)('italics', function (createHTML) { - return function italics() { - return createHTML(this, 'i', '', ''); - }; -}); - -},{"131":131}],268:[function(_dereq_,module,exports){ -'use strict'; -var $at = _dereq_(129)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -_dereq_(85)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - -},{"129":129,"85":85}],269:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.10 String.prototype.link(url) -_dereq_(131)('link', function (createHTML) { - return function link(url) { - return createHTML(this, 'a', 'href', url); - }; -}); - -},{"131":131}],270:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var toIObject = _dereq_(140); -var toLength = _dereq_(141); - -$export($export.S, 'String', { - // 21.1.2.4 String.raw(callSite, ...substitutions) - raw: function raw(callSite) { - var tpl = toIObject(callSite.raw); - var len = toLength(tpl.length); - var aLen = arguments.length; - var res = []; - var i = 0; - while (len > i) { - res.push(String(tpl[i++])); - if (i < aLen) res.push(String(arguments[i])); - } return res.join(''); - } -}); - -},{"140":140,"141":141,"62":62}],271:[function(_dereq_,module,exports){ -var $export = _dereq_(62); - -$export($export.P, 'String', { - // 21.1.3.13 String.prototype.repeat(count) - repeat: _dereq_(133) -}); - -},{"133":133,"62":62}],272:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.11 String.prototype.small() -_dereq_(131)('small', function (createHTML) { - return function small() { - return createHTML(this, 'small', '', ''); - }; -}); - -},{"131":131}],273:[function(_dereq_,module,exports){ -// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) -'use strict'; -var $export = _dereq_(62); -var toLength = _dereq_(141); -var context = _dereq_(130); -var STARTS_WITH = 'startsWith'; -var $startsWith = ''[STARTS_WITH]; - -$export($export.P + $export.F * _dereq_(63)(STARTS_WITH), 'String', { - startsWith: function startsWith(searchString /* , position = 0 */) { - var that = context(this, searchString, STARTS_WITH); - var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return $startsWith - ? $startsWith.call(that, search, index) - : that.slice(index, index + search.length) === search; - } -}); - -},{"130":130,"141":141,"62":62,"63":63}],274:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.12 String.prototype.strike() -_dereq_(131)('strike', function (createHTML) { - return function strike() { - return createHTML(this, 'strike', '', ''); - }; -}); - -},{"131":131}],275:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.13 String.prototype.sub() -_dereq_(131)('sub', function (createHTML) { - return function sub() { - return createHTML(this, 'sub', '', ''); - }; -}); - -},{"131":131}],276:[function(_dereq_,module,exports){ -'use strict'; -// B.2.3.14 String.prototype.sup() -_dereq_(131)('sup', function (createHTML) { - return function sup() { - return createHTML(this, 'sup', '', ''); - }; -}); - -},{"131":131}],277:[function(_dereq_,module,exports){ -'use strict'; -// 21.1.3.25 String.prototype.trim() -_dereq_(134)('trim', function ($trim) { - return function trim() { - return $trim(this, 3); - }; -}); - -},{"134":134}],278:[function(_dereq_,module,exports){ -'use strict'; -// ECMAScript 6 symbols shim -var global = _dereq_(70); -var has = _dereq_(71); -var DESCRIPTORS = _dereq_(58); -var $export = _dereq_(62); -var redefine = _dereq_(118); -var META = _dereq_(94).KEY; -var $fails = _dereq_(64); -var shared = _dereq_(126); -var setToStringTag = _dereq_(124); -var uid = _dereq_(147); -var wks = _dereq_(152); -var wksExt = _dereq_(151); -var wksDefine = _dereq_(150); -var enumKeys = _dereq_(61); -var isArray = _dereq_(79); -var anObject = _dereq_(38); -var isObject = _dereq_(81); -var toObject = _dereq_(142); -var toIObject = _dereq_(140); -var toPrimitive = _dereq_(143); -var createDesc = _dereq_(116); -var _create = _dereq_(98); -var gOPNExt = _dereq_(102); -var $GOPD = _dereq_(101); -var $GOPS = _dereq_(104); -var $DP = _dereq_(99); -var $keys = _dereq_(107); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - _dereq_(103).f = gOPNExt.f = $getOwnPropertyNames; - _dereq_(108).f = $propertyIsEnumerable; - $GOPS.f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !_dereq_(89)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives -// https://bugs.chromium.org/p/v8/issues/detail?id=3443 -var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); - -$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return $GOPS.f(toObject(it)); - } -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || _dereq_(72)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - -},{"101":101,"102":102,"103":103,"104":104,"107":107,"108":108,"116":116,"118":118,"124":124,"126":126,"140":140,"142":142,"143":143,"147":147,"150":150,"151":151,"152":152,"38":38,"58":58,"61":61,"62":62,"64":64,"70":70,"71":71,"72":72,"79":79,"81":81,"89":89,"94":94,"98":98,"99":99}],279:[function(_dereq_,module,exports){ -'use strict'; -var $export = _dereq_(62); -var $typed = _dereq_(146); -var buffer = _dereq_(145); -var anObject = _dereq_(38); -var toAbsoluteIndex = _dereq_(137); -var toLength = _dereq_(141); -var isObject = _dereq_(81); -var ArrayBuffer = _dereq_(70).ArrayBuffer; -var speciesConstructor = _dereq_(127); -var $ArrayBuffer = buffer.ArrayBuffer; -var $DataView = buffer.DataView; -var $isView = $typed.ABV && ArrayBuffer.isView; -var $slice = $ArrayBuffer.prototype.slice; -var VIEW = $typed.VIEW; -var ARRAY_BUFFER = 'ArrayBuffer'; - -$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer }); - -$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, { - // 24.1.3.1 ArrayBuffer.isView(arg) - isView: function isView(it) { - return $isView && $isView(it) || isObject(it) && VIEW in it; - } -}); - -$export($export.P + $export.U + $export.F * _dereq_(64)(function () { - return !new $ArrayBuffer(2).slice(1, undefined).byteLength; -}), ARRAY_BUFFER, { - // 24.1.4.3 ArrayBuffer.prototype.slice(start, end) - slice: function slice(start, end) { - if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix - var len = anObject(this).byteLength; - var first = toAbsoluteIndex(start, len); - var fin = toAbsoluteIndex(end === undefined ? len : end, len); - var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first)); - var viewS = new $DataView(this); - var viewT = new $DataView(result); - var index = 0; - while (first < fin) { - viewT.setUint8(index++, viewS.getUint8(first++)); - } return result; - } -}); - -_dereq_(123)(ARRAY_BUFFER); - -},{"123":123,"127":127,"137":137,"141":141,"145":145,"146":146,"38":38,"62":62,"64":64,"70":70,"81":81}],280:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -$export($export.G + $export.W + $export.F * !_dereq_(146).ABV, { - DataView: _dereq_(145).DataView -}); - -},{"145":145,"146":146,"62":62}],281:[function(_dereq_,module,exports){ -_dereq_(144)('Float32', 4, function (init) { - return function Float32Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],282:[function(_dereq_,module,exports){ -_dereq_(144)('Float64', 8, function (init) { - return function Float64Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],283:[function(_dereq_,module,exports){ -_dereq_(144)('Int16', 2, function (init) { - return function Int16Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],284:[function(_dereq_,module,exports){ -_dereq_(144)('Int32', 4, function (init) { - return function Int32Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],285:[function(_dereq_,module,exports){ -_dereq_(144)('Int8', 1, function (init) { - return function Int8Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],286:[function(_dereq_,module,exports){ -_dereq_(144)('Uint16', 2, function (init) { - return function Uint16Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],287:[function(_dereq_,module,exports){ -_dereq_(144)('Uint32', 4, function (init) { - return function Uint32Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],288:[function(_dereq_,module,exports){ -_dereq_(144)('Uint8', 1, function (init) { - return function Uint8Array(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}); - -},{"144":144}],289:[function(_dereq_,module,exports){ -_dereq_(144)('Uint8', 1, function (init) { - return function Uint8ClampedArray(data, byteOffset, length) { - return init(this, data, byteOffset, length); - }; -}, true); - -},{"144":144}],290:[function(_dereq_,module,exports){ -'use strict'; -var global = _dereq_(70); -var each = _dereq_(42)(0); -var redefine = _dereq_(118); -var meta = _dereq_(94); -var assign = _dereq_(97); -var weak = _dereq_(50); -var isObject = _dereq_(81); -var validate = _dereq_(149); -var NATIVE_WEAK_MAP = _dereq_(149); -var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; -var WEAK_MAP = 'WeakMap'; -var getWeak = meta.getWeak; -var isExtensible = Object.isExtensible; -var uncaughtFrozenStore = weak.ufstore; -var InternalMap; - -var wrapper = function (get) { - return function WeakMap() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; -}; - -var methods = { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - if (isObject(key)) { - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); - return data ? data[this._i] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return weak.def(validate(this, WEAK_MAP), key, value); - } -}; - -// 23.3 WeakMap Objects -var $WeakMap = module.exports = _dereq_(51)(WEAK_MAP, wrapper, methods, weak, true, true); - -// IE11 WeakMap frozen keys fix -if (NATIVE_WEAK_MAP && IS_IE11) { - InternalMap = weak.getConstructor(wrapper, WEAK_MAP); - assign(InternalMap.prototype, methods); - meta.NEED = true; - each(['delete', 'has', 'get', 'set'], function (key) { - var proto = $WeakMap.prototype; - var method = proto[key]; - redefine(proto, key, function (a, b) { - // store frozen objects on internal weakmap shim - if (isObject(a) && !isExtensible(a)) { - if (!this._f) this._f = new InternalMap(); - var result = this._f[key](a, b); - return key == 'set' ? this : result; - // store all the rest on native weakmap - } return method.call(this, a, b); - }); - }); -} - -},{"118":118,"149":149,"42":42,"50":50,"51":51,"70":70,"81":81,"94":94,"97":97}],291:[function(_dereq_,module,exports){ -'use strict'; -var weak = _dereq_(50); -var validate = _dereq_(149); -var WEAK_SET = 'WeakSet'; - -// 23.4 WeakSet Objects -_dereq_(51)(WEAK_SET, function (get) { - return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return weak.def(validate(this, WEAK_SET), value, true); - } -}, weak, false, true); - -},{"149":149,"50":50,"51":51}],292:[function(_dereq_,module,exports){ -'use strict'; -// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap -var $export = _dereq_(62); -var flattenIntoArray = _dereq_(67); -var toObject = _dereq_(142); -var toLength = _dereq_(141); -var aFunction = _dereq_(33); -var arraySpeciesCreate = _dereq_(45); - -$export($export.P, 'Array', { - flatMap: function flatMap(callbackfn /* , thisArg */) { - var O = toObject(this); - var sourceLen, A; - aFunction(callbackfn); - sourceLen = toLength(O.length); - A = arraySpeciesCreate(O, 0); - flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]); - return A; - } -}); - -_dereq_(35)('flatMap'); - -},{"141":141,"142":142,"33":33,"35":35,"45":45,"62":62,"67":67}],293:[function(_dereq_,module,exports){ -'use strict'; -// https://github.com/tc39/Array.prototype.includes -var $export = _dereq_(62); -var $includes = _dereq_(41)(true); - -$export($export.P, 'Array', { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } -}); - -_dereq_(35)('includes'); - -},{"35":35,"41":41,"62":62}],294:[function(_dereq_,module,exports){ -// https://github.com/tc39/proposal-object-values-entries -var $export = _dereq_(62); -var $entries = _dereq_(110)(true); - -$export($export.S, 'Object', { - entries: function entries(it) { - return $entries(it); - } -}); - -},{"110":110,"62":62}],295:[function(_dereq_,module,exports){ -// https://github.com/tc39/proposal-object-getownpropertydescriptors -var $export = _dereq_(62); -var ownKeys = _dereq_(111); -var toIObject = _dereq_(140); -var gOPD = _dereq_(101); -var createProperty = _dereq_(53); - -$export($export.S, 'Object', { - getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { - var O = toIObject(object); - var getDesc = gOPD.f; - var keys = ownKeys(O); - var result = {}; - var i = 0; - var key, desc; - while (keys.length > i) { - desc = getDesc(O, key = keys[i++]); - if (desc !== undefined) createProperty(result, key, desc); - } - return result; - } -}); - -},{"101":101,"111":111,"140":140,"53":53,"62":62}],296:[function(_dereq_,module,exports){ -// https://github.com/tc39/proposal-object-values-entries -var $export = _dereq_(62); -var $values = _dereq_(110)(false); - -$export($export.S, 'Object', { - values: function values(it) { - return $values(it); - } -}); - -},{"110":110,"62":62}],297:[function(_dereq_,module,exports){ -// https://github.com/tc39/proposal-promise-finally -'use strict'; -var $export = _dereq_(62); -var core = _dereq_(52); -var global = _dereq_(70); -var speciesConstructor = _dereq_(127); -var promiseResolve = _dereq_(115); - -$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { - var C = speciesConstructor(this, core.Promise || global.Promise); - var isFunction = typeof onFinally == 'function'; - return this.then( - isFunction ? function (x) { - return promiseResolve(C, onFinally()).then(function () { return x; }); - } : onFinally, - isFunction ? function (e) { - return promiseResolve(C, onFinally()).then(function () { throw e; }); - } : onFinally - ); -} }); - -},{"115":115,"127":127,"52":52,"62":62,"70":70}],298:[function(_dereq_,module,exports){ -'use strict'; -// https://github.com/tc39/proposal-string-pad-start-end -var $export = _dereq_(62); -var $pad = _dereq_(132); -var userAgent = _dereq_(148); - -// https://github.com/zloirock/core-js/issues/280 -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); - -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padEnd: function padEnd(maxLength /* , fillString = ' ' */) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); - } -}); - -},{"132":132,"148":148,"62":62}],299:[function(_dereq_,module,exports){ -'use strict'; -// https://github.com/tc39/proposal-string-pad-start-end -var $export = _dereq_(62); -var $pad = _dereq_(132); -var userAgent = _dereq_(148); - -// https://github.com/zloirock/core-js/issues/280 -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); - -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padStart: function padStart(maxLength /* , fillString = ' ' */) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); - } -}); - -},{"132":132,"148":148,"62":62}],300:[function(_dereq_,module,exports){ -'use strict'; -// https://github.com/sebmarkbage/ecmascript-string-left-right-trim -_dereq_(134)('trimLeft', function ($trim) { - return function trimLeft() { - return $trim(this, 1); - }; -}, 'trimStart'); - -},{"134":134}],301:[function(_dereq_,module,exports){ -'use strict'; -// https://github.com/sebmarkbage/ecmascript-string-left-right-trim -_dereq_(134)('trimRight', function ($trim) { - return function trimRight() { - return $trim(this, 2); - }; -}, 'trimEnd'); - -},{"134":134}],302:[function(_dereq_,module,exports){ -_dereq_(150)('asyncIterator'); - -},{"150":150}],303:[function(_dereq_,module,exports){ -var $iterators = _dereq_(164); -var getKeys = _dereq_(107); -var redefine = _dereq_(118); -var global = _dereq_(70); -var hide = _dereq_(72); -var Iterators = _dereq_(88); -var wks = _dereq_(152); -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; - -var DOMIterables = { - CSSRuleList: true, // TODO: Not spec compliant, should be false. - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, // TODO: Not spec compliant, should be false. - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, // TODO: Not spec compliant, should be false. - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; - -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); - } -} - -},{"107":107,"118":118,"152":152,"164":164,"70":70,"72":72,"88":88}],304:[function(_dereq_,module,exports){ -var $export = _dereq_(62); -var $task = _dereq_(136); -$export($export.G + $export.B, { - setImmediate: $task.set, - clearImmediate: $task.clear -}); - -},{"136":136,"62":62}],305:[function(_dereq_,module,exports){ -// ie9- setTimeout & setInterval additional parameters fix -var global = _dereq_(70); -var $export = _dereq_(62); -var userAgent = _dereq_(148); -var slice = [].slice; -var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check -var wrap = function (set) { - return function (fn, time /* , ...args */) { - var boundArgs = arguments.length > 2; - var args = boundArgs ? slice.call(arguments, 2) : false; - return set(boundArgs ? function () { - // eslint-disable-next-line no-new-func - (typeof fn == 'function' ? fn : Function(fn)).apply(this, args); - } : fn, time); - }; -}; -$export($export.G + $export.B + $export.F * MSIE, { - setTimeout: wrap(global.setTimeout), - setInterval: wrap(global.setInterval) -}); - -},{"148":148,"62":62,"70":70}],306:[function(_dereq_,module,exports){ -_dereq_(305); -_dereq_(304); -_dereq_(303); -module.exports = _dereq_(52); - -},{"303":303,"304":304,"305":305,"52":52}],307:[function(_dereq_,module,exports){ -/** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -var runtime = (function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; // More compressible than void 0. - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function wrap(innerFn, outerFn, self, tryLocsList) { - // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - - // The ._invoke method unifies the implementations of the .next, - // .throw, and .return methods. - generator._invoke = makeInvokeMethod(innerFn, self, context); - - return generator; - } - exports.wrap = wrap; - - // Try/catch helper to minimize deoptimizations. Returns a completion - // record like context.tryEntries[i].completion. This interface could - // have been (and was previously) designed to take a closure to be - // invoked without arguments, but in all the cases we care about we - // already have an existing method we want to call, so there's no need - // to create a new function object. We can even get away with assuming - // the method takes exactly one argument, since that happens to be true - // in every case, so we don't have to touch the arguments object. The - // only additional allocation required is the completion record, which - // has a stable shape and so hopefully should be cheap to allocate. - function tryCatch(fn, obj, arg) { - try { - return { type: "normal", arg: fn.call(obj, arg) }; - } catch (err) { - return { type: "throw", arg: err }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - - // Returning this object from the innerFn has the same effect as - // breaking out of the dispatch switch statement. - var ContinueSentinel = {}; - - // Dummy constructor functions that we use as the .constructor and - // .constructor.prototype properties for functions that return Generator - // objects. For full spec compliance, you may wish to configure your - // minifier not to mangle the names of these two functions. - function Generator() {} - function GeneratorFunction() {} - function GeneratorFunctionPrototype() {} - - // This is a polyfill for %IteratorPrototype% for environments that - // don't natively support it. - var IteratorPrototype = {}; - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - if (NativeIteratorPrototype && - NativeIteratorPrototype !== Op && - hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - // This environment has a native %IteratorPrototype%; use it instead - // of the polyfill. - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = - Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunctionPrototype[toStringTagSymbol] = - GeneratorFunction.displayName = "GeneratorFunction"; - - // Helper for defining the .next, .throw, and .return methods of the - // Iterator interface in terms of a single ._invoke method. - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function(method) { - prototype[method] = function(arg) { - return this._invoke(method, arg); - }; - }); - } - - exports.isGeneratorFunction = function(genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor - ? ctor === GeneratorFunction || - // For the native GeneratorFunction constructor, the best we can - // do is to check its .name property. - (ctor.displayName || ctor.name) === "GeneratorFunction" - : false; - }; - - exports.mark = function(genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - if (!(toStringTagSymbol in genFun)) { - genFun[toStringTagSymbol] = "GeneratorFunction"; - } - } - genFun.prototype = Object.create(Gp); - return genFun; - }; - - // Within the body of any async function, `await x` is transformed to - // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test - // `hasOwn.call(value, "__await")` to determine if the yielded value is - // meant to be awaited. - exports.awrap = function(arg) { - return { __await: arg }; - }; - - function AsyncIterator(generator, PromiseImpl) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - if (value && - typeof value === "object" && - hasOwn.call(value, "__await")) { - return PromiseImpl.resolve(value.__await).then(function(value) { - invoke("next", value, resolve, reject); - }, function(err) { - invoke("throw", err, resolve, reject); - }); - } - - return PromiseImpl.resolve(value).then(function(unwrapped) { - // When a yielded Promise is resolved, its final value becomes - // the .value of the Promise<{value,done}> result for the - // current iteration. - result.value = unwrapped; - resolve(result); - }, function(error) { - // If a rejected Promise was yielded, throw the rejection back - // into the async generator function so it can be handled there. - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new PromiseImpl(function(resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = - // If enqueue has been called before, then we want to wait until - // all previous Promises have been resolved before calling invoke, - // so that results are always delivered in the correct order. If - // enqueue has not been called before, then it is important to - // call invoke immediately, without waiting on a callback to fire, - // so that the async generator function has the opportunity to do - // any necessary setup in a predictable way. This predictability - // is why the Promise constructor synchronously invokes its - // executor callback, and why async functions synchronously - // execute code before the first await. Since we implement simple - // async functions in terms of async generators, it is especially - // important to get this right, even though it requires care. - previousPromise ? previousPromise.then( - callInvokeWithMethodAndArg, - // Avoid propagating failures to Promises returned by later - // invocations of the iterator. - callInvokeWithMethodAndArg - ) : callInvokeWithMethodAndArg(); - } - - // Define the unified helper method that is used to implement .next, - // .throw, and .return (see defineIteratorMethods). - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - exports.AsyncIterator = AsyncIterator; - - // Note that simple async functions are implemented on top of - // AsyncIterator objects; they just return a Promise for the value of - // the final result produced by the iterator. - exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { - if (PromiseImpl === void 0) PromiseImpl = Promise; - - var iter = new AsyncIterator( - wrap(innerFn, outerFn, self, tryLocsList), - PromiseImpl - ); - - return exports.isGeneratorFunction(outerFn) - ? iter // If outerFn is a generator, return the full iterator. - : iter.next().then(function(result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - - // Be forgiving, per 25.3.3.3.3 of the spec: - // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - // Setting context._sent for legacy support of Babel's - // function.sent implementation. - context.sent = context._sent = context.arg; - - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - - var record = tryCatch(innerFn, self, context); - if (record.type === "normal") { - // If an exception is thrown from innerFn, we leave state === - // GenStateExecuting and loop back for another invocation. - state = context.done - ? GenStateCompleted - : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - - } else if (record.type === "throw") { - state = GenStateCompleted; - // Dispatch the exception by looping back around to the - // context.dispatchException(context.arg) call above. - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - - // Call delegate.iterator[context.method](context.arg) and handle the - // result, either by returning a { value, done } result from the - // delegate iterator, or by modifying context.method and context.arg, - // setting context.delegate to null, and returning the ContinueSentinel. - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - if (method === undefined) { - // A .throw or .return when the delegate iterator has no .throw - // method always terminates the yield* loop. - context.delegate = null; - - if (context.method === "throw") { - // Note: ["return"] must be used for ES3 parsing compatibility. - if (delegate.iterator["return"]) { - // If the delegate iterator has a return method, give it a - // chance to clean up. - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - // If maybeInvokeDelegate(context) changed context.method from - // "return" to "throw", let that override the TypeError below. - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError( - "The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (! info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - // Assign the result of the finished delegate to the temporary - // variable specified by delegate.resultName (see delegateYield). - context[delegate.resultName] = info.value; - - // Resume execution at the desired location (see delegateYield). - context.next = delegate.nextLoc; - - // If context.method was "throw" but the delegate handled the - // exception, let the outer generator proceed normally. If - // context.method was "next", forget context.arg since it has been - // "consumed" by the delegate iterator. If context.method was - // "return", allow the original .return call to continue in the - // outer generator. - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - - } else { - // Re-yield the result returned by the delegate method. - return info; - } - - // The delegate iterator is finished, so forget it and continue with - // the outer generator. - context.delegate = null; - return ContinueSentinel; - } - - // Define Generator.prototype.{next,throw,return} in terms of the - // unified ._invoke helper method. - defineIteratorMethods(Gp); - - Gp[toStringTagSymbol] = "Generator"; - - // A Generator should always return itself as the iterator object when the - // @@iterator function is called on it. Some browsers' implementations of the - // iterator prototype chain incorrectly implement this, causing the Generator - // object to not be returned from this call. This ensures that doesn't happen. - // See https://github.com/facebook/regenerator/issues/274 for more details. - Gp[iteratorSymbol] = function() { - return this; - }; - - Gp.toString = function() { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { tryLoc: locs[0] }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - // The root entry object (effectively a try statement without a catch - // or a finally block) gives us a place to store values thrown from - // locations where there is no enclosing try statement. - this.tryEntries = [{ tryLoc: "root" }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function(object) { - var keys = []; - for (var key in object) { - keys.push(key); - } - keys.reverse(); - - // Rather than returning an object with a next method, we keep - // things simple and return the next function itself. - return function next() { - while (keys.length) { - var key = keys.pop(); - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } - - // To avoid creating an additional object, we just hang the .value - // and .done properties off the next function object itself. This - // also ensures that the minifier will not anonymize the function. - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - - return next; - }; - - return next.next = next; - } - } - - // Return an iterator with no values. - return { next: doneResult }; - } - exports.values = values; - - function doneResult() { - return { value: undefined, done: true }; - } - - Context.prototype = { - constructor: Context, - - reset: function(skipTempReset) { - this.prev = 0; - this.next = 0; - // Resetting context._sent for legacy support of Babel's - // function.sent implementation. - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - - this.method = "next"; - this.arg = undefined; - - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - // Not sure about the optimal order of these conditions: - if (name.charAt(0) === "t" && - hasOwn.call(this, name) && - !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - - stop: function() { - this.done = true; - - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - - dispatchException: function(exception) { - if (this.done) { - throw exception; - } - - var context = this; - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - // If the dispatched exception was caught by a catch block, - // then let that catch block handle the exception normally. - context.method = "next"; - context.arg = undefined; - } - - return !! caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - // Exception thrown outside of any try block that could handle - // it, so set the completion value of the entire function to - // throw the exception. - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - - abrupt: function(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc <= this.prev && - hasOwn.call(entry, "finallyLoc") && - this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && - (type === "break" || - type === "continue") && - finallyEntry.tryLoc <= arg && - arg <= finallyEntry.finallyLoc) { - // Ignore the finally entry if control is not jumping to a - // location outside the try/catch block. - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - - complete: function(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || - record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - - finish: function(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - - "catch": function(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - return thrown; - } - } - - // The context.catch method must only be called with a location - // argument that corresponds to a known catch block. - throw new Error("illegal catch attempt"); - }, - - delegateYield: function(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - // Deliberately forget the last sent value so that we don't - // accidentally pass it on to the delegate. - this.arg = undefined; - } - - return ContinueSentinel; - } - }; - - // Regardless of whether this script is executing as a CommonJS module - // or not, return the runtime object so that we can declare the variable - // regeneratorRuntime in the outer scope, which allows this module to be - // injected easily by `bin/regenerator --include-runtime script.js`. - return exports; - -}( - // If this script is executing as a CommonJS module, use module.exports - // as the regeneratorRuntime namespace. Otherwise create a new empty - // object. Either way, the resulting object will be used to initialize - // the regeneratorRuntime variable at the top of this file. - typeof module === "object" ? module.exports : {} -)); - -try { - regeneratorRuntime = runtime; -} catch (accidentalStrictMode) { - // This module should not be running in strict mode, so the above - // assignment should always work unless something is misconfigured. Just - // in case runtime.js accidentally runs in strict mode, we can escape - // strict mode using a global Function call. This could conceivably fail - // if a Content Security Policy forbids using Function, but in that case - // the proper solution is to fix the accidental strict mode problem. If - // you've misconfigured your bundler to force strict mode and applied a - // CSP to forbid Function, and you're not willing to fix either of those - // problems, please detail your unique predicament in a GitHub issue. - Function("r", "regeneratorRuntime = r")(runtime); -} - -},{}]},{},[1]); diff --git a/src/scripts/site.js b/src/scripts/site.js index 1d82853256..b976cedea0 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -738,7 +738,8 @@ var AppInfo = {}; "webcomponents", "material-icons", "jellyfin-noto", - "page" + "page", + "polyfill" ] }, urlArgs: urlArgs, @@ -746,6 +747,8 @@ var AppInfo = {}; onError: onRequireJsError }); + require(["polyfill"]); + // Expose jQuery globally require(["jQuery"], function(jQuery) { window.$ = jQuery; diff --git a/yarn.lock b/yarn.lock index 01e6b51f13..fe89530a87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8325,6 +8325,13 @@ 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== +page@^1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/page/-/page-1.11.5.tgz#0cfc8608be337f26f4377f31df0787aef0ca1af7" + integrity sha512-0JXUHc7Y8p1cPJQbhZSwaKO3p+bU3Rgny+OM5gJMKHWHvJKan/fsE5RUzEjRQolv9DzPOSVWfSOHz0lLxK19eA== + dependencies: + path-to-regexp "~1.2.1" + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -8509,6 +8516,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.2.1.tgz#b33705c140234d873c8721c7b9fd8b541ed3aff9" + integrity sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k= + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -9820,7 +9834,7 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: +regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== From 6824ed567e1d25bcfa7bf3c5bb974d107e492ee8 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 13 Mar 2020 09:46:11 +0100 Subject: [PATCH 315/449] Fix style in postcss config --- postcss.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index e741d596fc..23159fd295 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,4 @@ -const postcssPresetEnv = require('postcss-preset-env') +const postcssPresetEnv = require('postcss-preset-env'); const cssnano = require('cssnano'); const config = () => ({ @@ -6,6 +6,6 @@ const config = () => ({ postcssPresetEnv(), cssnano() ] -}) +}); module.exports = config From a054cdc037628ccefe1476beb7bea22603603dcb Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 13 Mar 2020 07:26:24 +0000 Subject: [PATCH 316/449] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 84a428f4ad..a70b03a69b 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1502,5 +1502,7 @@ "CopyStreamURLError": "URL kóshirgende qate oryn aldy.", "ButtonSplit": "Bólý", "AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý.", - "AllowFfmpegThrottling": "Qaıta kodtaýdy retteý" + "AllowFfmpegThrottling": "Qaıta kodtaýdy retteý", + "PlaybackErrorNoCompatibleStream": "Klıent profaılyn jasaýda másele oryn aldy jáne server úılesimdi pishiminde tasyǵysh derekterin jibermedi.", + "AllowFfmpegThrottlingHelp": "Qaıta kodtaý nemese qaıta býmalaý aǵymdyq oınatý jaıǵasymynan edáýir alǵa ozǵanda, qor kózderin azdaý tutynatyndaı etip údiristi kidirtedi. Bul jıi izdemeı qaraý kezinde paıdaly. Eger oınatý máseleleri bolsa, ony óshirińiz." } From 6f354fbda2ccb65174a29d288bc74d44447fc8fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2020 22:58:27 +0000 Subject: [PATCH 317/449] Bump acorn from 6.2.1 to 6.4.1 Bumps [acorn](https://github.com/acornjs/acorn) from 6.2.1 to 6.4.1. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](https://github.com/acornjs/acorn/compare/6.2.1...6.4.1) Signed-off-by: dependabot[bot] --- yarn.lock | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f156002c6d..3d842e7f76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -459,9 +459,9 @@ acorn-jsx@^5.1.0: integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" - integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.1.0: version "7.1.0" @@ -3519,6 +3519,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -4609,6 +4614,13 @@ 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== +page@^1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/page/-/page-1.11.5.tgz#0cfc8608be337f26f4377f31df0787aef0ca1af7" + integrity sha512-0JXUHc7Y8p1cPJQbhZSwaKO3p+bU3Rgny+OM5gJMKHWHvJKan/fsE5RUzEjRQolv9DzPOSVWfSOHz0lLxK19eA== + dependencies: + path-to-regexp "~1.2.1" + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -4739,6 +4751,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.2.1.tgz#b33705c140234d873c8721c7b9fd8b541ed3aff9" + integrity sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k= + dependencies: + isarray "0.0.1" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" From b3cd1b81b3d932487602e892cd21024fd2af8cd0 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Fri, 13 Mar 2020 22:49:47 +0000 Subject: [PATCH 318/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index 198318e420..b2ea6df29c 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1142,8 +1142,8 @@ "Share": "Teilen", "ShowAdvancedSettings": "Zeige erweiterte Einstellungen", "ShowIndicatorsFor": "Zeige Indikatoren für:", - "ShowTitle": "Zeige Titel", - "ShowYear": "Zeige Jahr", + "ShowTitle": "Titel anzeigen", + "ShowYear": "Jahr anzeigen", "Shows": "Serien", "Shuffle": "Zufallswiedergabe", "SimultaneousConnectionLimitHelp": "Die maximale Anzahl der parallel erlaubten Streams. 0 für kein Limit.", @@ -1274,7 +1274,7 @@ "Audio": "Audio", "Auto": "Auto", "Banner": "Banner", - "Blacklist": "Blacklist", + "Blacklist": "Sperrliste", "ButtonDownload": "Download", "ButtonFilter": "Filter", "ButtonHome": "Startseite", From 35f255776f92bd12e9aab24a3188ef324f5b5991 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sat, 14 Mar 2020 00:34:39 +0000 Subject: [PATCH 319/449] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 1ea78320d5..3cbff21300 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1464,5 +1464,6 @@ "HeaderNavigation": "Navegação", "CopyStreamURLError": "Houve um erro ao copiar a URL.", "ButtonSplit": "Dividir", - "AskAdminToCreateLibrary": "Peça a um administrador para criar uma biblioteca." + "AskAdminToCreateLibrary": "Peça a um administrador para criar uma biblioteca.", + "AllowFfmpegThrottling": "Limitar transcodificação" } From 223aab3e497b658c32561f7596ff070fb22e890b Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sat, 14 Mar 2020 00:46:09 +0000 Subject: [PATCH 320/449] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 3cbff21300..dcb24a2fcc 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1465,5 +1465,9 @@ "CopyStreamURLError": "Houve um erro ao copiar a URL.", "ButtonSplit": "Dividir", "AskAdminToCreateLibrary": "Peça a um administrador para criar uma biblioteca.", - "AllowFfmpegThrottling": "Limitar transcodificação" + "AllowFfmpegThrottling": "Limitar transcodificação", + "PlaybackErrorNoCompatibleStream": "Houve um erro na criação de perfil do cliente e o servidor não está enviando um formato de mídia compatível.", + "EnableFastImageFadeInHelp": "Habilitar animações rápidas de aparecimento para imagens carregadas", + "LabelDroppedFrames": "Quadros caídos:", + "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux estiver suficientemente avançada da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais proveitoso para quando não há avanço ou retrocesso do vídeo com frequência. Desative se tiver problemas de reprodução." } From 4d06e625a32085111d2b95e87c2fb39d425434d8 Mon Sep 17 00:00:00 2001 From: Andy CHABALIER Date: Sat, 14 Mar 2020 12:13:49 +0000 Subject: [PATCH 321/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a4cdb9df36..da45054243 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1469,6 +1469,6 @@ "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage", - "NoCreatedLibraries": "Il semblerait que vous n’ayez pas encore créé de médiathèque. {0}Voulez-vous en créer une tout de suite ?{1}", + "NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}", "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible." } From f354c827b2b8bec10710ffc82a04ba02af7cc91f Mon Sep 17 00:00:00 2001 From: Mark Monteiro Date: Sat, 14 Mar 2020 15:04:14 +0100 Subject: [PATCH 322/449] Revert changes to yarn.lock --- yarn.lock | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/yarn.lock b/yarn.lock index a3df41e1af..f156002c6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3519,11 +3519,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -4614,13 +4609,6 @@ 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== -page@^1.11.5: - version "1.11.5" - resolved "https://registry.yarnpkg.com/page/-/page-1.11.5.tgz#0cfc8608be337f26f4377f31df0787aef0ca1af7" - integrity sha512-0JXUHc7Y8p1cPJQbhZSwaKO3p+bU3Rgny+OM5gJMKHWHvJKan/fsE5RUzEjRQolv9DzPOSVWfSOHz0lLxK19eA== - dependencies: - path-to-regexp "~1.2.1" - pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -4751,13 +4739,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.2.1.tgz#b33705c140234d873c8721c7b9fd8b541ed3aff9" - integrity sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k= - dependencies: - isarray "0.0.1" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" From 305f050003458f7f84e5be8414cd0a62c899d2ef Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 14 Mar 2020 22:26:08 +0300 Subject: [PATCH 323/449] Move blur of foreign element to generic dialog module --- src/components/dialogHelper/dialogHelper.js | 3 +++ src/components/slideshow/slideshow.js | 5 ----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index 6ee96df318..b9bc71bc1d 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -244,6 +244,9 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', focusManager.pushScope(dlg); if (dlg.getAttribute('data-autofocus') === 'true') { focusManager.autoFocus(dlg); + } else if (document.activeElement && !dlg.contains(document.activeElement)) { + // Blur foreign element to prevent triggering of an action from the previous scope + document.activeElement.blur(); } }; diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 67cae4b6b0..40d87e9519 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -188,11 +188,6 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f stopInterval(); }); - // Blur foreign element to prevent starting of "nested" slideshow - if (document.activeElement && !dlg.contains(document.activeElement)) { - document.activeElement.blur(); - } - inputManager.on(window, onInputCommand); document.addEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove); From 4d6f187aee013a377e79754ef8f32cdb71558cb5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 14 Mar 2020 22:29:58 +0300 Subject: [PATCH 324/449] Fix event source for inputManager --- src/scripts/inputManager.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 772f13b8c7..4d62ff9f20 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -58,7 +58,15 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct sourceElement = focusManager.focusableParent(sourceElement); } - sourceElement = sourceElement || document.querySelector('.dialogContainer .dialog.opened') || document.activeElement || window; + if (!sourceElement) { + sourceElement = document.activeElement || window; + + var dlg = document.querySelector('.dialogContainer .dialog.opened'); + + if (dlg && (!sourceElement || !dlg.contains(sourceElement))) { + sourceElement = dlg; + } + } if (eventListenerCount) { var customEvent = new CustomEvent("command", { From 1eeda31a12f62497f56d0f39ff34ae2a1872fcbb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 14 Mar 2020 21:53:45 +0100 Subject: [PATCH 325/449] Fix artist details ribbon --- src/controllers/itemdetailpage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index e18311048c..8069b15529 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -459,7 +459,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || item.MediaType && item.MediaType !== "Video" || item.Type === "MusicAlbum" || - item.Type === "MusicArtist" || item.Type === "Person"; if (!layoutManager.mobile && !userSettings.enableBackdrops()) { From faa46f5bad4c50368a5ef484dc90e722feea5e1a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 14 Mar 2020 22:48:39 +0100 Subject: [PATCH 326/449] Double size of remotecontrol and listview images --- src/components/listview/listview.js | 2 +- src/components/remotecontrol/remotecontrol.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index f0f5440aae..25f7e52915 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -72,7 +72,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { - maxWidth: width, + maxWidth: width * 2, type: "Primary" }; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 90115b3a82..7b620d536a 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -122,9 +122,9 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } var url = item ? seriesImageUrl(item, { - maxHeight: 300 + maxHeight: 300 * 2 }) || imageUrl(item, { - maxHeight: 300 + maxHeight: 300 * 2 }) : null; console.debug("updateNowPlayingInfo"); From 53d2e8c0d29eec892193b6ff8bcd5d31d7adb6dd Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 15 Mar 2020 02:18:27 +0300 Subject: [PATCH 327/449] Always try to blur foreign element --- src/components/dialogHelper/dialogHelper.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index b9bc71bc1d..d8ddc13c0a 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -242,9 +242,12 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', var onAnimationFinish = function () { focusManager.pushScope(dlg); + if (dlg.getAttribute('data-autofocus') === 'true') { focusManager.autoFocus(dlg); - } else if (document.activeElement && !dlg.contains(document.activeElement)) { + } + + if (document.activeElement && !dlg.contains(document.activeElement)) { // Blur foreign element to prevent triggering of an action from the previous scope document.activeElement.blur(); } From 2f9cfd8363b65bdd81db78d31eb7385841e6ca4d Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sat, 14 Mar 2020 23:02:20 +0000 Subject: [PATCH 328/449] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index c89239ca89..83be4ddd92 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -61,7 +61,7 @@ "TabUpcoming": "Prihajajoče", "TellUsAboutYourself": "Povej nam nekaj o sebi", "ThisWizardWillGuideYou": "Čarovnik vas bo vodil skozi postopek namestitve. Za začetek, izberite jezik.", - "WelcomeToProject": "Dobrodosli v Jellyfin!", + "WelcomeToProject": "Dobrodošli v Jellyfin!", "Absolute": "Absolutno", "AccessRestrictedTryAgainLater": "Dostop je trenutno omejen. Poskusite ponovno kasneje.", "Actor": "Igralec", @@ -352,7 +352,7 @@ "HeaderMyMediaSmall": "Moja predstavnost (majhno)", "HeaderMyMedia": "Moja predstavnost", "HeaderMyDevice": "Moja naprava", - "HeaderMusicVideos": "Glasbeni video posnetki", + "HeaderMusicVideos": "Glasbeni videi", "HeaderMusicQuality": "Kvaliteta glasbe", "HeaderMovies": "Filmi", "HeaderMoreLikeThis": "Podobno", @@ -828,7 +828,7 @@ "OptionAllowMediaPlaybackTranscodingHelp": "Omejitev dostopa do prekodiranja lahko povzroči napake pri predvajanju v Jellyfin aplikacijah zaradi nepodprtih formatov predstavnosti.", "OptionAllowVideoPlaybackRemuxing": "Dovoli predvajanje videoposnetkov, ki zahtevajo pretvarjanje brez prekodiranja", "ViewPlaybackInfo": "Oglejte si informacije o predvajanju", - "WizardCompleted": "To je vse kar potrebujemo za zdaj. Jellyfin je začel zbirati informacije o vaši knjižnici predstavnosti. Oglejte si nekaj naših aplikacij in nato kliknite Zaključi za ogled Nadzorne pološče.", + "WizardCompleted": "To je vse kar potrebujemo za zdaj. Jellyfin je začel zbirati informacije o vaši knjižnici predstavnosti. Oglejte si nekaj naših aplikacij in nato kliknite Zaključi za ogled Nadzorne plošče.", "Suggestions": "Predlogi", "SubtitleDownloadersHelp": "Omogočite in razvrstite želene vire podnapisov po prioriteti.", "NewCollectionHelp": "Zbirke vam omogočajo ustvarjanje prilagojenih skupin filmov in drugih vsebin.", @@ -1190,5 +1190,34 @@ "LabelSubtitles": "Podnapisi:", "LabelSubtitlePlaybackMode": "Način podnapisov:", "LabelSubtitleFormatHelp": "Primer: srt", - "LabelSubtitleDownloaders": "Pridobivanje podnapisov:" + "LabelSubtitleDownloaders": "Pridobivanje podnapisov:", + "Wednesday": "Sreda", + "ValueVideoCodec": "Video kodek: {0}", + "ValueTimeLimitSingleHour": "Časovna omejitev: 1 ura", + "ValueTimeLimitMultiHour": "Časovna omejitev: {0} ur", + "ValueSongCount": "{0} pesmi", + "ValueMusicVideoCount": "{0} glasbenih videov", + "ValueMovieCount": "{0} filmov", + "ValueMinutes": "{0} minut", + "ValueEpisodeCount": "{0} epizod", + "ValueSeriesCount": "{0} serij", + "ValueSeconds": "{0} sekund", + "ValueOneSong": "1 skladba", + "ValueOneSeries": "1 serija", + "ValueOneMusicVideo": "1 glasbeni video", + "ValueOneMovie": "1 film", + "ValueOneEpisode": "1 epizoda", + "ValueOneAlbum": "1 album", + "ValueContainer": "Kontejner: {0}", + "ValueConditions": "Pogoji: {0}", + "ValueCodec": "Kodek: {0}", + "ValueAudioCodec": "Zvočni kodek: {0}", + "Unrated": "Neocenjeno", + "Unplayed": "Nepredvajano", + "Tuesday": "Torek", + "Trailers": "Napovedniki", + "TitleHardwareAcceleration": "Strojno pospeševanje", + "Thursday": "Četrtek", + "TabUsers": "Uporabniki", + "TabTrailers": "Napovedniki" } From 347e0f2ed4aafc3ac11babe2cc6c9ffbf3b006d7 Mon Sep 17 00:00:00 2001 From: drikqlis Date: Sun, 15 Mar 2020 11:36:35 +0000 Subject: [PATCH 329/449] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index fcaea7a709..c12317c3d4 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -271,7 +271,7 @@ "EncoderPresetHelp": "Wybierz wartość faster, żeby zwiększyć wydajność, albo slower, żeby zwiększyć jakość.", "HDPrograms": "Programy w jakości HD", "HandledByProxy": "Obsługiwane przez usługę pośredniczącą", - "HardwareAccelerationWarning": "Aktywacja akceleracji sprzętowej może powodować niestabilność na niektórych środowiskach. Upewnij się, że system operacyjny i sterowniki karty graficznej są aktualne. Jeżeli masz problemy z odtwarzaniem wideo po aktywacji, przywróć to ustawienie do wartości Automatycznie.", + "HardwareAccelerationWarning": "Aktywacja akceleracji sprzętowej może powodować niestabilność na niektórych środowiskach. Upewnij się, że system operacyjny i sterowniki karty graficznej są aktualne. Jeżeli masz problemy z odtwarzaniem wideo po aktywacji, przywróć to ustawienie do wartości Brak.", "HeaderAccessSchedule": "Harmonogram dostępu", "HeaderAccessScheduleHelp": "Utwórz dostęp do harmonogramu aby ograniczyć go do określonych godzin.", "HeaderActiveDevices": "Aktywne urządzenia", @@ -585,7 +585,7 @@ "LabelEmbedAlbumArtDidl": "Wbudowana okładka albumu w Didl", "LabelEmbedAlbumArtDidlHelp": "Niektóre urządzenia wybierają tę metodę uzyskiwania okładki albumu. Inne mogą nie odtwarzać gdy ta opcja jest włączona.", "LabelEnableAutomaticPortMap": "Mapuj porty automatycznie", - "LabelEnableAutomaticPortMapHelp": "Umożliwia automatyczne mapowanie publicznego numeru portu z lokalnym numerem portu za pomocą UPnP. Ta opcja może nie działać z niektórymi modelami ruterów.", + "LabelEnableAutomaticPortMapHelp": "Umożliwia automatyczne mapowanie publicznego numeru portu z lokalnym numerem portu za pomocą UPnP. Ta opcja może nie działać z niektórymi modelami ruterów. Zmiany zaczną działać po ponownym uruchomieniu serwera.", "LabelEnableBlastAliveMessages": "Przesyłaj komunikaty o dostępności", "LabelEnableBlastAliveMessagesHelp": "Aktywuj tę funkcję, jeśli serwer nie jest odpowiednio wykrywany przez inne urządzenia UPnP w twojej sieci.", "LabelEnableDlnaClientDiscoveryInterval": "Częstotliwość wykrywania klientów (sekundy)", @@ -619,7 +619,7 @@ "LabelH264Crf": "CRF kodowania H264:", "LabelEncoderPreset": "Szablon kodowania H264:", "LabelHardwareAccelerationType": "Akceleracja sprzętowa:", - "LabelHardwareAccelerationTypeHelp": "Jest to funkcja eksperymentalna dostępna tylko w obsługiwanych systemach.", + "LabelHardwareAccelerationTypeHelp": "Akceleracja sprzętowa wymaga dodatkowej konfiguracji.", "LabelHomeNetworkQuality": "Jakość dla sieci lokalnej:", "LabelHomeScreenSectionValue": "Sekcja ekranu startowego {0}:", "LabelHttpsPort": "Lokalny numer portu HTTPS:", @@ -1455,5 +1455,12 @@ "ButtonSplit": "Rozdziel", "SelectAdminUsername": "Proszę wybierz nazwę użytkownika dla konta administratora.", "MessageConfirmAppExit": "Czy chcesz wyjść?", - "HeaderNavigation": "Nawigacja" + "HeaderNavigation": "Nawigacja", + "LabelPlayerDimensions": "Rozmiar odtwarzacza:", + "LabelDroppedFrames": "Upuszczone klatki:", + "LabelCorruptedFrames": "Uszkodzone klatki:", + "CopyStreamURLError": "Wystąpił błąd podczas kopiowania adresu URL.", + "AskAdminToCreateLibrary": "Poproś administratora o stworzenie biblioteki.", + "AllowFfmpegThrottlingHelp": "Kiedy transkodowanie lub remuxowanie dotrze wystarczająco daleko od aktualnej pozycji odtwarzania, zatrzymaj proces aby zużywać mniej zasobów. Jest to najbardziej użyteczne podczas oglądania bez częstego przeskakiwania. Wyłącz jeśli zaobserwujesz problemy z odtwarzaniem.", + "AllowFfmpegThrottling": "Ograniczaj transkodowanie" } From 0a916a0ad6059d1ccf23c6486003fb9cd4553012 Mon Sep 17 00:00:00 2001 From: drikqlis Date: Sun, 15 Mar 2020 11:49:40 +0000 Subject: [PATCH 330/449] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index c12317c3d4..4097a6cc3f 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1273,7 +1273,7 @@ "TabPassword": "Hasło", "TabPlayback": "Odtwarzanie", "TabPlaylist": "Lista odtwarzania", - "TabPlaylists": "Lista odtwarzania", + "TabPlaylists": "Listy odtwarzania", "TabPlugins": "Wtyczki", "TabProfile": "Profil", "TabProfiles": "Profile", @@ -1453,7 +1453,7 @@ "HeaderFavoritePeople": "Ulubieni ludzie", "FetchingData": "Pobieranie dodatkowych danych", "ButtonSplit": "Rozdziel", - "SelectAdminUsername": "Proszę wybierz nazwę użytkownika dla konta administratora.", + "SelectAdminUsername": "Podaj nazwę użytkownika dla konta administratora.", "MessageConfirmAppExit": "Czy chcesz wyjść?", "HeaderNavigation": "Nawigacja", "LabelPlayerDimensions": "Rozmiar odtwarzacza:", @@ -1462,5 +1462,12 @@ "CopyStreamURLError": "Wystąpił błąd podczas kopiowania adresu URL.", "AskAdminToCreateLibrary": "Poproś administratora o stworzenie biblioteki.", "AllowFfmpegThrottlingHelp": "Kiedy transkodowanie lub remuxowanie dotrze wystarczająco daleko od aktualnej pozycji odtwarzania, zatrzymaj proces aby zużywać mniej zasobów. Jest to najbardziej użyteczne podczas oglądania bez częstego przeskakiwania. Wyłącz jeśli zaobserwujesz problemy z odtwarzaniem.", - "AllowFfmpegThrottling": "Ograniczaj transkodowanie" + "AllowFfmpegThrottling": "Ograniczaj transkodowanie", + "PlaybackErrorNoCompatibleStream": "Wystąpił problem ze sprofilowaniem klienta i serwer nie wysyła kompatybilnego formatu mediów.", + "OptionForceRemoteSourceTranscoding": "Wymuś transkodowanie zewnętrznych źródeł mediów (jak telewizja na żywo)", + "NoCreatedLibraries": "Wygląda na to, że nie utworzyłeś jeszcze żadnych bibliotek. {0}Czy chcesz utworzyć jedną teraz?{1}", + "LabelVideoResolution": "Rozdzielczość wideo:", + "LabelStreamType": "Typ transmisji:", + "EnableFastImageFadeInHelp": "Włącz szybszą animację pojawiania się dla załadowanych obrazów", + "EnableFastImageFadeIn": "Szybkie pojawianie się obrazów" } From bdc3ec00c82b8706705fd9ec1fd6993b620000b8 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 15 Mar 2020 21:29:26 +0100 Subject: [PATCH 331/449] Re-add image maxWidth in listview --- src/components/listview/listview.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 25f7e52915..532ba094a8 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -105,6 +105,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { + maxWidth: width * 2, type: "Primary" }; From 704062f876df4a294a218ee113b106de6038b882 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 15 Mar 2020 21:53:28 +0100 Subject: [PATCH 332/449] Fix CI on PRs --- .ci/azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 43c05fffa2..bfe9aa5c69 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -7,6 +7,10 @@ trigger: tags: include: - '*' +pr: + branches: + include: + - '*' jobs: - job: main_build From b5f3683e45e4a95713342e20ff99d74a5899bc95 Mon Sep 17 00:00:00 2001 From: dtparr Date: Mon, 16 Mar 2020 05:48:05 +0000 Subject: [PATCH 333/449] Correct the url in the wizardstart.html to remove the administrator folder. --- src/wizardstart.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wizardstart.html b/src/wizardstart.html index a47fcad090..615feb3b04 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -4,7 +4,7 @@ From bee7d1af3cbb6ab4986f2d5c7841b116ec52c7db Mon Sep 17 00:00:00 2001 From: Mednis Date: Sun, 15 Mar 2020 19:25:21 +0000 Subject: [PATCH 334/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 248 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 247 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 868b9f968b..376fe4b6d8 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -766,5 +766,251 @@ "Songs": "Dziesmas", "Shows": "Raidījumi", "Playlists": "Atskaņošanas Saraksti", - "Photos": "Attēli" + "Photos": "Attēli", + "RepeatOne": "Atkārtot vienu", + "RepeatMode": "Atkārtošanas Režīms", + "RepeatEpisodes": "Atkārtot epizodes", + "RepeatAll": "Atkārtot visu", + "Repeat": "Atkārtot", + "RemoveFromPlaylist": "Noņemt no atskaņošanas sarakasta", + "RemoveFromCollection": "Noņemt no kolekcijas", + "RememberMe": "Atcerēties mani", + "Refresh": "Atjaunot", + "Recordings": "Ieraksti", + "RecordingCancelled": "Ieraksts atcelts.", + "RecordSeries": "Ierakstīt sēriju", + "Record": "Ierakstīt", + "RecommendationBecauseYouWatched": "Tāpēc ka tu skatījies {0}", + "RecommendationBecauseYouLike": "Tāpēc ka tev patīk {0}", + "RecentlyWatched": "Nesen skatīts", + "Quality": "Kvalitāte", + "Programs": "Programmas", + "Producer": "Producents", + "Previous": "Iepriekšējais", + "PleaseSelectTwoItems": "Izvēlies vismaz divus vienumus.", + "Played": "Atskaņots", + "PlayNext": "Atskaņot nākamp", + "PlayAllFromHere": "Atskaņot visus no šejienes", + "Play": "Atskaņot", + "PinCodeResetComplete": "Pin kods atiestatīts.", + "PictureInPicture": "Attēls attēlā", + "PasswordSaved": "Parole saglabāta.", + "People": "Cilvēki", + "OptionTvdbRating": "TVDB Reitings", + "OptionRandom": "Nejaušs", + "OptionProtocolHttp": "HTTP", + "OptionProfileVideoAudio": "Video Audio", + "OptionProfileVideo": "Video", + "OptionProfileAudio": "Audio", + "OptionPlayed": "Atskaņots", + "OptionParentalRating": "Vecāku Reitings", + "OptionOnInterval": "Pēc intervāla", + "OptionNone": "Neviens", + "OptionNew": "Jauns...", + "OptionMonday": "Pirmdien", + "OptionList": "Saraksts", + "OptionLikes": "Patīk", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionHasTrailer": "Treileris", + "OptionHasSubtitles": "Subtitri", + "OptionFriday": "Piektdien", + "OptionFavorite": "Favorīti", + "OptionEveryday": "Katru dienu", + "OptionEnded": "Beidzies", + "OptionEnableAccessToAllLibraries": "Iespējot piekļuvi visām bibliotēkām", + "OptionDvd": "DVD", + "OptionDownloadMenuImage": "Izvēlne", + "OptionDownloadLogoImage": "Logo", + "OptionDownloadDiscImage": "Disks", + "OptionDownloadBoxImage": "Kaste", + "OptionDaily": "Ikdienas", + "OptionContinuing": "Turpina", + "OptionBluray": "Blu-ray", + "OptionBlockTvShows": "TV Raidījumi", + "OptionBlockTrailers": "Treileri", + "OptionBlockMusic": "Mūzika", + "OptionBlockMovies": "Filmas", + "OptionBlockBooks": "Grāmatas", + "OptionAutomatic": "Auto", + "OptionAuto": "Auto", + "OptionArtist": "Izpildītājs", + "NoPluginConfigurationMessage": "Šim paplašinājumam nav konfigurējamu iestatījumu.", + "NoCreatedLibraries": "Izskatās ka tu vēl neesi izveidojis nevienu bibliotēku. {0}Vai tu vēlies izveidot vienu tagad?{1}", + "NextUp": "Nākamais", + "Mute": "Apklusināt", + "MessageNoServersAvailable": "Automātiskā serveru meklēšana neatrada nevienu serveri.", + "MessageInvalidForgotPasswordPin": "Tika ievadīts nepareizs vai nevecojis pin kods. Lūdzu mēģini vēlreiz.", + "Menu": "Izvēlne", + "LabelTriggerType": "Trigera Veids:", + "LabelSkipIfGraphicalSubsPresent": "Izlaist ja video jau satur iegultus subtitrus", + "LabelSkin": "Izskats:", + "LabelSimultaneousConnectionLimit": "Vienlaicīgo straumju limits:", + "LabelServerHostHelp": "192.168.1.100:8096 vai https://myserver.com", + "LabelServerHost": "Resursdators:", + "LabelReleaseDate": "Izlaiduma datums:", + "LabelPrevious": "Iepriekšējais", + "LabelPreferredSubtitleLanguage": "Ieteicamā subtitru valoda:", + "LabelPreferredDisplayLanguageHelp": "Jellyfin tulkošana ir notiekošs projekts.", + "LabelPlayerDimensions": "Atskaņotāja dimensijas:", + "LabelParentalRating": "Vecāku reitings:", + "LabelMonitorUsers": "Uzraudzīt aktivitāti no:", + "LabelMinResumePercentageHelp": "Vienumi tiek uzskatīti par neatskaņotiem ja apturēti pirms šī laika.", + "LabelMinResumePercentage": "Minimālais turpināšanas procents:", + "LabelMinResumeDurationHelp": "Īsākais video garums sekundēs, kas saglabās atskaņošanas pozīciju un ļaus turpināt.", + "LabelMinResumeDuration": "Minimālais turpināšanas laiks:", + "LabelMetadataDownloadLanguage": "Ieteicamā lejupielādes valoda:", + "LabelMaxResumePercentageHelp": "Vienumi tiek uzskatīti pilnībā atskaņoti, ja tiek apturēti pēc šī laika.", + "LabelMaxResumePercentage": "Maksimālais turpināšanas procents:", + "LabelMaxParentalRating": "Maksimālais atļautais vecāku reitings:", + "LabelLoginDisclaimerHelp": "Ziņojums, kas tiks parādīts ieiešanas lapas apakšā.", + "LabelLoginDisclaimer": "Ieiešanas ziņojums:", + "LabelKodiMetadataDateFormat": "Izlaiduma datuma formāts:", + "LabelKidsCategories": "Bērnu kategorijas:", + "LabelIconMaxHeight": "Ikonas maksimālais augstums:", + "LabelHttpsPortHelp": "TCP ports, uz kura uzstādīt Jellyfin HTTPS serveri.", + "LabelH264Crf": "H264 kodēšanas CRF:", + "LabelGroupMoviesIntoCollections": "Grupēt filmas kolekcijās", + "LabelEnableRealtimeMonitor": "Iespējot reāllaika uzraudzību", + "LabelEnableDlnaServerHelp": "Ļauj UPnP ierīcēm tavā tīklā pārlūkot un atskaņot vienumus.", + "LabelEnableDlnaPlayToHelp": "Atrast ierīces lokālajā tīklā un dot iespēju tās attālināti kontrolēt.", + "LabelEnableDlnaDebugLoggingHelp": "Izveido lielas log datnes, un paredzēts tikai atkļūdošanas lietošanai.", + "LabelEnableBlastAliveMessagesHelp": "Iespējo šo ja serveri uzticami neatrod citas tīklā esošas UPnP ierīces.", + "LabelEnableAutomaticPortMapHelp": "Mēģināt automātiski kartēt publisko portu uz lokālo portu caur UPnP. Tas var nefunkcionēt uz dažiem rūteru modeļiem. Izmaiņas netiks pielietotas līdz servera restartam.", + "LabelEnableAutomaticPortMap": "Iespējot automātisko portu kartēšanu", + "LabelDynamicExternalId": "{0} Id:", + "LabelDropImageHere": "Nomet attēlu šeit, vai noklikšķini lai pārlūkotu.", + "LabelDidlMode": "DIDL režīms:", + "LabelDeathDate": "Nāves datums:", + "LabelDateTimeLocale": "Datuma un laika lokalizācija:", + "LabelCustomCertificatePathHelp": "Ceļš uz PKCS #12 datni, kas satur sertifikātu un privāto atslēgu lai iespējotu TLS atbalstu uz sava domēna.", + "FolderTypeUnset": "Jaukts Saturs", + "ErrorSavingTvProvider": "Kļūda saglabājot TV sniedzēju. Pārliecinies ka tas ir pieejams un mēģini vēlreiz.", + "ErrorMessageStartHourGreaterThanEnd": "Beigu laikam jābūt vēlākam par sākuma laiku.", + "ErrorAddingXmlTvFile": "Kļūda atverot XMLTV datni. Lūdzu pārliecinies ka datne eksistē un mēģini vēlreiz.", + "LabelCustomCssHelp": "Izmanto pats savu pielāgoto silu web interfeisam.", + "LabelCustomCss": "Pielāgots CSS:", + "LabelCustomCertificatePath": "Pielāgotā SSL sertifikāta ceļš:", + "LabelCorruptedFrames": "Bojātie kadri:", + "LabelCertificatePasswordHelp": "Ja tavam sertifikātam ir vajadzīga parole, lūdzu ievadi to šeit.", + "LabelBlockContentWithTags": "Aizliegt vienumus ar tagiem:", + "LabelBitrate": "Bitu ātrums:", + "LabelBindToLocalNetworkAddress": "Uzstādīt uz lokālās tīkla adreses:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Automātiski atjaunot metadatus no interneta:", + "LabelAuthProvider": "Autentifikācijas Nodrošinātājs:", + "LabelAudioSampleRate": "Audio izlases ātrums:", + "LabelAudioCodec": "Audio kodeks:", + "LabelAudioChannels": "Audio kanāli:", + "LabelAudioBitrate": "Audio bitu-ātrums:", + "LabelAllowServerAutoRestartHelp": "Serveris restartēties tikai brīžos, kad neviens lietotājs nav aktīvs.", + "LabelAllowServerAutoRestart": "Atļaut serverim automātiski restartēties, lai uzstādītu atjauninājumus", + "LabelAllowHWTranscoding": "Atļaut aparatūras trans-kodēšanu", + "LabelAlbumArtMaxWidthHelp": "Maksimālā albumu vāku izšķirtspēja caur upnp:albumArtURI.", + "LabelAlbumArtMaxWidth": "Albumu vāku maksimālais platums:", + "LabelAlbumArtMaxHeightHelp": "Maksimālā albumu vāku izšķirtspēja caur upnp:albumArtURI.", + "LabelAlbumArtMaxHeight": "Albumu vāku maksimālais augstums:", + "LabelAbortedByServerShutdown": "(Atcelts dēļ servera izslēgšanas)", + "ImportFavoriteChannelsHelp": "Ja iespējots, tikai kanāli, kas atzīmēti kā favorīti uztvērēja ierīcē tiks importēti.", + "HttpsRequiresCert": "Lai iespējotu drošos savienojumus, tev ir jānodrošina uzticams SSL sertifikāts, kā Let's Encrypt. Lūdzu nodrošini sertifikātu, vai atspējo drošos savienojumus.", + "HeaderTranscodingProfileHelp": "Pievieno tiešās atskaņošanas profilus, lai norādītu kurus formātus izmantot kad ir vajadzīga trans-kodēšana.", + "HeaderTaskTriggers": "Uzdevumu Trigeri", + "HeaderSelectTranscodingPathHelp": "Pārlūko vai ievadi ceļu, kurā tiks glabātas īslaicīgās trans-kodēšanas datnes. Šai mapei jābūt rakstāmai.", + "HeaderSelectTranscodingPath": "Izvēlies Trans-kodēšanas Īslaicīgo Ceļu", + "HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.", + "HeaderSelectPath": "Izvēlies Ceļu", + "HeaderSelectMetadataPathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt metadatus. Šai mapei jābūt rakstāmai.", + "HeaderSelectMetadataPath": "Izvēlies Metadatu Ceļu", + "HeaderSelectCertificatePath": "Izvēlies Sertifikāta Ceļu", + "HeaderScenes": "Ainas", + "HeaderRunningTasks": "Ejošie Uzdevumi", + "HeaderResponseProfileHelp": "Atbilžu profili nodrošina iespējas rediģēt informāciju, kas tiek nosūtīta uz ierīci atskaņojot noteiktus medijus.", + "HeaderResponseProfile": "Atbilžu Profils", + "HeaderRemoteControl": "Tālvadība", + "HeaderRecordingPostProcessing": "Ierakstu Pēcapstrāde", + "HeaderProfileServerSettingsHelp": "Šīs vērtības kontrolē kā Jellyfin Server sevi rādīs ierīcei.", + "HeaderPreferredMetadataLanguage": "Ieteicamā Metadatu Valoda", + "HeaderPluginInstallation": "Paplašinājuma Instalācija", + "HeaderPlayOn": "Atskaņot Uz", + "HeaderParentalRatings": "Vecāku Vērtējumi", + "HeaderOtherItems": "Citi Vienumi", + "HeaderOnNow": "Tagad", + "HeaderLoginFailure": "Ieiešanas Kļūda", + "HeaderKodiMetadataHelp": "Lai iespējotu vai atspējotu NFO metadatus, rediģē bibliotēku Jellyfin bibliotēku iestatījumu metadata glabātāju sadaļā.", + "HeaderIdentifyItemHelp": "Ievadi vienu vai vairākus meklēšanas kritērijus. Noņem kritērijus lai palielinātu meklēšanas rezultātus.", + "HeaderFetchImages": "Ielādēt Attēlus:", + "HeaderFeatures": "Funkcijas", + "HeaderFeatureAccess": "Funkciju Piekļuve", + "HeaderEnabledFieldsHelp": "Atķeksē lauku lai to slēgtu un aizliegt tā satura mainīšanu.", + "HeaderEnabledFields": "Iespējotie Lauki", + "HeaderEasyPinCode": "Vieglais Pin Kods", + "HeaderDirectPlayProfileHelp": "Pievieno tiešās atskaņošanas profilus, lai norādītu kurus formātus ierīce spēj atskaņot natīvi.", + "HeaderDirectPlayProfile": "Tiešās Atskaņošanas Profils", + "HeaderDetectMyDevices": "Noteikt Manas Ierīces", + "HeaderDeleteTaskTrigger": "Dzēst Uzdevuma Trigeri", + "HeaderDeleteProvider": "Dzēst Sniedzēju", + "HeaderDefaultRecordingSettings": "Noklusējuma Ierakstīšanas Iestatījumi", + "HeaderDateIssued": "Izdošanas Datums", + "HeaderCustomDlnaProfiles": "Pielāgoti Profili", + "HeaderConfirmProfileDeletion": "Apstiprināt Profila Dzēšanu", + "HeaderChapterImages": "Nodaļu Attēli", + "HeaderCastCrew": "Lomas/Apkalpe", + "HeaderCastAndCrew": "Lomas/Apkalpe", + "HeaderAppearsOn": "Redzams", + "FFmpegSavePathNotFound": "Mēs nespējām atrast FFmpeg norādītajā ceļā. FFprobe arī ir vajadzīgs, un tam ir jāatrodas tajā pašā mapē. Šīs komponentes parasti tiek apvienotas vienā un tajā pašā lejupielādē. Lūdzu pārbaudiet ceļu un mēģiniet vēlreiz.", + "HeaderAdditionalParts": "Papildus Ceļi", + "HeaderAddUpdateImage": "Pievienot/Atjaunot Attēlu", + "HeaderAddScheduledTaskTrigger": "Pievienot Trigeri", + "GuideProviderLogin": "Ieiet", + "Ended": "Beidzies", + "EnableStreamLoopingHelp": "Iespējo šo, ja tiešsaistes straume satur tikai pāris sekunžu datus, un ir nepārtraukti jāatjauno. Iespējojot bez vajadzības var radīties problēmas.", + "EnableStreamLooping": "Automātiski atkārtot tiešsaistes straumes", + "EnablePhotosHelp": "Attēli tiks atrasti un parādīti blakus citām mediju datnēm.", + "EnableExternalVideoPlayersHelp": "Ārēja atskaņotāja izvēlne tiks parādīta, kad tiks sākta video atskaņošana.", + "EnableColorCodedBackgrounds": "Krāsu kodēti foni", + "EnableBackdropsHelp": "Attēlot fona attēlus dažu lapu fonā bibliotēkas pārlūkošanas laikā.", + "DropShadow": "Fona Ēnojums", + "DisplayMissingEpisodesWithinSeasons": "Rādīt trūkstošās epizodes sezonās", + "Disconnect": "Atvienot", + "DirectStreamHelp2": "Tieši Straumējot datni tiek izmantots ļoti maz procesora jaudas, bez video vai audio kvalitātes zudumiem.", + "DirectStreamHelp1": "Šis medijs ir saderīgs ar ierīci pēc izšķirtspējas un medija veida (H.264, AC3, utt.), bet atrodas nesaderīgā datnes konteinerī (mkv, avi, wmv, utt.). Video tiks pārpakots uz saderīgu formātu pirms tas tiks straumēts uz ierīci.", + "Descending": "Disltošs", + "Depressed": "Atspiests", + "DeleteUserConfirmation": "Vai tu tiešām gribi izdzēst šo lietotāju?", + "DeleteUser": "Dzēst Lietotāju", + "DeleteMedia": "Dzēst mediju", + "DeleteImageConfirmation": "Vai tu tiešām gribi izdzēst šo attēlu?", + "DeleteDeviceConfirmation": "Vai tu tiešām gribi noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.", + "DefaultErrorMessage": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", + "DeathDateValue": "Miris: {0}", + "ConfirmEndPlayerSession": "Vai jūs gribat izslēgt Jellyfin uz {0}?", + "ConfirmDeleteItems": "Dzēšot šos vienumus, tie tiks izdzēsti gan no jūsu failu sistēmas, gan mediju bibliotēkas. Vai tiešām turpināt?", + "ConfirmDeleteItem": "Dzēšot šo vienumu, tas tiks izdzēsts gan no jūsu failu sistēmas, gan mediju bibliotēkas. Vai tiešām turpināt?", + "ConfigureDateAdded": "Iestati kā pievienošanas datums tiek noteikts iekš Jellyfin Server pārvaldes paneļa zem Bibliotēkas iestatījumiem", + "Composer": "Komponists", + "ColorSpace": "Krāsu telpa", + "ColorPrimaries": "Primārās krāsas", + "CinemaModeConfigurationHelp": "Teātra režīms ienes kinoteātra pieredzi tavā dzīvojamā istabā, ar iespējām atskaņot treilerus un pielāgotus ievadus pirms galvenās filmas.", + "ChannelAccessHelp": "Izvēlies kanālus, ko koplietot ar šo lietotāju. Administratori spēs rediģēt visus kanālus izmantojot metadatu pārvaldnieku.", + "ChangingMetadataImageSettingsNewContent": "Izmaiņas metadatu vai mākslas lejupielādes iestatījumos tiks izmantotas tikai jauniem bibliotēkas vienumiem. Lai pielietotu šīs izmaiņas jau esošiem vienumiem, tev vajadzēs atjaunot šo vienumu metadatus manuāli.", + "ButtonSubmit": "Iesniegt", + "ButtonSort": "Kārtot", + "ButtonQuickStartGuide": "Pamata Lietošanas Instrukcija", + "ButtonManualLogin": "Manuālā Ieiešana", + "ButtonEditOtherUserPreferences": "Rediģē šī lietotāja profilu, attēlu un personas iestatījumus.", + "ButtonDown": "Lejup", + "ButtonArrowUp": "Augšup", + "ButtonArrowRight": "Labi", + "ButtonArrowLeft": "Kreisi", + "ButtonArrowDown": "Lejup", + "ButtonAddScheduledTaskTrigger": "Pievienot Trigeru", + "BookLibraryHelp": "Audio un teksta grāmatas tiek atbalstītas. Pārskati {0}grāmatu nosaukumu instrukciju{1}.", + "Blacklist": "Melnais saraksts", + "AuthProviderHelp": "Izvēlies Autentifikācijas Nodrošinājumu, kas tiks izmantots lai autentificētu šī lietotāja paroli.", + "AspectRatio": "Attēla Proporcijas", + "AskAdminToCreateLibrary": "Vaicājiet administratoram, lai izveidotu bibliotēku.", + "Ascending": "Augoši", + "AlwaysPlaySubtitlesHelp": "Valodas preferencei atbilstošie subtitri tiks ielādēti neatkarīgi no audio valodas.", + "AllowFfmpegThrottling": "Ierobežot Trans-kodējumus", + "AllowHWTranscodingHelp": "Atļaut uztvērējam trans-kodēt straumes tiešsaistē. Tas var atvieglot trans-kodēšanu, kas jāveic serverim.", + "AirDate": "Tiešraides datums" } From 6450406e40ae489e46bd7c67736210548aa67887 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 16 Mar 2020 12:11:23 +0000 Subject: [PATCH 335/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 376fe4b6d8..0fbe122433 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1012,5 +1012,24 @@ "AlwaysPlaySubtitlesHelp": "Valodas preferencei atbilstošie subtitri tiks ielādēti neatkarīgi no audio valodas.", "AllowFfmpegThrottling": "Ierobežot Trans-kodējumus", "AllowHWTranscodingHelp": "Atļaut uztvērējam trans-kodēt straumes tiešsaistē. Tas var atvieglot trans-kodēšanu, kas jāveic serverim.", - "AirDate": "Tiešraides datums" + "AirDate": "Tiešraides datums", + "LabelIconMaxWidthHelp": "Maksimālā ikonu izšķirtspēja caur upnp:icon.", + "LabelIconMaxHeightHelp": "Maksimālā ikonu izšķirtspēja caur upnp:icon.", + "LabelHardwareAccelerationTypeHelp": "Aparatūras paātrināšanai ir vajadzīga papildus konfigurācija.", + "LabelEncoderPreset": "H264 un H265 kodēšanas noklusējumi:", + "HardwareAccelerationWarning": "Iespējojot aparatūras paātrināšanu var veidot nestabilitāti dažās vidēs. Pārliecinies ka tava operētājsistēma un video draiveri it pilnībā atjaunināti. Ja tev ir problēmas ar video atskaņošanu pēc šī iestatījuma iespējošanas, tev vajadzēs pārmainīt to atpakaļ uz Neviens.", + "HandledByProxy": "Apstrādā reversais proxy", + "LabelImageFetchersHelp": "Iespējo un sakārto savu attēlu sagādnieku prioritāti.", + "HeaderFetcherSettings": "Sagādnieku Iestatījumi", + "HeaderBranding": "Zīmols", + "HeaderBlockItemsWithNoRating": "Bloķēt vienumus, kam nav vai nav atpazīta reitinga informācija:", + "HeaderApiKeysHelp": "Ārējām lietotnēm ir vajadzīgas API atslēgas, lai sazinātos ar Jellyfin Serveri. Atslēgas tiek izdotas ieejot savā Jellyfin kontā, vai manuāli ģenerējot lietotnei atslēgu.", + "HeaderAccessScheduleHelp": "Izveido grafiku, lai ierobežotu piekļuvi noteiktās stundās.", + "HeaderAccessSchedule": "Piekļuves Grafiks", + "ExtraLarge": "Ļoti Liels", + "ErrorPleaseSelectLineup": "Lūdzu izvēlies sarakstu un mēģini vēlreiz. Ja nav pieejams neviens saraksts, pārliecinies ka tavs lietotājvārds, parole un pasta kods ir pareizi.", + "ErrorGettingTvLineups": "Notika kļūda lejupielādējot TV sarakstus. Lūdzu pārliecinies, ka tava informācija ir pareiza un mēģini vēlreiz.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tam arī jābūt iespējotam priekš TV bibliotēkām servera konfigurācijā.", + "DefaultMetadataLangaugeDescription": "Šie ir jūsu noklusējumi, kas var tikt rediģēti atkarībā no bibliotēkas.", + "AddItemToCollectionHelp": "Pievieno vienumus kolekcijām tos meklējot un izmantojot to labā taustiņa vai spiediena izvēlnes lai pievienotu tos." } From f26e9dcf89146dac65d643d47a0c9f8d2a0818b7 Mon Sep 17 00:00:00 2001 From: ogry Date: Mon, 16 Mar 2020 09:57:35 +0000 Subject: [PATCH 336/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 655c287508..6abc351d50 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -183,7 +183,7 @@ "ErrorAddingListingsToSchedulesDirect": "Ha habido un error añadiendo la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y quitar otras listas de tu cuenta antes de proceder.", "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los medios. Por favor, asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a esa ubicación.", "ErrorAddingTunerDevice": "Ha habido un error añadiendo el dispositivo sintonizador. Por favor, asegúrate de que es accesible e inténtalo otra vez.", - "ErrorAddingXmlTvFile": "Ha habido un error accediendo al archivo XMLTV. Por favor, asegúrate de que existe e inténtalo de nuevo.", + "ErrorAddingXmlTvFile": "Hubo un un error accediendo el archivo XML. Por favor, asegurese que el archivo existe e inténtalo de nuevo.", "ErrorGettingTvLineups": "Ha habido un error descargando la programación de TV. Por favor, asegúrese que la información es correcta e inténtalo de nuevo.", "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización tiene que ser mayor que la de inicio.", "ErrorPleaseSelectLineup": "Por favor selecciona una alineación e inténtalo otra vez. Si no hay alineaciones disponibles, revisa que tu nombre de usuario, contraseña y código postal son correctos.", @@ -218,7 +218,7 @@ "EncoderPresetHelp": "Elija un valor más rápido para mejorar el rendimiento o un valor más lento para mejorar la calidad.", "HDPrograms": "Programas en HD", "HandledByProxy": "Gestionado por proxy inverso", - "HardwareAccelerationWarning": "Activar la aceleración por hardware puede producir inestabilidades en algunos ambientes. Asegúrate de que tu sistema operativo y tus controladores de vídeo están actualizados. Si tienes dificultades para reproducir los vídeos después de activar esto, tendrás que volver a poner este ajuste en Auto.", + "HardwareAccelerationWarning": "Activar la aceleración por hardware puede producir inestabilidades en algunos entornos. Asegúrate de que tu sistema operativo y tus controladores de vídeo están actualizados. Si tienes dificultades para reproducir los vídeos después de activar esto, tendrás que volver a poner este ajuste en None.", "HeaderAccessSchedule": "Horario de acceso", "HeaderAccessScheduleHelp": "Crea un horario de acceso para limitar el acceso a determinadas horas.", "HeaderActiveDevices": "Dispositivos activos", @@ -420,7 +420,7 @@ "Help": "Ayuda", "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios más recientes", - "HttpsRequiresCert": "Para habilitar las conexiones seguras, deberás proporcionar un certificado SSL de confianza, como los de Let's Encrypt. Por favor, proporciona un certificado o deshabilita las conexiones seguras.", + "HttpsRequiresCert": "Para activar la conexión segura, necesitas un certificado SSL de confianza, como Let's Encrypt. De lo contrario, desactive las conexiones seguras", "Identify": "Identificar", "Images": "Imágenes", "ImportFavoriteChannelsHelp": "Si está activado, sólo los canales guardados como favoritos en el sintonizador se importarán.", @@ -511,7 +511,7 @@ "LabelEmbedAlbumArtDidl": "Incorporar la carátula del álbum en didl", "LabelEmbedAlbumArtDidlHelp": "Algunos dispositivos prefieren este método para obtener la carátula del álbum. Otros pueden fallar al reproducir con esta opción habilitada.", "LabelEnableAutomaticPortMap": "Habilitar asignación de puertos automático", - "LabelEnableAutomaticPortMapHelp": "UPnP permite la configuración del router para acceso externo de forma fácil y automática. Esto puede no funcionar en algunos modelos de routers.", + "LabelEnableAutomaticPortMapHelp": "UPnP permite la configuración del router para acceso externo de forma fácil y automática. Esto puede no funcionar en algunos modelos de routers. Los cambios no se aplicarán hasta que el servidor sea reiniciado.", "LabelEnableBlastAliveMessages": "Explotar mensajes en vivo", "LabelEnableBlastAliveMessagesHelp": "Active aquí si el servidor no es detectado correctamente por otros dispositivos UPnP en su red.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de detección de cliente (segundos)", @@ -546,7 +546,7 @@ "LabelH264Crf": "H264 que codifica CRF:", "LabelEncoderPreset": "Configuración de codificación H264:", "LabelHardwareAccelerationType": "Aceleración por hardware:", - "LabelHardwareAccelerationTypeHelp": "Esto es una función experimental disponible sólo en los sistemas soportados.", + "LabelHardwareAccelerationTypeHelp": "La aceleración por hardware requiere configuración adicional.", "LabelHomeScreenSectionValue": "Sección de la pantalla de inicio {0}:", "LabelHttpsPort": "Puerto local HTTPS:", "LabelHttpsPortHelp": "Puerto TCP al que el servidor HTTPS de Jellyfin debe de ser enlazado.", @@ -988,7 +988,7 @@ "OptionThursday": "Jueves", "OptionTrackName": "Nombre de pista", "OptionTuesday": "Martes", - "OptionTvdbRating": "Puntuación TVDB", + "OptionTvdbRating": "Valoración TVDB", "OptionUnairedEpisode": "Episodios no emitidos", "OptionUnplayed": "No reproducido", "OptionWakeFromSleep": "Despertar", @@ -1216,9 +1216,9 @@ "XmlDocumentAttributeListHelp": "Estos atributos se aplican al elemento raíz de cada respuesta XML.", "XmlTvKidsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas para niños. Separe el múltiplo con '|'.", "XmlTvMovieCategoriesHelp": "Los programas con estas categorías se mostrarán como películas. Separe el múltiplo con '|'.", - "XmlTvNewsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas de noticias. Separe el múltiplo con '|'.", - "XmlTvPathHelp": "Ruta al archivo XML de TV. Jellyfin leerá este archivo y comprobará periódicamente si hay actualizaciones. Usted es responsable de crear y actualizar el archivo.", - "XmlTvSportsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas deportivos. Separe el múltiplo con '|'.", + "XmlTvNewsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas de noticias. Puede poner múltiples categorías separándolas con '|'.", + "XmlTvPathHelp": "Ruta al archivo XML TV. Jellyfin leerá este archivo y comprobará periódicamente si hay actualizaciones. Usted es responsable de crear y actualizar el archivo.", + "XmlTvSportsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas deportivos. Puede poner múltiples categorías separándolas con '|'.", "Yes": "Sí", "Yesterday": "Ayer", "Absolute": "Absoluto", @@ -1406,7 +1406,7 @@ "RunAtStartup": "Ejecutar al iniciar", "Series": "Series", "SeriesDisplayOrderHelp": "Ordena los episodios por fecha de emisión, orden de DVD o número absoluto.", - "ShowTitle": "Título del show", + "ShowTitle": "Mostrar título", "ShowYear": "Año del show", "SmallCaps": "Letras minúsculas", "Smaller": "Más pequeño", @@ -1457,7 +1457,7 @@ "MusicLibraryHelp": "Revisar la {0}guía de nombres de música{1}.", "FetchingData": "Obteniendo datos adicionales", "ButtonAddImage": "Añadir imagen", - "HeaderFavoritePeople": "Personas favoritas", + "HeaderFavoritePeople": "Gente Favorita", "OptionRandom": "Aleatorio", "SelectAdminUsername": "Por favor seleccione un nombre de usuario para la cuenta de administrador.", "ButtonSplit": "Dividir", @@ -1465,5 +1465,16 @@ "MessageConfirmAppExit": "¿Quieres salir?", "EnableFastImageFadeInHelp": "Las imágenes que hayan terminado de cargarse mostrarán una pequeña animación", "EnableFastImageFadeIn": "Cargar las imágenes suavemente", - "CopyStreamURLError": "Ha habido un error copiando la dirección." + "CopyStreamURLError": "Ha habido un error copiando la dirección.", + "AllowFfmpegThrottlingHelp": "Cuando una transcodificación o un remux se adelanta lo suficiente desde la posición de reproducción actual, pause el proceso para que consuma menos recursos. Esto es más útil cuando se reproduce de forma linear, sin saltar de posición de reproducción a menudo. Desactívelo si experimenta problemas de reproducción.", + "PlaybackErrorNoCompatibleStream": "Hay un problema con el perfil del cliente y el servidor no es capaz de enviar el contenido en un formato compatible.", + "OptionForceRemoteSourceTranscoding": "Forzar la transcodificación para fuentes remotas de medios (como LiveTV)", + "NoCreatedLibraries": "Parece que aún no se han creado librearías. {0}¿Quiere crear una ahora?{1}", + "LabelVideoResolution": "Resolución de video:", + "LabelStreamType": "Tipo de stream:", + "LabelPlayerDimensions": "Dimensiones del reproductor:", + "LabelDroppedFrames": "Frames perdidos:", + "LabelCorruptedFrames": "Frames corruptos:", + "AskAdminToCreateLibrary": "Solo un administrador puede crear librerías.", + "AllowFfmpegThrottling": "Acelerar transcodificación" } From e77b718dd2bcf003433750be80aa2ef0eba5892a Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 16 Mar 2020 23:30:14 +0900 Subject: [PATCH 337/449] initial changes for web packaging --- .ci/azure-pipelines.yml | 17 ++++++++++++----- .eslintrc.yml | 2 +- gulpfile.js | 42 ++++++++++++++++++++--------------------- package.json | 5 +++-- 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index bfe9aa5c69..7505f9ab5d 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -13,8 +13,8 @@ pr: - '*' jobs: - - job: main_build - displayName: 'Main Build' + - job: build + displayName: 'Build' dependsOn: lint condition: succeeded() @@ -22,6 +22,14 @@ jobs: pool: vmImage: 'ubuntu-latest' + strategy: + matrix: + bundle: + BuildConfiguration: Bundle + standalone: + BuildConfiguration: Standalone + maxParallel: 2 + steps: - task: NodeTool@0 displayName: 'Install Node' @@ -65,6 +73,5 @@ jobs: - script: 'yarn run lint' displayName: 'Run ESLint' - - script: | - yarn run stylelint - displayName: 'Run stylelint' + - script: 'yarn run stylelint' + displayName: 'Run Stylelint' diff --git a/.eslintrc.yml b/.eslintrc.yml index f5ce779d44..4bc22fc1d4 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,5 +1,5 @@ env: - es6: false + es6: true browser: true amd: true diff --git a/gulpfile.js b/gulpfile.js index 04a8028f53..f49805d346 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,11 +10,11 @@ const htmlmin = require('gulp-htmlmin'); const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); const mode = require('gulp-mode')({ - modes: ["production", "development"], + modes: ["development", "bundle", "standalone"], default: "development", verbose: false }); -const webpack_stream = require('webpack-stream'); +const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); @@ -22,10 +22,10 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass') -if (mode.production()) { - var webpack_config = require('./webpack.prod.js'); +if (mode.bundle() || mode.standalone()) { + var config = require('./webpack.prod.js'); } else { - var webpack_config = require('./webpack.dev.js'); + var config = require('./webpack.dev.js'); } function serve() { @@ -43,23 +43,22 @@ function serve() { watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); watch(['src/**/*.json', 'src/**/*.ico'], copy); watch('src/index.html', injectBundle); - watch(['src/standalone.js', 'src/scripts/apploader.js'], setStandalone); + watch(['src/standalone.js', 'src/scripts/apploader.js'], standalone); } -function setStandalone() { - return src(['src/standalone.js', 'src/scripts/apploader.js'], {base: './src/'}) +function standalone() { + return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) .pipe(concat('scripts/apploader.js')) .pipe(dest('dist/')); } -// Clean assets function clean() { return del(['dist/']); } function javascript() { - return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'}) - .pipe(mode.development(sourcemaps.init({loadMaps: true}))) + return src(['src/**/*.js', '!src/bundle.js'], { base: './src/' }) + .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) .pipe(babel({ presets: [ ['@babel/preset-env'] @@ -75,14 +74,14 @@ function javascript() { } function webpack() { - return webpack_stream(webpack_config) + return stream(config) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function css() { - return src(['src/**/*.css', 'src/**/*.scss'], {base: './src/'}) - .pipe(mode.development(sourcemaps.init({loadMaps: true}))) + return src(['src/**/*.css', 'src/**/*.scss'], { base: './src/' }) + .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) .pipe(sass().on('error', sass.logError)) .pipe(postcss()) .pipe(mode.development(sourcemaps.write('.'))) @@ -91,33 +90,34 @@ function css() { } function html() { - return src(['src/**/*.html', '!src/index.html'], {base: './src/'}) - .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) + return src(['src/**/*.html', '!src/index.html'], { base: './src/' }) + .pipe(mode.bundle(htmlmin({ collapseWhitespace: true }))) + .pipe(mode.standalone(htmlmin({ collapseWhitespace: true }))) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function images() { - return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'}) + return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' }) .pipe(imagemin()) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function copy() { - return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'}) + return src(['src/**/*.json', 'src/**/*.ico'], { base: './src/' }) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function injectBundle() { - return src('src/index.html', {base: './src/'}) + return src('src/index.html', { base: './src/' }) .pipe(inject( - src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true} + src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true } )) .pipe(dest('dist/')) .pipe(browserSync.stream()); } exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) -exports.serve = series(exports.default, setStandalone, serve) +exports.serve = series(exports.default, standalone, serve) diff --git a/package.json b/package.json index 126985798d..90d463fb4d 100644 --- a/package.json +++ b/package.json @@ -90,8 +90,9 @@ ], "scripts": { "serve": "gulp serve", - "build": "gulp --production", - "build dev": "gulp", + "build": "gulp --bundle", + "build standalone": "gulp --standalone", + "build development": "gulp", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"" } From e7f441277116efceb3019e2edbdc9e4909c20857 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 16 Mar 2020 23:49:56 +0900 Subject: [PATCH 338/449] remove tar from published artifacts --- .ci/azure-pipelines.yml | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 7505f9ab5d..1a0f11a644 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -24,10 +24,12 @@ jobs: strategy: matrix: - bundle: - BuildConfiguration: Bundle - standalone: - BuildConfiguration: Standalone + Development: + BuildConfiguration: development + Bundle: + BuildConfiguration: bundle + Standalone: + BuildConfiguration: standalone maxParallel: 2 steps: @@ -40,20 +42,25 @@ jobs: displayName: 'Install Dependencies' - script: 'yarn build' - displayName: 'Build' + displayName: 'Build Bundle' + condition: eq(variables['BuildConfiguration'], 'bundle') + + - script: 'yarn build --standalone' + displayName: 'Build Standalone' + condition: eq(variables['BuildConfiguration'], 'standalone') - script: 'test -d dist' displayName: 'Check Build' - - script: 'yarn pack --filename jellyfin-web.tgz' - displayName: 'Bundle Release' + - script: 'mv dist jellyfin-web' + displayName: 'Rename Directory' - task: PublishPipelineArtifact@1 displayName: 'Publish Release' condition: succeeded() inputs: - targetPath: '$(Build.SourcesDirectory)/jellyfin-web.tgz' - artifactName: 'jellyfin-web' + targetPath: '$(Build.SourcesDirectory)/jellyfin-web' + artifactName: 'jellyfin-web-$(BuildConfiguration)' - job: lint displayName: 'Lint' From 2cb68b9a243f11ca0c7a8aafcb7ce96a938aa4c9 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:04:52 +0900 Subject: [PATCH 339/449] improve build times and modify yarn scripts --- .ci/azure-pipelines.yml | 10 ++++++---- package.json | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 1a0f11a644..7e929f40fc 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -16,9 +16,6 @@ jobs: - job: build displayName: 'Build' - dependsOn: lint - condition: succeeded() - pool: vmImage: 'ubuntu-latest' @@ -30,7 +27,7 @@ jobs: BuildConfiguration: bundle Standalone: BuildConfiguration: standalone - maxParallel: 2 + maxParallel: 3 steps: - task: NodeTool@0 @@ -41,6 +38,10 @@ jobs: - script: 'yarn install' displayName: 'Install Dependencies' + - script: 'yarn build' + displayName: 'Build Development' + condition: eq(variables['BuildConfiguration'], 'development') + - script: 'yarn build' displayName: 'Build Bundle' condition: eq(variables['BuildConfiguration'], 'bundle') @@ -54,6 +55,7 @@ jobs: - script: 'mv dist jellyfin-web' displayName: 'Rename Directory' + condition: succeeded() - task: PublishPipelineArtifact@1 displayName: 'Publish Release' diff --git a/package.json b/package.json index 90d463fb4d..5ad70cacdf 100644 --- a/package.json +++ b/package.json @@ -90,9 +90,10 @@ ], "scripts": { "serve": "gulp serve", - "build": "gulp --bundle", + "build": "gulp", + "build development": "gulp --development", + "build bundle": "gulp --bundle", "build standalone": "gulp --standalone", - "build development": "gulp", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"" } From 89ba9cf5d76108bbdaa8c5b7efb93dde741df4e8 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:17:46 +0900 Subject: [PATCH 340/449] cache build dependencies on ci --- .ci/azure-pipelines.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 7e929f40fc..b606ac4106 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -38,6 +38,12 @@ jobs: - script: 'yarn install' displayName: 'Install Dependencies' + - task: Cache@2 + displayName: 'Cache Dependencies' + inputs: + key: 'yarn | yarn.lock' + path: '$(Pipeline.Workspace)/.yarn' + - script: 'yarn build' displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') From 9767ecb47440e31257c0ad1ee2012e9d240035ad Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:32:46 +0900 Subject: [PATCH 341/449] cache the right folder --- .ci/azure-pipelines.yml | 2 +- README.md | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index b606ac4106..c14717136a 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -42,7 +42,7 @@ jobs: displayName: 'Cache Dependencies' inputs: key: 'yarn | yarn.lock' - path: '$(Pipeline.Workspace)/.yarn' + path: '$(Pipeline.Workspace)/.node_modules' - script: 'yarn build' displayName: 'Build Development' diff --git a/README.md b/README.md index 4ee78ed786..6ad4bfcbb5 100644 --- a/README.md +++ b/README.md @@ -50,25 +50,32 @@ Jellyfin Web is the frontend used for most of the clients available for end user ### Getting Started 1. Clone or download this repository. + ```sh git clone https://github.com/jellyfin/jellyfin-web.git cd jellyfin-web ``` + 2. Install build dependencies in the project directory. + ```sh yarn install ``` 3. Run the web client with webpack for local development. + ```sh yarn serve ``` 4. Build the client with sourcemaps. + '''sh yarn ''' - Or without sourcemaps + + You can build a nginx compatible version as well. + '''sh - yarn --production + yarn --standalone ''' \ No newline at end of file From 2ecba9cd14a712054e7246c5fa4252d1296e492c Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:37:21 +0900 Subject: [PATCH 342/449] more readme changes --- .ci/azure-pipelines.yml | 2 +- README.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index c14717136a..f5515e8f69 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -42,7 +42,7 @@ jobs: displayName: 'Cache Dependencies' inputs: key: 'yarn | yarn.lock' - path: '$(Pipeline.Workspace)/.node_modules' + path: '$(Pipeline.Workspace)/node_modules' - script: 'yarn build' displayName: 'Build Development' diff --git a/README.md b/README.md index 6ad4bfcbb5..f1716d0469 100644 --- a/README.md +++ b/README.md @@ -70,12 +70,12 @@ Jellyfin Web is the frontend used for most of the clients available for end user 4. Build the client with sourcemaps. - '''sh + ```sh yarn - ''' + ``` You can build a nginx compatible version as well. - '''sh + ```sh yarn --standalone - ''' \ No newline at end of file + ``` \ No newline at end of file From 62e8d22f660675642ab67b20d07efda9ac29e434 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:43:13 +0900 Subject: [PATCH 343/449] check cache before installing dependencies --- .ci/azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index f5515e8f69..bb11c83e83 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -35,15 +35,15 @@ jobs: inputs: versionSpec: '10.x' - - script: 'yarn install' - displayName: 'Install Dependencies' - - task: Cache@2 - displayName: 'Cache Dependencies' + displayName: 'Check Cache' inputs: key: 'yarn | yarn.lock' path: '$(Pipeline.Workspace)/node_modules' + - script: 'yarn install' + displayName: 'Install Dependencies' + - script: 'yarn build' displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') From 88309a9cb4c8dbd841d9fffe7cbf0ae345f5ba0c Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 00:49:38 +0900 Subject: [PATCH 344/449] output files for testing --- .ci/azure-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index bb11c83e83..13970939c0 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -44,6 +44,9 @@ jobs: - script: 'yarn install' displayName: 'Install Dependencies' + - script: 'ls -al $(Pipeline.Workspace)' + displayName: 'Output Files' + - script: 'yarn build' displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') From 43d81f5cd954d163e3a1f6be206b3a17936021df Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 01:02:11 +0900 Subject: [PATCH 345/449] update cache and add prepare --- .ci/azure-pipelines.yml | 5 +---- package.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 13970939c0..de7780f672 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -39,14 +39,11 @@ jobs: displayName: 'Check Cache' inputs: key: 'yarn | yarn.lock' - path: '$(Pipeline.Workspace)/node_modules' + path: 'node_modules' - script: 'yarn install' displayName: 'Install Dependencies' - - script: 'ls -al $(Pipeline.Workspace)' - displayName: 'Output Files' - - script: 'yarn build' displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') diff --git a/package.json b/package.json index 5ad70cacdf..7ec376e74b 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ ], "scripts": { "serve": "gulp serve", - "build": "gulp", + "prepare": "gulp --bundle", "build development": "gulp --development", "build bundle": "gulp --bundle", "build standalone": "gulp --standalone", From b5a9273a2413b848a8c053615ded10b1a7df52ed Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 01:09:25 +0900 Subject: [PATCH 346/449] change build commands --- .ci/azure-pipelines.yml | 6 +++--- package.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index de7780f672..a3426e0114 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -44,15 +44,15 @@ jobs: - script: 'yarn install' displayName: 'Install Dependencies' - - script: 'yarn build' + - script: 'yarn build:development' displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') - - script: 'yarn build' + - script: 'yarn build:bundle' displayName: 'Build Bundle' condition: eq(variables['BuildConfiguration'], 'bundle') - - script: 'yarn build --standalone' + - script: 'yarn build:standalone' displayName: 'Build Standalone' condition: eq(variables['BuildConfiguration'], 'standalone') diff --git a/package.json b/package.json index 7ec376e74b..c4679e51e6 100644 --- a/package.json +++ b/package.json @@ -91,9 +91,9 @@ "scripts": { "serve": "gulp serve", "prepare": "gulp --bundle", - "build development": "gulp --development", - "build bundle": "gulp --bundle", - "build standalone": "gulp --standalone", + "build:development": "gulp --development", + "build:bundle": "gulp --bundle", + "build:standalone": "gulp --standalone", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"" } From be65bdad161cceb0c2b3d2bde99088bc8e3d4c1d Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 01:27:14 +0900 Subject: [PATCH 347/449] update build process in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f1716d0469..e2aac6b155 100644 --- a/README.md +++ b/README.md @@ -71,11 +71,11 @@ Jellyfin Web is the frontend used for most of the clients available for end user 4. Build the client with sourcemaps. ```sh - yarn + yarn build:development ``` You can build a nginx compatible version as well. ```sh - yarn --standalone + yarn build:standalone ``` \ No newline at end of file From a0c5920e7178a1d59dfdcb374b03b1557754ad5c Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 01:47:57 +0900 Subject: [PATCH 348/449] run ci without changing the lockfile --- .ci/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index a3426e0114..bbac82efe6 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -41,7 +41,7 @@ jobs: key: 'yarn | yarn.lock' path: 'node_modules' - - script: 'yarn install' + - script: 'yarn install --pure-lockfile' displayName: 'Install Dependencies' - script: 'yarn build:development' From fa5e1feaab8c8a2665af1680c359cfff34146f49 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 01:49:43 +0900 Subject: [PATCH 349/449] skip dependency step when cache exists --- .ci/azure-pipelines.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index bbac82efe6..6f3e2f98ed 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -40,9 +40,11 @@ jobs: inputs: key: 'yarn | yarn.lock' path: 'node_modules' + cacheHitVar: CACHE_RESTORED - script: 'yarn install --pure-lockfile' displayName: 'Install Dependencies' + condition: ne(variables.CACHE_RESTORED, 'true') - script: 'yarn build:development' displayName: 'Build Development' From 3958548b1f5f39f3f852fccbfbe53ddf05af7856 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 02:12:05 +0900 Subject: [PATCH 350/449] fix issues with standalone build --- .ci/azure-pipelines.yml | 8 ++++---- gulpfile.js | 12 ++++++------ package.json | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 6f3e2f98ed..28053bf3a1 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -23,8 +23,8 @@ jobs: matrix: Development: BuildConfiguration: development - Bundle: - BuildConfiguration: bundle + Production: + BuildConfiguration: production Standalone: BuildConfiguration: standalone maxParallel: 3 @@ -50,9 +50,9 @@ jobs: displayName: 'Build Development' condition: eq(variables['BuildConfiguration'], 'development') - - script: 'yarn build:bundle' + - script: 'yarn build:production' displayName: 'Build Bundle' - condition: eq(variables['BuildConfiguration'], 'bundle') + condition: eq(variables['BuildConfiguration'], 'production') - script: 'yarn build:standalone' displayName: 'Build Standalone' diff --git a/gulpfile.js b/gulpfile.js index f49805d346..ca6cf36dd2 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,7 +10,7 @@ const htmlmin = require('gulp-htmlmin'); const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); const mode = require('gulp-mode')({ - modes: ["development", "bundle", "standalone"], + modes: ["development", "production"], default: "development", verbose: false }); @@ -22,7 +22,7 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass') -if (mode.bundle() || mode.standalone()) { +if (mode.production()) { var config = require('./webpack.prod.js'); } else { var config = require('./webpack.dev.js'); @@ -91,15 +91,14 @@ function css() { function html() { return src(['src/**/*.html', '!src/index.html'], { base: './src/' }) - .pipe(mode.bundle(htmlmin({ collapseWhitespace: true }))) - .pipe(mode.standalone(htmlmin({ collapseWhitespace: true }))) + .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function images() { return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' }) - .pipe(imagemin()) + .pipe(mode.production(imagemin())) .pipe(dest('dist/')) .pipe(browserSync.stream()); } @@ -120,4 +119,5 @@ function injectBundle() { } exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) -exports.serve = series(exports.default, standalone, serve) +exports.standalone = series(exports.default, standalone) +exports.serve = series(exports.standalone, serve) diff --git a/package.json b/package.json index c4679e51e6..90cfa954a8 100644 --- a/package.json +++ b/package.json @@ -90,10 +90,10 @@ ], "scripts": { "serve": "gulp serve", - "prepare": "gulp --bundle", + "prepare": "gulp --production", "build:development": "gulp --development", - "build:bundle": "gulp --bundle", - "build:standalone": "gulp --standalone", + "build:production": "gulp --production", + "build:standalone": "gulp standalone --development", "lint": "eslint \"src\"", "stylelint": "stylelint \"src/**/*.css\"" } From 38b7da8f34676beef6b6fa982ae7c90cedc82be8 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 02:17:12 +0900 Subject: [PATCH 351/449] use cache for linting as well --- .ci/azure-pipelines.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 28053bf3a1..40d9a78155 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -84,8 +84,16 @@ jobs: inputs: versionSpec: '10.x' - - script: 'yarn install' + - task: Cache@2 + displayName: 'Check Cache' + inputs: + key: 'yarn | yarn.lock' + path: 'node_modules' + cacheHitVar: CACHE_RESTORED + + - script: 'yarn install --pure-lockfile' displayName: 'Install Dependencies' + condition: ne(variables.CACHE_RESTORED, 'true') - script: 'yarn run lint' displayName: 'Run ESLint' From 519751649d30b9667ead714c9643702e936577ed Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 17 Mar 2020 03:05:18 +0900 Subject: [PATCH 352/449] apply suggestions from code review Co-Authored-By: Julien Machiels --- .ci/azure-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 40d9a78155..48f042d729 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -42,7 +42,7 @@ jobs: path: 'node_modules' cacheHitVar: CACHE_RESTORED - - script: 'yarn install --pure-lockfile' + - script: 'yarn install --frozen-lockfile' displayName: 'Install Dependencies' condition: ne(variables.CACHE_RESTORED, 'true') @@ -91,7 +91,7 @@ jobs: path: 'node_modules' cacheHitVar: CACHE_RESTORED - - script: 'yarn install --pure-lockfile' + - script: 'yarn install --frozen-lockfile' displayName: 'Install Dependencies' condition: ne(variables.CACHE_RESTORED, 'true') From c5cdea622a99067f98f52198384b6af066a44016 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 16 Mar 2020 16:02:47 -0400 Subject: [PATCH 353/449] Fix schedules direct buttons being hidden by default --- src/components/tvproviders/schedulesdirect.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index a1265e7cc9..5283cd2313 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -264,13 +264,15 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em self.init = function () { options = options || {}; - if (options.showCancelButton) { + // Show cancel button by default + if (options.showCancelButton !== false) { page.querySelector(".btnCancel").classList.remove("hide"); } else { page.querySelector(".btnCancel").classList.add("hide"); } - if (options.showSubmitButton) { + // Show submit button by default + if (options.showSubmitButton !== false) { page.querySelector(".btnSubmitListings").classList.remove("hide"); } else { page.querySelector(".btnSubmitListings").classList.add("hide"); From 8f68ae48db76b56e2b46570566077729294bc876 Mon Sep 17 00:00:00 2001 From: Mednis Date: Mon, 16 Mar 2020 19:25:06 +0000 Subject: [PATCH 354/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 0fbe122433..ca28c7758c 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1031,5 +1031,20 @@ "ErrorGettingTvLineups": "Notika kļūda lejupielādējot TV sarakstus. Lūdzu pārliecinies, ka tava informācija ir pareiza un mēģini vēlreiz.", "DisplayMissingEpisodesWithinSeasonsHelp": "Tam arī jābūt iespējotam priekš TV bibliotēkām servera konfigurācijā.", "DefaultMetadataLangaugeDescription": "Šie ir jūsu noklusējumi, kas var tikt rediģēti atkarībā no bibliotēkas.", - "AddItemToCollectionHelp": "Pievieno vienumus kolekcijām tos meklējot un izmantojot to labā taustiņa vai spiediena izvēlnes lai pievienotu tos." + "AddItemToCollectionHelp": "Pievieno vienumus kolekcijām tos meklējot un izmantojot to labā taustiņa vai spiediena izvēlnes lai pievienotu tos.", + "LabelPleaseRestart": "Izmaiņas tiks pielietotas pēc manuālas web klienta pārlādes.", + "LabelPersonRole": "Loma:", + "LabelMusicStreamingTranscodingBitrateHelp": "Iestati maksimālo mūzikas straumēšanas bitu ātrumu.", + "LabelMusicStreamingTranscodingBitrate": "Mūzikas trans-kodēšanas bitu ātrums:", + "LabelModelUrl": "Modeļa URL", + "LabelModelNumber": "Modeļa numurs", + "LabelModelName": "Modeļa nosaukums", + "LabelModelDescription": "Modeļa apraksts", + "LabelMinScreenshotDownloadWidth": "Minimālais ekrānattēlu lejupielādes platums:", + "LabelMinBackdropDownloadWidth": "Minimālais fona attēla lejupielādes platums:", + "LabelKodiMetadataUser": "Saglabāt lietotāja skatīšanās informāciju uz NFO datnēm priekš:", + "LabelKodiMetadataSaveImagePathsHelp": "Tas ir ieteicams ja tev ir attēlu datņu nosaukumi, kas neatbilst Kodi vadlīnijām.", + "LabelKodiMetadataSaveImagePaths": "Saglabāt attēlu ceļus iekš nfo datnēm", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Iespējot ceļu substitūciju attēlu ceļiem izmantojot serveru ceļu substitūcijas iestatījumus.", + "LabelKodiMetadataEnablePathSubstitution": "Iespējot ceļu substitūciju" } From 9b96e7a658d09834b3eea0728268bd14ff954b15 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 17 Mar 2020 08:20:05 +0100 Subject: [PATCH 355/449] Show missing indicator in ListView --- src/components/listview/listview.css | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index b653502dae..1e485a80ed 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -238,13 +238,6 @@ background-color: transparent !important; } -.listItemMediaInfo { - /* Don't display if flex not supported */ - display: none; - align-items: center; - margin-right: 1em; -} - .listGroupHeader-first { margin-top: 0; } From b8b13a95cf2096b9d2debac1be687cae16dd9a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Libor=20Fil=C3=ADpek?= Date: Tue, 17 Mar 2020 12:08:07 +0000 Subject: [PATCH 356/449] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 23f4d624eb..14b777297c 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -229,7 +229,7 @@ "H264CrfHelp": "Constant Rate faktor (CRF) je výchozím nastavení kvality pro kodér x264. Můžete nastavit hodnoty mezi 0 a 51, kde nižší hodnoty vedou lepší kvalitě (na úkor větší velikosti souborů). Rozumné hodnoty jsou mezi 18 a 28. Výchozí hodnota pro x264 je 23, který můžete použít jako výchozí bod.", "EncoderPresetHelp": "Vyber hodnotu faster ke zvýšení výkonu, nebo slower ke zvýšení kvality.", "HDPrograms": "HD programy", - "HardwareAccelerationWarning": "Zapnutí hardwarové akcelerace může způsobit nestabilitu v některých prostředích. Ujistěte se, že vaše ovladače operačního systému a videa jsou plně aktuální. Máte-li potíže s přehráváním videa po zapnutí, budete muset změnit nastavení zpět na Auto.", + "HardwareAccelerationWarning": "Zapnutí hardwarové akcelerace může způsobit nestabilitu v některých prostředích. Ujistěte se, že vaše ovladače operačního systému a videa jsou plně aktuální. Máte-li potíže s přehráváním videa po zapnutí, budete muset změnit nastavení zpět na Žádná.", "HeaderAccessSchedule": "Přístup k naplánované úloze", "HeaderAccessScheduleHelp": "Vytvořte plán přístupu pro limitování přístupu jen určitém čase.", "HeaderActiveDevices": "Aktivní zařízení", @@ -516,7 +516,7 @@ "LabelEmbedAlbumArtDidl": "Vložit alba do DIDL", "LabelEmbedAlbumArtDidlHelp": "Některá zařízení preferují tento způsob pro získání alba. Jiné mohou selhat pokud máte tuto volbu povolenu.", "LabelEnableAutomaticPortMap": "Povolit automatické mapování portů", - "LabelEnableAutomaticPortMapHelp": "Pokusí se automaticky namapovat veřejný port místního portu přes UPnP na vašem routeru. Nemusí fungovat u některých modelů routeru.", + "LabelEnableAutomaticPortMapHelp": "Pokusí se automaticky namapovat veřejný port místního portu přes UPnP na vašem routeru. Nemusí fungovat u některých modelů routeru. Změny se projeví až po restartování serveru.", "LabelEnableBlastAliveMessages": "Vytroubit zprávu do světa", "LabelEnableBlastAliveMessagesHelp": "Povolit v případě, že server není zjistitelný jinými UPnP zařízeními v síti.", "LabelEnableDlnaClientDiscoveryInterval": "Čas pro vyhledání klienta (sekund)", @@ -1570,5 +1570,7 @@ "LabelCorruptedFrames": "Poškozené snímky:", "OptionForceRemoteSourceTranscoding": "Vynutit transkódování vzdálených zdrojů médií (jako např. živá TV)", "NoCreatedLibraries": "Zdá se, že jste dosud nevytvořili žádnou knihovnu. {0}Chtěli byste nějakou vytvořit nyní?{1}", - "AskAdminToCreateLibrary": "Požádejte administrátora o vytvoření knihovny." + "AskAdminToCreateLibrary": "Požádejte administrátora o vytvoření knihovny.", + "AllowFfmpegThrottlingHelp": "Když se překódování nebo remux dostane dostatečně daleko dopředu od aktuální pozice přehrávání, pozastaví se proces, aby spotřeboval méně zdrojů. To je nejužitečnější při sledování bez častého vyhledávání. Pokud máte problémy s přehráváním, vypněte tuto funkci.", + "AllowFfmpegThrottling": "Omezit překódování" } From bfe37507cddc09d119562d8fef3c8d5840859054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Koliandr?= Date: Tue, 17 Mar 2020 15:26:38 +0000 Subject: [PATCH 357/449] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 14b777297c..ac3f8dd416 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -7,7 +7,7 @@ "AddToPlayQueue": "Přidat do fronty k přehrání", "AddToPlaylist": "Přidat do playlistu", "AddedOnValue": "Přidáno {0}", - "AdditionalNotificationServices": "Prohlédněte si katalog zásuvných modulů pro nainstalaci další oznámovací služby.", + "AdditionalNotificationServices": "Pro instalaci dalších oznamovacích služeb si prohlédněte katalog zásuvných modulů.", "Albums": "Alba", "All": "Vše", "AllChannels": "Všechny kanály", @@ -229,7 +229,7 @@ "H264CrfHelp": "Constant Rate faktor (CRF) je výchozím nastavení kvality pro kodér x264. Můžete nastavit hodnoty mezi 0 a 51, kde nižší hodnoty vedou lepší kvalitě (na úkor větší velikosti souborů). Rozumné hodnoty jsou mezi 18 a 28. Výchozí hodnota pro x264 je 23, který můžete použít jako výchozí bod.", "EncoderPresetHelp": "Vyber hodnotu faster ke zvýšení výkonu, nebo slower ke zvýšení kvality.", "HDPrograms": "HD programy", - "HardwareAccelerationWarning": "Zapnutí hardwarové akcelerace může způsobit nestabilitu v některých prostředích. Ujistěte se, že vaše ovladače operačního systému a videa jsou plně aktuální. Máte-li potíže s přehráváním videa po zapnutí, budete muset změnit nastavení zpět na Žádná.", + "HardwareAccelerationWarning": "Zapnutí hardwarové akcelerace může způsobit nestabilitu v některých prostředích. Ujistěte se, že váš operační systém a grafické ovladače jsou aktuální. Máte-li potíže s přehráváním videa po zapnutí této funkce, budete muset změnit nastavení zpět na Žádné.", "HeaderAccessSchedule": "Přístup k naplánované úloze", "HeaderAccessScheduleHelp": "Vytvořte plán přístupu pro limitování přístupu jen určitém čase.", "HeaderActiveDevices": "Aktivní zařízení", @@ -1205,7 +1205,7 @@ "ValueVideoCodec": "Video kodeky: {0}", "ViewAlbum": "Zobrazit album", "ViewArtist": "Zobrazit úmělce", - "Watched": "Shlédnuto", + "Watched": "Zhlédnuto", "Wednesday": "Středa", "WelcomeToProject": "Vítejte v Jellyfin!", "WizardCompleted": "To je vše, co nyní potřebujeme. Jellyfin začala shromažďovat informace o vaší knihovně médií. Podívejte se na některé z našich aplikací, a potom klepněte na tlačítko Dokončit pro zobrazení hlavního panelu.", @@ -1230,7 +1230,7 @@ "AllowMediaConversionHelp": "Povolit nebo zakázat přístup k funkci konverze médií.", "AllowOnTheFlySubtitleExtraction": "Povolit extrahování titulků za běhu", "AllowOnTheFlySubtitleExtractionHelp": "Vložené titulky mohou být extrahovány z videa a dodávány do aplikací ve formě prostého textu, aby se zabránilo překódování videa. V některých systémech to může trvat dlouho a způsobit zasekávání přehrávání videa. Při vypnutí funkce budou během překódování obsažené titulky vypáleny do obrazu, pokud je klientské zařízení nativně nepodporuje.", - "AllowRemoteAccess": "Povolit vzdálené připojení na server Jellyfin.", + "AllowRemoteAccess": "Povolit vzdálené připojení na tento Jellyfin server.", "AllowRemoteAccessHelp": "Pokud není zapnuto, všechna vzdálená připojení budou blokována.", "AllowSeasonalThemesHelp": "Pokud je povoleno, sezónní motivy občas přepíšou nastavení vašeho motivu.", "AllowedRemoteAddressesHelp": "Seznam IP adres nebo síťových masek oddělených čárkou pro sítě, ze kterých se lze vzdáleně připojit. Pokud necháte prázdné, všechny adresy budou povoleny.", @@ -1245,7 +1245,7 @@ "AutomaticallyConvertNewContentHelp": "Nový obsah přidaný do této složky bude automaticky zkonvertován.", "Banner": "Banner", "BestFit": "Nejvhodnější", - "Blacklist": "Blacklist", + "Blacklist": "Černá listina", "BobAndWeaveWithHelp": "Bob and weave (vyšší kvalita, ale pomalejší)", "Browse": "Procházet", "BurnSubtitlesHelp": "Určuje, zda má server vypalovat titulky při převodu videa v závislosti na formátu titulků. Vynechání vypalování titulků zlepší výkon serveru. Chcete-li vypálit grafické formáty (VOBSUB, PGS, SUB / IDX atd.) a některé titulky ASS / SSA, vyberte možnost Auto.", @@ -1513,7 +1513,7 @@ "Vertical": "Svisle", "VideoRange": "Rozsah videa", "ViewPlaybackInfo": "Zobrazení informací o přehrávání", - "Whitelist": "Whitelist", + "Whitelist": "Bílá listina", "HeaderHome": "Domů", "DashboardOperatingSystem": "Operační systém: {0}", "DashboardArchitecture": "Architektura: {0}", From 37dd138eaf422481e021a47794d7d0284649d106 Mon Sep 17 00:00:00 2001 From: Nutjob Date: Tue, 17 Mar 2020 17:11:26 +0000 Subject: [PATCH 358/449] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index eec45f42b8..5b213e1bce 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -3,13 +3,13 @@ "AccessRestrictedTryAgainLater": "L'accesso è attualmente limitato. Si prega di riprovare più tardi.", "Actor": "Attore", "Add": "Aggiungi", - "AddItemToCollectionHelp": "Aggiungi elementi alle collezioni ricercandoli e utilizzando il pulsante destro del mouse o toccare i menu per aggiungerli a una raccolta.", + "AddItemToCollectionHelp": "Aggiungi elementi alle collezioni ricercandoli e utilizzando il pulsante destro del mouse o tocca i menu per aggiungerli a una raccolta.", "AddToCollection": "Aggiunto alla collezione", "AddToPlayQueue": "Aggiungi alla coda di riproduzione", "AddToPlaylist": "Aggiungi alla playlist", "AddedOnValue": "Aggiunto {0}", "AdditionalNotificationServices": "Sfoglia il catalogo plugin per installare i servizi di notifica aggiuntivi.", - "AirDate": "Data messa in Onda", + "AirDate": "Data messa in onda", "Aired": "In onda", "Albums": "Album", "All": "Tutto", @@ -130,7 +130,7 @@ "ColorTransfer": "Trasferimento Colore", "CommunityRating": "Voto del pubblico", "Composer": "Compositore", - "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal pannello di controllo del Server Jellyfin, nelle impostazioni della Libreria.", + "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal pannello di controllo del Server Jellyfin, nelle impostazioni della Libreria", "ConfirmDeleteImage": "Elimina immagine?", "ConfirmDeleteItem": "L'eliminazione di questo elemento lo cancellerà sia dal disco che dalla libreria multimediale. Sei sicuro di voler continuare?", "ConfirmDeleteItems": "L'eliminazione di questi elementi li cancellerà sia dal disco che dalla tua libreria multimediale. Sei sicuro di voler continuare?", @@ -961,7 +961,7 @@ "OptionDownloadBackImage": "Indietro", "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", - "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste da un'applicazione Jellyfin. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni librarie molto più lunghe.", + "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste da un'applicazione Jellyfin. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni delle librerie molto più lunghe.", "OptionDownloadMenuImage": "Menù", "OptionDownloadPrimaryImage": "Locandina", "OptionDownloadThumbImage": "Foto", From 19c20ab029de3f388d88fb652f7a30c1b501c486 Mon Sep 17 00:00:00 2001 From: Deniz Date: Tue, 17 Mar 2020 18:37:15 +0000 Subject: [PATCH 359/449] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index 2df8759815..e1ac24da6d 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -287,7 +287,7 @@ "AllEpisodes": "Tüm bölümler", "AllLanguages": "Tüm diller", "AllowMediaConversion": "Medya dönüşümüne izin ver", - "AddItemToCollectionHelp": "Ögeleri koleksiyona eklemek için arama yapın ve üzerine sağ tıklayın veya sekme menüsünden koleksiyona ekleyin.", + "AddItemToCollectionHelp": "Ögeleri koleksiyona eklemek için; arama yapın ve üzerine sağ tıklayın veya sekme menüsünden koleksiyona ekleyin.", "AllowHWTranscodingHelp": "Ayarlayıcının anında akışları dönüştürmesine izin verin. Bu, sunucunun gerektirdiği kodlamanın azaltılmasına yardımcı olabilir.", "ColorSpace": "Renk uzayı", "ButtonConnect": "Bağlan", @@ -336,8 +336,8 @@ "ButtonAddServer": "Sunucu Ekle", "ButtonAudioTracks": "Ses Parçaları", "ButtonChangeServer": "Sunucu Değiştir", - "ButtonGotIt": "Anladım", - "ButtonMore": "Daha", + "ButtonGotIt": "Anlaşıldı", + "ButtonMore": "Dahası", "ButtonOpen": "Aç", "ButtonArrowUp": "Yukarı", "ButtonNetwork": "Ağ", @@ -396,7 +396,7 @@ "BirthLocation": "Doğum Yeri", "BirthPlaceValue": "Doğum yeri: {0}", "Auto": "Oto", - "Blacklist": "Kara Liste", + "Blacklist": "Karaliste", "BoxRear": "Kutu (arka)", "ButtonAddMediaLibrary": "Medya Kitaplığı Ekle", "ButtonSubmit": "Onayla", @@ -404,8 +404,8 @@ "ButtonTrailer": "Fragman", "Box": "Kutu", "ButtonViewWebsite": "Web sitesini görüntüle", - "CancelRecording": "Kaydı iptal et", - "CancelSeries": "Serileri iptal et", + "CancelRecording": "Kayıttan Vazgeç", + "CancelSeries": "Dizileri iptal et", "ButtonUninstall": "Kaldır", "ButtonUp": "Yukarı", "ButtonWebsite": "Website", From 2c0ee853377e1567920edcccfc4a86852c6ef1c9 Mon Sep 17 00:00:00 2001 From: Fernando Date: Wed, 18 Mar 2020 18:35:05 +0000 Subject: [PATCH 360/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 6abc351d50..3d56ff56d8 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1248,8 +1248,8 @@ "Descending": "Descendiente", "DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin ninguna pérdida de calidad en el vídeo.", - "Director": "Director", - "DirectorValue": "Director: {0}", + "Director": "Dirección de", + "DirectorValue": "Dirección de: {0}", "DirectorsValue": "Directores: {0}", "Display": "Mostrar", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", From a01c03c9caf3f2e65654776bc9de66fa0c25b696 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Wed, 18 Mar 2020 13:58:23 +0000 Subject: [PATCH 361/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index da45054243..4a52756ec4 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -175,9 +175,9 @@ "DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3, etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.", "DirectStreamHelp2": "Le streaming en direct d'un fichier utilise très peu de puissance de traitement sans perte de qualité vidéo.", "DirectStreaming": "Streaming direct", - "Director": "Réalisateur(trice)", - "DirectorValue": "Réalisateur: {0}", - "DirectorsValue": "Réalisateurs: {0}", + "Director": "Réalisation", + "DirectorValue": "Réalisation : {0}", + "DirectorsValue": "Réalisation : {0}", "Disabled": "Désactivé", "Disc": "Disque", "Disconnect": "Déconnecter", @@ -1457,14 +1457,14 @@ "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", "HeaderNavigation": "Navigation", "OptionForceRemoteSourceTranscoding": "Transcodage forcé pour sources de media à distance (ex: TV en direct)", - "MessageConfirmAppExit": "Sortir?", - "LabelVideoResolution": "Résolution vidéo", - "LabelStreamType": "Type de flux", + "MessageConfirmAppExit": "Voulez-vous quitter ?", + "LabelVideoResolution": "Résolution vidéo :", + "LabelStreamType": "Type de flux :", "EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées", "EnableFastImageFadeIn": "Transition d'image rapide", - "LabelPlayerDimensions": "Dimension du lecteur", - "LabelDroppedFrames": "Cadre informatique oublié", - "LabelCorruptedFrames": "Cadre informatique corrompu", + "LabelPlayerDimensions": "Dimension du lecteur:", + "LabelDroppedFrames": "Images perdues:", + "LabelCorruptedFrames": "Images corrompues:", "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL.", "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", From 3f47733c35fe0075bb6ab6eff199d8690021743b Mon Sep 17 00:00:00 2001 From: Mednis Date: Wed, 18 Mar 2020 23:47:58 +0000 Subject: [PATCH 362/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 53 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index ca28c7758c..034609a48f 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -32,11 +32,11 @@ "MessageDownloadQueued": "Lejupielāde ierindota.", "MessageCreateAccountAt": "Izveido kontu {0}", "MessageContactAdminToResetPassword": "Lūdzu sazinies ar sistēmas administratoru lai atiestatītu paroli.", - "MessageConfirmShutdown": "Vai tu tiešām gribi izslēgt serveri?", - "MessageConfirmRestart": "Vai tu tiešām gribi restartēt Jellyfin Server?", - "MessageConfirmRemoveMediaLocation": "Vai tu tiešām gribi noņemt šo ceļu?", + "MessageConfirmShutdown": "Vai tu tiešām vēlies izslēgt serveri?", + "MessageConfirmRestart": "Vai tu tiešām vēlies restartēt Jellyfin Server?", + "MessageConfirmRemoveMediaLocation": "Vai tu tiešām vēlies noņemt šo ceļu?", "MessageConfirmRecordingCancellation": "Atcelt ierakstu?", - "MessageConfirmAppExit": "Vai tu gribi iziet?", + "MessageConfirmAppExit": "Vai tu vēlies iziet?", "MessageAlreadyInstalled": "Šī versija jau ir uzstādīta.", "MediaInfoStreamTypeVideo": "Video", "MediaInfoStreamTypeSubtitle": "Subtitri", @@ -698,7 +698,7 @@ "Unplayed": "Neatskaņots", "Unmute": "Ieslēgt skaņu", "UninstallPluginHeader": "Noņemt Paplašinājumu", - "UninstallPluginConfirmation": "Vai tu tiešām gribi noņemt {0}?", + "UninstallPluginConfirmation": "Vai tu tiešām vēlies noņemt {0}?", "Tuesday": "Otrdiena", "Transcoding": "Trans-kodēšana", "Trailers": "Treileri", @@ -916,9 +916,9 @@ "HeaderTaskTriggers": "Uzdevumu Trigeri", "HeaderSelectTranscodingPathHelp": "Pārlūko vai ievadi ceļu, kurā tiks glabātas īslaicīgās trans-kodēšanas datnes. Šai mapei jābūt rakstāmai.", "HeaderSelectTranscodingPath": "Izvēlies Trans-kodēšanas Īslaicīgo Ceļu", - "HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.", + "HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā vēlies saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.", "HeaderSelectPath": "Izvēlies Ceļu", - "HeaderSelectMetadataPathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt metadatus. Šai mapei jābūt rakstāmai.", + "HeaderSelectMetadataPathHelp": "Pārlūko vai ievadi ceļu, kurā vēlies saglabāt metadatus. Šai mapei jābūt rakstāmai.", "HeaderSelectMetadataPath": "Izvēlies Metadatu Ceļu", "HeaderSelectCertificatePath": "Izvēlies Sertifikāta Ceļu", "HeaderScenes": "Ainas", @@ -975,11 +975,11 @@ "DirectStreamHelp1": "Šis medijs ir saderīgs ar ierīci pēc izšķirtspējas un medija veida (H.264, AC3, utt.), bet atrodas nesaderīgā datnes konteinerī (mkv, avi, wmv, utt.). Video tiks pārpakots uz saderīgu formātu pirms tas tiks straumēts uz ierīci.", "Descending": "Disltošs", "Depressed": "Atspiests", - "DeleteUserConfirmation": "Vai tu tiešām gribi izdzēst šo lietotāju?", + "DeleteUserConfirmation": "Vai tu tiešām vēlies izdzēst šo lietotāju?", "DeleteUser": "Dzēst Lietotāju", "DeleteMedia": "Dzēst mediju", - "DeleteImageConfirmation": "Vai tu tiešām gribi izdzēst šo attēlu?", - "DeleteDeviceConfirmation": "Vai tu tiešām gribi noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.", + "DeleteImageConfirmation": "Vai tu tiešām vēlies izdzēst šo attēlu?", + "DeleteDeviceConfirmation": "Vai tu tiešām vēlies noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.", "DefaultErrorMessage": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", "DeathDateValue": "Miris: {0}", "ConfirmEndPlayerSession": "Vai jūs gribat izslēgt Jellyfin uz {0}?", @@ -1046,5 +1046,36 @@ "LabelKodiMetadataSaveImagePathsHelp": "Tas ir ieteicams ja tev ir attēlu datņu nosaukumi, kas neatbilst Kodi vadlīnijām.", "LabelKodiMetadataSaveImagePaths": "Saglabāt attēlu ceļus iekš nfo datnēm", "LabelKodiMetadataEnablePathSubstitutionHelp": "Iespējot ceļu substitūciju attēlu ceļiem izmantojot serveru ceļu substitūcijas iestatījumus.", - "LabelKodiMetadataEnablePathSubstitution": "Iespējot ceļu substitūciju" + "LabelKodiMetadataEnablePathSubstitution": "Iespējot ceļu substitūciju", + "MessageDirectoryPickerBSDInstruction": "Priekš BSD, tev var būt vajadzēs nokonfigurēt glabātuvi savā FreeNAS jail, lai atļautu Jellyfin tai piekļuvi.", + "MessageConfirmRevokeApiKey": "Vai tu tiešām vēlies atsaukt šo api atslēgu? Lietotnes savienojums ar Jellyfin Serveri tiks strauji atslēgts.", + "MessageConfirmProfileDeletion": "Vai tu tiešām vēlies izdzēst šo profilu?", + "LabelTranscodingProgress": "Trans-kodēšanas progress:", + "LabelTranscodingFramerate": "Trans-kodēšanas kadru ātrums:", + "LabelRecordingPathHelp": "Ievadi noklusējuma vietējo vietu, kur saglabāt ierakstus. Ja atstāsts tukšs, servera programmas datu mape tiks lietota tā vietā.", + "LabelPublicHttpsPortHelp": "Publiskais porta numurs, ko kartēt uz vietējo HTTPS portu.", + "LabelOriginalAspectRatio": "Oriģinālās proporcijas:", + "LabelMaxStreamingBitrateHelp": "Ievadi maksimālo bitu ātrumu straumēšanai.", + "LabelLocalHttpServerPortNumberHelp": "TCP porta numurs, kuru izmantos Jellyfin HTTP serveris.", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Vai tiešām vēlies noņemt šo mediju datni?", + "MessageAreYouSureDeleteSubtitles": "Vai tiešām vēlies izdzēst šo subtitru datni?", + "MediaIsBeingConverted": "Medijs tiek pārveidots uz formātu kuru atbalsta tā atskaņojošā ierīce.", + "MediaInfoStreamTypeEmbeddedImage": "Iegults Attēls", + "MediaInfoTimestamp": "Laika zīmogs", + "MediaInfoSampleRate": "Izlases ātrums", + "MediaInfoInterlaced": "Rindpārlēkts", + "MediaInfoFramerate": "Kadru ātrums", + "MediaInfoAspectRatio": "Attēla proporcijas", + "MaxParentalRatingHelp": "Saturs ar augstāku reitingu tiks paslēpts no šī lietotāja.", + "LibraryAccessHelp": "Izvēlies bibliotēkas, ko koplietot ar šo lietotāju. Administratori spēs rediģēt visas bibliotēkas izmantojot metadatu pārvaldnieku.", + "LearnHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.", + "LabelUserLoginAttemptsBeforeLockout": "Neizdevušies piekļuves mēģinājumi pirms lietotājs tiek bloķēts:", + "LabelTranscodingThreadCount": "Trans-kodēšanas kodolu daudzums:", + "LabelTranscodes": "Transkodi:", + "LabelTitle": "Tituls:", + "LabelSaveLocalMetadata": "Saglabāt māksu media mapēs", + "LabelReadHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.", + "LabelNumberOfGuideDays": "Dienu daudzumus, kuram lejupielādēt gidu:", + "LabelLockItemToPreventChanges": "Aizslēgt šo objektu lai aizliegtu izmaiņas", + "LabelLocalHttpServerPortNumber": "Vietējais HTTP porta numurs:" } From 401c2fa076a8c4350cb8993ebf1f0f1ae59cbd45 Mon Sep 17 00:00:00 2001 From: rtg Date: Thu, 19 Mar 2020 05:16:19 +0000 Subject: [PATCH 363/449] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index cbcac11332..122f4aa98b 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -32,5 +32,7 @@ "Aired": "प्रसारित हो चुका", "AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।", "AddedOnValue": "जोड़ दिया", - "AddToPlaylist": "प्लेलिस्ट में जोड़ें" + "AddToPlaylist": "प्लेलिस्ट में जोड़ें", + "AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें", + "AllowMediaConversion": "मीडिया रूपांतरण की अनुमति दें" } From e0a5c5c558072d97d1ce6a70f287d1d9888d0ec1 Mon Sep 17 00:00:00 2001 From: Mednis Date: Thu, 19 Mar 2020 10:31:28 +0000 Subject: [PATCH 364/449] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 034609a48f..657a2261a5 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1077,5 +1077,11 @@ "LabelReadHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.", "LabelNumberOfGuideDays": "Dienu daudzumus, kuram lejupielādēt gidu:", "LabelLockItemToPreventChanges": "Aizslēgt šo objektu lai aizliegtu izmaiņas", - "LabelLocalHttpServerPortNumber": "Vietējais HTTP porta numurs:" + "LabelLocalHttpServerPortNumber": "Vietējais HTTP porta numurs:", + "OptionAllowManageLiveTv": "Atļaut Tiešraides TV ierakstu pārvaldīšanu", + "OptionAllowLinkSharing": "Atļaut dalīšanos sociālajos tīklos", + "OptionAllowBrowsingLiveTv": "Atļaut Tiešraides TV piekļuvi", + "MediaInfoForced": "Piespiests", + "LabelPublicHttpPortHelp": "Publiskai porta numurs, kas tiks kartēts uz vietējo HTTP portu.", + "LabelOptionalNetworkPath": "(Neobligāts) Koplietota tīkla mape:" } From 2ef912d96078fa6978bfa8d0d082a4b9e746b672 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 20 Mar 2020 02:54:12 +0900 Subject: [PATCH 365/449] add method to open client settings --- src/controllers/user/menu.js | 10 ++++++++++ src/mypreferencesmenu.html | 9 +++++++++ src/strings/en-us.json | 1 + 3 files changed, 20 insertions(+) diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index 6087beadfe..b1e2b7b519 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -10,6 +10,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio Dashboard.selectServer(); }); + view.querySelector(".clientSettings").addEventListener("click", function () { + window.NativeShell.openClientSettings(); + }); + view.addEventListener("viewshow", function() { // this page can also be used by admins to change user preferences from the user edit page var userId = params.userId || Dashboard.getCurrentUserId(); @@ -21,6 +25,12 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId); page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId); + if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) { + page.querySelector(".clientSettings").classList.remove("hide"); + } else { + page.querySelector(".clientSettings").classList.add("hide"); + } + if (appHost.supports("multiserver")) { page.querySelector(".selectServer").classList.remove("hide"); } else { diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 41fcd1b75c..4219059dd0 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -47,6 +47,15 @@
+ + +
+ +
+
${ClientSettings}
+
+
+

${HeaderAdmin}

diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 62e8fa3f8f..f08de6b462 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -147,6 +147,7 @@ "ChannelNumber": "Channel number", "Channels": "Channels", "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "ClientSettings": "Client Settings", "Collections": "Collections", "ColorPrimaries": "Color primaries", "ColorSpace": "Color space", From 69a3c7cd538d5b35fef35b914f453e34e84ff20c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 19 Mar 2020 14:37:48 -0400 Subject: [PATCH 366/449] Add FIXME to revisit show/hide button logic for tv providers --- src/components/tvproviders/schedulesdirect.js | 18 ++++++++++-------- src/components/tvproviders/xmltv.js | 16 ++++++++++------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 5283cd2313..4a6f3d297f 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -264,18 +264,20 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em self.init = function () { options = options || {}; - // Show cancel button by default - if (options.showCancelButton !== false) { - page.querySelector(".btnCancel").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showCancelButton === false) { page.querySelector(".btnCancel").classList.add("hide"); + } else { + page.querySelector(".btnCancel").classList.remove("hide"); } - // Show submit button by default - if (options.showSubmitButton !== false) { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showSubmitButton === false) { page.querySelector(".btnSubmitListings").classList.add("hide"); + } else { + page.querySelector(".btnSubmitListings").classList.remove("hide"); } $(".formLogin", page).on("submit", function () { diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index a86a1e1099..0ba164fe25 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -163,16 +163,20 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa self.init = function () { options = options || {}; - if (false !== options.showCancelButton) { - page.querySelector(".btnCancel").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showCancelButton === false) { page.querySelector(".btnCancel").classList.add("hide"); + } else { + page.querySelector(".btnCancel").classList.remove("hide"); } - if (false !== options.showSubmitButton) { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showSubmitButton === false) { page.querySelector(".btnSubmitListings").classList.add("hide"); + } else { + page.querySelector(".btnSubmitListings").classList.remove("hide"); } $("form", page).on("submit", function () { From c5bb25809bd29ce4f4baf74b379c810906987d39 Mon Sep 17 00:00:00 2001 From: pakkosauna Date: Thu, 19 Mar 2020 19:52:07 +0000 Subject: [PATCH 367/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 91e32afe63..11d497fd19 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -305,5 +305,10 @@ "EnableDisplayMirroring": "Näytön peilaus", "EnableColorCodedBackgrounds": "Väri-koodatut taustat", "EnableCinemaMode": "Teatteri-tila", - "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa." + "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.", + "EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.", + "Depressed": "Painettu", + "CopyStreamURLError": "Verkko-osoitteen kopioinnissa tapahtui virhe.", + "ButtonSplit": "jaa", + "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto." } From e8bc839d0babd2c1a63e3eb4ff253ce43c948a9c Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 20 Mar 2020 17:49:32 +0900 Subject: [PATCH 368/449] update methods for native shell --- src/components/shell.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/shell.js b/src/components/shell.js index f82f5eea3c..4f1aa0c8de 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -10,12 +10,6 @@ define([], function () { } }, - canExec: false, - exec: function (options) { - // options.path - // options.arguments - return Promise.reject(); - }, enableFullscreen: function () { if (window.NativeShell) { window.NativeShell.enableFullscreen(); From 10a49012262a9bcee2b400acce264f1f7c805e99 Mon Sep 17 00:00:00 2001 From: Medzhnun Date: Fri, 20 Mar 2020 11:28:28 +0000 Subject: [PATCH 369/449] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index d1f6b11b96..c2b0bb6922 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -832,5 +832,9 @@ "ButtonNetwork": "Мрежа", "ButtonFullscreen": "На цял екран", "ButtonDown": "Надолу", - "ButtonConnect": "Свързване" + "ButtonConnect": "Свързване", + "AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи", + "AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.", + "AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.", + "Absolute": "Aбсолютен" } From 58af4a65989ed19bbe50470e4d423e4a5457a615 Mon Sep 17 00:00:00 2001 From: nfgb Date: Fri, 20 Mar 2020 22:32:09 +0000 Subject: [PATCH 370/449] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index da6d26d947..ecd6ccb079 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1213,5 +1213,10 @@ "CopyStreamURLError": "Ocorreu um erro ao copiar o URL.", "ButtonSplit": "Dividir", "AskAdminToCreateLibrary": "Peça a um administrador para criar a biblioteca.", - "AllowFfmpegThrottling": "Transcodificação com falhas" + "AllowFfmpegThrottling": "Transcodificação com falhas", + "DashboardOperatingSystem": "Sistema Operativo", + "LabelUserLoginAttemptsBeforeLockout": "Número de tentativas de login falhadas antes do bloqueio do utilizador:", + "LabelTrackNumber": "Número da faixa:", + "LabelSportsCategories": "Categorias de Desportos:", + "Yesterday": "Ontem" } From cb97baa61ab9a6c797a995e6010ffa12974f3b96 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 21 Mar 2020 18:14:08 +0100 Subject: [PATCH 371/449] Move prompt, confirm and sendcastapi to one module each --- src/components/castSenderApi.js | 34 +++++++++ src/components/confirm/confirm.js | 93 ++++++++++++++++--------- src/components/confirm/nativeconfirm.js | 27 ------- src/components/prompt/nativeprompt.js | 28 -------- src/components/prompt/prompt.js | 50 +++++++++---- src/scripts/site.js | 51 +------------- 6 files changed, 131 insertions(+), 152 deletions(-) create mode 100644 src/components/castSenderApi.js delete mode 100644 src/components/confirm/nativeconfirm.js delete mode 100644 src/components/prompt/nativeprompt.js diff --git a/src/components/castSenderApi.js b/src/components/castSenderApi.js new file mode 100644 index 0000000000..a1e7bd8755 --- /dev/null +++ b/src/components/castSenderApi.js @@ -0,0 +1,34 @@ +define([], function() { + 'use strict'; + + if (window.appMode === "cordova" || window.appMode === "android") { + return { + load: function () { + window.chrome = window.chrome || {}; + return Promise.resolve(); + } + }; + } else { + var ccLoaded = false; + return { + load: function () { + if (ccLoaded) { + return Promise.resolve(); + } + + return new Promise(function (resolve, reject) { + var fileref = document.createElement("script"); + fileref.setAttribute("type", "text/javascript"); + + fileref.onload = function () { + ccLoaded = true; + resolve(); + }; + + fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"); + document.querySelector("head").appendChild(fileref); + }); + } + }; + } +}); diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index f104350c87..fa9a156679 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -1,40 +1,65 @@ -define(['dialog', 'globalize'], function (dialog, globalize) { +define(["browser", "dialog", "globalize"], function(browser, dialog, globalize) { 'use strict'; - return function (text, title) { + function replaceAll(str, find, replace) { + return str.split(find).join(replace); + } - var options; - if (typeof text === 'string') { - options = { - title: title, - text: text - }; - } else { - options = text; - } - - var items = []; - - items.push({ - name: options.cancelText || globalize.translate('ButtonCancel'), - id: 'cancel', - type: 'cancel' - }); - - items.push({ - name: options.confirmText || globalize.translate('ButtonOk'), - id: 'ok', - type: options.primary === 'delete' ? 'delete' : 'submit' - }); - - options.buttons = items; - - return dialog(options).then(function (result) { - if (result === 'ok') { - return Promise.resolve(); + if (browser.tv && window.confirm) { + // Use the native confirm dialog + return function (options) { + if (typeof options === 'string') { + options = { + title: '', + text: options + }; } - return Promise.reject(); - }); - }; + var text = replaceAll(options.text || '', '
', '\n'); + var result = confirm(text); + + if (result) { + return Promise.resolve(); + } else { + return Promise.reject(); + } + }; + } else { + // Use our own dialog + return function (text, title) { + var options; + if (typeof text === 'string') { + options = { + title: title, + text: text + }; + } else { + options = text; + } + + var items = []; + + items.push({ + name: options.cancelText || globalize.translate('ButtonCancel'), + id: 'cancel', + type: 'cancel' + }); + + items.push({ + name: options.confirmText || globalize.translate('ButtonOk'), + id: 'ok', + type: options.primary === 'delete' ? 'delete' : 'submit' + }); + + options.buttons = items; + + return dialog(options).then(function (result) { + if (result === 'ok') { + return Promise.resolve(); + } + + return Promise.reject(); + }); + }; + } }); diff --git a/src/components/confirm/nativeconfirm.js b/src/components/confirm/nativeconfirm.js deleted file mode 100644 index 7d72bc5eaf..0000000000 --- a/src/components/confirm/nativeconfirm.js +++ /dev/null @@ -1,27 +0,0 @@ -define([], function () { - 'use strict'; - - function replaceAll(str, find, replace) { - - return str.split(find).join(replace); - } - - return function (options) { - - if (typeof options === 'string') { - options = { - title: '', - text: options - }; - } - - var text = replaceAll(options.text || '', '
', '\n'); - var result = confirm(text); - - if (result) { - return Promise.resolve(); - } else { - return Promise.reject(); - } - }; -}); diff --git a/src/components/prompt/nativeprompt.js b/src/components/prompt/nativeprompt.js deleted file mode 100644 index ba7f1a9a49..0000000000 --- a/src/components/prompt/nativeprompt.js +++ /dev/null @@ -1,28 +0,0 @@ -define([], function () { - 'use strict'; - - function replaceAll(str, find, replace) { - - return str.split(find).join(replace); - } - - return function (options) { - - if (typeof options === 'string') { - options = { - label: '', - text: options - }; - } - - var label = replaceAll(options.label || '', '
', '\n'); - - var result = prompt(label, options.text || ''); - - if (result) { - return Promise.resolve(result); - } else { - return Promise.reject(result); - } - }; -}); diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 8f4f839eaa..32fadb811c 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -1,6 +1,10 @@ -define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { +define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function(browser, dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { 'use strict'; + function replaceAll(str, find, replace) { + return str.split(find).join(replace); + } + function setInputProperties(dlg, options) { var txtInput = dlg.querySelector('#txtInput'); @@ -13,7 +17,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're } function showDialog(options, template) { - var dialogOptions = { removeOnClose: true, scrollY: false @@ -71,7 +74,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're dlg.style.minWidth = (Math.min(400, dom.getWindowSize().innerWidth - 50)) + 'px'; return dialogHelper.open(dlg).then(function () { - if (layoutManager.tv) { scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } @@ -86,19 +88,37 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're }); } - return function (options) { + if ((browser.tv || browser.xboxOne) && window.confirm) { + return function (options) { + if (typeof options === 'string') { + options = { + label: '', + text: options + }; + } - return new Promise(function (resolve, reject) { - require(['text!./prompt.template.html'], function (template) { + var label = replaceAll(options.label || '', '
', '\n'); + var result = prompt(label, options.text || ''); - if (typeof options === 'string') { - options = { - title: '', - text: options - }; - } - showDialog(options, template).then(resolve, reject); + if (result) { + return Promise.resolve(result); + } else { + return Promise.reject(result); + } + }; + } else { + return function (options) { + return new Promise(function (resolve, reject) { + require(['text!./prompt.template.html'], function (template) { + if (typeof options === 'string') { + options = { + title: '', + text: options + }; + } + showDialog(options, template).then(resolve, reject); + }); }); - }); - }; + }; + } }); diff --git a/src/scripts/site.js b/src/scripts/site.js index 0ab8e9a1f0..6739e3cd59 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -355,39 +355,6 @@ var AppInfo = {}; return headroom; } - function getCastSenderApiLoader() { - var ccLoaded = false; - return { - load: function () { - if (ccLoaded) { - return Promise.resolve(); - } - - return new Promise(function (resolve, reject) { - var fileref = document.createElement("script"); - fileref.setAttribute("type", "text/javascript"); - - fileref.onload = function () { - ccLoaded = true; - resolve(); - }; - - fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"); - document.querySelector("head").appendChild(fileref); - }); - } - }; - } - - function getDummyCastSenderApiLoader() { - return { - load: function () { - window.chrome = window.chrome || {}; - return Promise.resolve(); - } - }; - } - function createSharedAppFooter(appFooter) { return new appFooter({}); } @@ -439,28 +406,16 @@ var AppInfo = {}; defineResizeObserver(); define("dialog", [componentsPath + "/dialog/dialog"], returnFirstDependency); - if (preferNativeAlerts && window.confirm) { - define("confirm", [componentsPath + "/confirm/nativeconfirm"], returnFirstDependency); - } else { - define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency); - } + define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency); - if ((preferNativeAlerts || browser.xboxOne) && window.confirm) { - define("prompt", [componentsPath + "/prompt/nativeprompt"], returnFirstDependency); - } else { - define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency); - } + define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency); define("loading", [componentsPath + "/loading/loading"], returnFirstDependency); define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency); define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency); define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency); - if ("cordova" === self.appMode || "android" === self.appMode) { - define("castSenderApiLoader", [], getDummyCastSenderApiLoader); - } else { - define("castSenderApiLoader", [], getCastSenderApiLoader); - } + define("castSenderApiLoader", [componentsPath + "castSenderApi"], returnFirstDependency); define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency); define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency); From de88967dbd036868dc97cbacf9311b3b9837d576 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 21 Mar 2020 18:27:30 +0100 Subject: [PATCH 372/449] Remove superfluous variable --- src/components/prompt/prompt.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 32fadb811c..41d40c4a48 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -78,10 +78,8 @@ define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } - var value = submitValue; - - if (value) { - return value; + if (submitValue) { + return submitValue; } else { return Promise.reject(); } From 705c3fbcf0d4b83a8f82115957e45d81761ac0d6 Mon Sep 17 00:00:00 2001 From: amirmasoud Date: Sat, 21 Mar 2020 18:47:01 +0000 Subject: [PATCH 373/449] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index 7b7393c6b9..d4b60fe7c6 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -139,5 +139,8 @@ "AllLanguages": "تمام زبان ها", "AllLibraries": "تمام کتابخانه ها", "AllowHWTranscodingHelp": "اگر فعال شود, اجازه میدهید تبدیل ( کم و زیاد کردن کیفیت ) درلحظه و توسط کارت دریافت سیگنال صورت گیرد. این کمک میکند به اینکه سرور جلیفین کمتر عمل تبدیل را انجام دهد.", - "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود" + "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود", + "Add": "افزودن", + "Actor": "بازیگر", + "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید." } From 856069f25d232cb421c9d69b1b817c2946bc8e69 Mon Sep 17 00:00:00 2001 From: Vogete Date: Sat, 21 Mar 2020 11:26:46 +0000 Subject: [PATCH 374/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index a6c2a14da2..7ade41afff 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1213,7 +1213,7 @@ "Screenshots": "Képernyőképek", "SearchForCollectionInternetMetadata": "Keresés az interneten artwork és metaadat után", "Series": "Sorozatok", - "SeriesCancelled": "A sorozat törölt.", + "SeriesCancelled": "Sorozat törölve.", "SeriesRecordingScheduled": "A sorozatfelvétel ütemezett.", "SeriesSettings": "Sorozat beállítások", "ServerRestartNeededAfterPluginInstall": "A bővítmény telepítése után újra kell indítani a Jellyfin Szerver-t.", From b65bd915ee51864cfc6bcd53a2f82a9168f78b7f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 22 Mar 2020 01:07:04 -0400 Subject: [PATCH 375/449] Simplify show/hide button logic for tv providers --- src/components/tvproviders/schedulesdirect.js | 18 +++++------------- src/components/tvproviders/xmltv.js | 18 +++++------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 4a6f3d297f..cf11e5736d 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -264,21 +264,13 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em self.init = function () { options = options || {}; - // Only hide the button if explicitly set to false; default to showing if undefined or null + // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic - if (options.showCancelButton === false) { - page.querySelector(".btnCancel").classList.add("hide"); - } else { - page.querySelector(".btnCancel").classList.remove("hide"); - } + var hideCancelButton = options.showCancelButton === false; + page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); - // Only hide the button if explicitly set to false; default to showing if undefined or null - // FIXME: rename this option to clarify logic - if (options.showSubmitButton === false) { - page.querySelector(".btnSubmitListings").classList.add("hide"); - } else { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } + var hideSubmitButton = options.showSubmitButton === false; + page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); $(".formLogin", page).on("submit", function () { submitLoginForm(); diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 0ba164fe25..7e7d381f09 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -163,21 +163,13 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa self.init = function () { options = options || {}; - // Only hide the button if explicitly set to false; default to showing if undefined or null + // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic - if (options.showCancelButton === false) { - page.querySelector(".btnCancel").classList.add("hide"); - } else { - page.querySelector(".btnCancel").classList.remove("hide"); - } + var hideCancelButton = options.showCancelButton === false; + page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); - // Only hide the button if explicitly set to false; default to showing if undefined or null - // FIXME: rename this option to clarify logic - if (options.showSubmitButton === false) { - page.querySelector(".btnSubmitListings").classList.add("hide"); - } else { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } + var hideSubmitButton = options.showSubmitButton === false; + page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); $("form", page).on("submit", function () { submitListingsForm(); From a704f41515fb5d11b96d63a6f873899ac911b874 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 22 Mar 2020 04:09:34 +0000 Subject: [PATCH 376/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 547f55dc3a..b0c9a59694 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -537,8 +537,8 @@ "LabelDisplayName": "显示名称:", "LabelDisplayOrder": "显示顺序:", "LabelDisplaySpecialsWithinSeasons": "显示季中所播出的特集", - "LabelDownMixAudioScale": "缩混音频增强:", - "LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。", + "LabelDownMixAudioScale": "降混音频增强:", + "LabelDownMixAudioScaleHelp": "降混音时增强音频。值为 1 时将保留原始音量。", "LabelDownloadLanguages": "下载语言:", "LabelDropImageHere": "拖拽或点击选择图像于此处。", "LabelDroppedFrames": "丢弃的帧:", From 99d7138a083ed92993eb07af3ab27d5bfb486fb6 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 14:00:04 +0300 Subject: [PATCH 377/449] Fix XviD playback on Tizen --- src/scripts/browserdeviceprofile.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index b45bdc59bf..85d3e1500b 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -214,6 +214,14 @@ define(['browser'], function (browser) { break; case 'avi': supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; + // New Samsung TV don't support XviD/DivX + if (browser.tizen) { + videoCodecs.push('h264'); + if (canPlayH265(videoTestElement, options)) { + videoCodecs.push('h265'); + videoCodecs.push('hevc'); + } + } break; case 'mpg': case 'mpeg': From 603472cfb69516cb83270c4dfece64aa455edb92 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 15:04:51 +0300 Subject: [PATCH 378/449] Add comment --- src/scripts/browserdeviceprofile.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 85d3e1500b..7acad63c14 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -215,6 +215,7 @@ define(['browser'], function (browser) { case 'avi': supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; // New Samsung TV don't support XviD/DivX + // Explicitly add supported codecs to make other codecs be transcoded if (browser.tizen) { videoCodecs.push('h264'); if (canPlayH265(videoTestElement, options)) { From 58dd6eb4918847783218b162ab3df285c68f373d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 19:30:02 +0300 Subject: [PATCH 379/449] Add test for current item --- src/controllers/playback/videoosd.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 24d779f245..b6af14dd6a 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -665,7 +665,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onTimeUpdate(e) { - if (isEnabled) { + // Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint + if (isEnabled && currentItem) { var now = new Date().getTime(); if (!(now - lastUpdateTime < 700)) { From c49e60e2d9d181ae3e51cfd3e0c8221ab6a89dc0 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:42:32 +0100 Subject: [PATCH 380/449] Hide some header buttons on mobile --- src/scripts/librarymenu.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 001c75787d..5e6562ee42 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -73,7 +73,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } if (user && user.localUser) { - if (headerHomeButton) { + if (headerHomeButton && !layoutManager.mobile) { headerHomeButton.classList.remove("hide"); } @@ -788,7 +788,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var headerCastButton; var headerSearchButton; var headerAudioPlayerButton; - var enableLibraryNavDrawer = !layoutManager.tv; + var enableLibraryNavDrawer = layoutManager.desktop; var skinHeader = document.querySelector(".skinHeader"); var requiresUserRefresh = true; var lastOpenTime = new Date().getTime(); @@ -863,6 +863,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " pageClassOn("pageshow", "page", function (e) { var page = this; var isDashboardPage = page.classList.contains("type-interior"); + var isHomePage = page.classList.contains("homePage"); var isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage"); var apiClient = getCurrentApiClient(); @@ -874,7 +875,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " refreshDashboardInfoInDrawer(apiClient); } else { if (mainDrawerButton) { - if (enableLibraryNavDrawer) { + if (enableLibraryNavDrawer || isHomePage) { mainDrawerButton.classList.remove("hide"); } else { mainDrawerButton.classList.add("hide"); From 1c0728ada6e24f29b96b8399d3c61fbabf5961be Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:56:03 +0100 Subject: [PATCH 381/449] Use small logo on mobile --- src/assets/css/librarybrowser.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 4c2cf95817..0bf65d83a7 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -128,6 +128,10 @@ margin-top: 0; } +.layout-mobile .pageTitleWithDefaultLogo { + background-image: url(../img/icon-transparent.png); +} + .headerLeft, .skinHeader { display: -webkit-box; From d6ab058661b70258a2a1629cbe91a96542b3519f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 20:18:27 +0300 Subject: [PATCH 382/449] Add Tizen version check --- src/scripts/browser.js | 3 +++ src/scripts/browserdeviceprofile.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 791ac7411b..f9e1942320 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -271,6 +271,9 @@ define([], function () { if (!browser.tizen) { browser.orsay = userAgent.toLowerCase().indexOf('smarthub') !== -1; + } else { + var v = (navigator.appVersion).match(/Tizen (\d+).(\d+)/); + browser.tizenVersion = parseInt(v[1]); } if (browser.edgeUwp) { diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 7acad63c14..337463987c 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -216,7 +216,7 @@ define(['browser'], function (browser) { supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; // New Samsung TV don't support XviD/DivX // Explicitly add supported codecs to make other codecs be transcoded - if (browser.tizen) { + if (browser.tizenVersion >= 4) { videoCodecs.push('h264'); if (canPlayH265(videoTestElement, options)) { videoCodecs.push('h265'); From 0cb54feb539ef4e7e7192b1fc92fdb5de24b4815 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 20 Jan 2020 20:47:54 +0100 Subject: [PATCH 383/449] Remove libjass --- src/bundle.js | 7 --- src/components/htmlvideoplayer/plugin.js | 80 +----------------------- src/scripts/site.js | 1 - 3 files changed, 1 insertion(+), 87 deletions(-) diff --git a/src/bundle.js b/src/bundle.js index c5c5e1bcaf..ba5f74b163 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -84,13 +84,6 @@ _define("webcomponents", function() { return webcomponents; }); -// libjass -var libjass = require("libjass"); -require("libjass/libjass.css"); -_define("libjass", function() { - return libjass; -}); - // libass-wasm var libass_wasm = require("libass-wasm"); _define("JavascriptSubtitlesOctopus", function() { diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index d19187c9ed..995df6607b 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -80,7 +80,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (track) { var format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { - // libjass is needed here return false; } } @@ -1047,7 +1046,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lastCustomTrackMs = 0; } - function renderWithSubtitlesOctopus(videoElement, track, item) { + function renderSsaAss(videoElement, track, item) { var attachments = self._currentPlayOptions.mediaSource.MediaAttachments || []; var options = { video: videoElement, @@ -1066,82 +1065,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }); } - function renderWithLibjass(videoElement, track, item) { - - var rendererSettings = {}; - - if (browser.ps4) { - // Text outlines are not rendering very well - rendererSettings.enableSvg = false; - } else if (browser.edge || browser.msie) { - // svg not rendering at all - rendererSettings.enableSvg = false; - } - - // probably safer to just disable everywhere - rendererSettings.enableSvg = false; - - require(['libjass', 'ResizeObserver'], function (libjass, ResizeObserver) { - - libjass.ASS.fromUrl(getTextTrackUrl(track, item)).then(function (ass) { - - var clock = new libjass.renderers.ManualClock(); - currentClock = clock; - - // Create a DefaultRenderer using the video element and the ASS object - var renderer = new libjass.renderers.WebRenderer(ass, clock, videoElement.parentNode, rendererSettings); - - currentAssRenderer = renderer; - - renderer.addEventListener("ready", function () { - try { - renderer.resize(videoElement.offsetWidth, videoElement.offsetHeight, 0, 0); - - if (!self._resizeObserver) { - self._resizeObserver = new ResizeObserver(onVideoResize, {}); - self._resizeObserver.observe(videoElement); - } - //clock.pause(); - } catch (ex) { - //alert(ex); - } - }); - }, function () { - htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); - }); - }); - } - - function renderSsaAss(videoElement, track, item) { - if (supportsCanvas() && supportsWebWorkers()) { - console.debug('rendering subtitles with SubtitlesOctopus'); - renderWithSubtitlesOctopus(videoElement, track, item); - } else { - console.debug('rendering subtitles with libjass'); - renderWithLibjass(videoElement, track, item); - } - } - - function onVideoResize() { - if (browser.iOS) { - // the new sizes will be delayed for about 500ms with wkwebview - setTimeout(resetVideoRendererSize, 500); - } else { - resetVideoRendererSize(); - } - } - - function resetVideoRendererSize() { - var renderer = currentAssRenderer; - if (renderer) { - var videoElement = self._mediaElement; - var width = videoElement.offsetWidth; - var height = videoElement.offsetHeight; - console.debug('videoElement resized: ' + width + 'x' + height); - renderer.resize(width, height, 0, 0); - } - } - function requiresCustomSubtitlesElement() { // after a system update, ps4 isn't showing anything when creating a track element dynamically @@ -1231,7 +1154,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (!itemHelper.isLocalItem(item) || track.IsExternal) { var format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { - // libjass is needed here renderSsaAss(videoElement, track, item); return; } diff --git a/src/scripts/site.js b/src/scripts/site.js index 6739e3cd59..dc5f973198 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -690,7 +690,6 @@ var AppInfo = {}; "swiper", "queryString", "sortable", - "libjass", "webcomponents", "material-icons", "jellyfin-noto", From 087d44567e0b28a65131a6cd6a602d91c84e20cc Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Sun, 22 Mar 2020 11:27:02 +0000 Subject: [PATCH 384/449] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 2b99b91242..64f7a0fd7e 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -68,7 +68,7 @@ "AllowMediaConversion": "Permitir conversión de medios", "AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.", "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo", - "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden ser extraídos de videos y entregados a apps de Jellyfin en texto plano para ayudar a prevenir la transcodificación de video. En algunos sistemas esto puede llevar un largo tiempo y causar demoras en la reproducción durante el proceso de extracción. Desactivar esta opción para quemar los subtítulos incrustados en la transcodificación de video cuando no son soportados nativamente por el dispositivo cliente.", + "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los reproductores en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.", "AllowRemoteAccess": "Permitir conexiones remotas a este Servidor Jellyfin.", "AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.", "AlwaysPlaySubtitles": "Siempre reproducir subtítulos", @@ -81,7 +81,7 @@ "AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)", "AutomaticallyConvertNewContent": "Convertir contenido nuevo automáticamente", "Backdrop": "Fondo", - "AllowHWTranscodingHelp": "Si se activa, se permitirá al sintonizador transcodificar streams al vuelo. Esto podría ayudar a reducir la transcodificación requerida por el servidor Jellyfin.", + "AllowHWTranscodingHelp": "Permite que el sintonizador transcodifique las transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.", "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara-de-red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.", "AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.", "AndroidUnlockRestoreHelp": "Para recuperar tu compra anterior, por favor asegurate que iniciaste sesión en el dispositivo con la misma cuenta de Google (o Amazon) que hizo la compra originalmente. Asegurate de que la tienda de aplicaciones esté habilitada y no posea control parental alguno, y que tiene una conexión a Internet activa. Solo tendrás que hacer esto una sola vez para recuperar tu compra anterior.", @@ -102,12 +102,12 @@ "BirthPlaceValue": "Lugar de nacimiento: {0}", "Blacklist": "Lista negra", "BobAndWeaveWithHelp": "Bob and weave (mayor calidad, pero más lento)", - "BookLibraryHelp": "Libros de audio y de texto son soportados. Revise la {0}guía de nombrado de libros de Jellyfin{1}.", + "BookLibraryHelp": "Los libros de texto y audio libros son soportados. Revise la {0}Guía para Nomenclatura de Libros{1}.", "Box": "Caja", "BoxRear": "Caja (lado opuesto)", "Browse": "Explorar", "BrowsePluginCatalogMessage": "Explore nuestro catálogo de complementos para ver los complementos disponibles.", - "BurnSubtitlesHelp": "Determine si el servidor debería incrustar los subtítulos cuando convierte los videos dependiendo del formato de subtítulo. Evitar incrustar subtitulos mejorará el rendimiento del servidor. Seleccione Auto para incrustar formatos basados en imagen (por ejemplo, VOBSUB, PGS, SUB/IDX, etc.), como así también ciertos subtítulos ASS/SSA", + "BurnSubtitlesHelp": "Determina si el servidor debe grabar subtítulos al convertir videos dependiendo del formato de los subtítulos. Evitar la grabación de subtítulos mejorará el rendimiento del servidor. Seleccione Auto para grabar formatos basados en imágenes (VOBSUB, PGS, SUB/IDX, etc.) y ciertos subtítulos ASS/SSA.", "ButtonAccept": "Aceptar", "ButtonAdd": "Agregar", "ButtonAddMediaLibrary": "Agregar biblioteca de medios", @@ -308,7 +308,7 @@ "DeviceLastUsedByUserName": "Usado ultima vez por {0}", "DirectPlayError": "Error en la reproducción directa", "DirectPlaying": "Reproducción directa", - "DirectStreamHelp1": "El medio es compatible con el dispositivo respecto a la resolución y el tipo de medio (H.264, AC3, etc.), pero esta en un contenedor incompatible (.mkv, .avi, .wmv, etc.). El video va a ser re-empaquetado en el momento que sea transmitido al dispositivo.", + "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.", "DirectStreaming": "Transmisión en directo", "Director": "Director", @@ -321,7 +321,7 @@ "DisplayInMyMedia": "Mostrar en pantalla principal", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla principal, como últimos medios y continuar viendo", "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios faltantes entre temporadas", - "DisplayMissingEpisodesWithinSeasonsHelp": "Esto debe ser habilitado en las bibilotecas de TV, en la configuracion del servidor de Jellyfin.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe estar habilitado para las bibliotecas de TV en la configuración del servidor.", "DisplayModeHelp": "Selecciona el tipo de pantalla en el cual estas usando Jellyfin.", "DoNotRecord": "No grabar", "Down": "Abajo", @@ -345,7 +345,7 @@ "EnableBackdropsHelp": "Si esta habilitado, los fondos van a ser mostrados en segundo plano de algunas paginas mientras estas en la biblioteca.", "EnableCinemaMode": "Habilitar modo Cine", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del codigo", - "AuthProviderHelp": "Selecciona un Proveedor de Autenticación para autenticar la contraseña de este usuario", + "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "CriticRating": "Calificación de la crítica", "DefaultSubtitlesHelp": "Los subtítulos se cargan en base a los indicadores por defecto y los indicadores forzados en los metadatos embebidos. Las preferencias de idioma son consideradas cuando existe más de una opción.", "Dislike": "No me gusta", @@ -411,5 +411,13 @@ "HeaderFavoriteEpisodes": "Episodios favoritos", "HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteAlbums": "Álbumes favoritos", - "Shows": "Series" + "Shows": "Series", + "CopyStreamURLError": "Hubo un error copiando la URL.", + "CopyStreamURLSuccess": "URL copiada con éxito.", + "CopyStreamURL": "Copiar la URL de la transmisión", + "ButtonSplit": "Dividir", + "ButtonAddImage": "Agregar imagen", + "AskAdminToCreateLibrary": "Pregunte al administrador para crear una biblioteca.", + "AllowFfmpegThrottlingHelp": "Cuando una transcodificación o conversión avanza demasiado con respecto a la posición actual de la reproducción, se pausara el proceso para consumir menos recursos. esto es mas útil cuando no se hacen búsquedas de tiempo a menudo. Desactive esta opción si experimenta problemas en la reproducción.", + "AllowFfmpegThrottling": "Transcodificación Throttle" } From 7aae3fd95c25823822c571cbcfd9f6061407e94b Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Sun, 22 Mar 2020 11:55:42 +0000 Subject: [PATCH 385/449] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 57a1c9aa25..2968bbcdd4 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -195,7 +195,7 @@ "Download": "Descargar", "DownloadsValue": "{0} descargas", "DrmChannelsNotImported": "Los canales con DRM no serán importados.", - "DropShadow": "Mostrar sombra", + "DropShadow": "Sombra Paralela", "EasyPasswordHelp": "Su código PIN fácil se utiliza para el acceso sin conexión en los clientes compatibles y también puede utilizarse para acceder fácilmente cuando se está en la misma red.", "Edit": "Editar", "EditImages": "Editar imágenes", From 94a2a8749bdfe5b9fa2ba9c82b25218309648e4f Mon Sep 17 00:00:00 2001 From: Louis Hermier Date: Sun, 22 Mar 2020 12:00:27 +0000 Subject: [PATCH 386/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 4a52756ec4..4c726c8245 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1100,7 +1100,7 @@ "PlayAllFromHere": "Tout lire à partir d'ici", "PlayCount": "Nombre de lectures", "PlayFromBeginning": "Lire depuis le début", - "PlayNext": "Lire le suivant", + "PlayNext": "Lire ensuite", "PlayNextEpisodeAutomatically": "Lancer l'épisode suivant automatiquement", "Played": "Lu", "Playlists": "Listes de lecture", From c96db195761cee16e602d0afc94f994da1a517eb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 23 Mar 2020 10:56:23 +0100 Subject: [PATCH 387/449] Remove libjass from yarn dependencies --- package.json | 1 - yarn.lock | 161 +++++++++------------------------------------------ 2 files changed, 27 insertions(+), 135 deletions(-) diff --git a/package.json b/package.json index 6d07f9a6fa..9d26a02319 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "jquery": "^3.4.1", "jstree": "^3.3.7", "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus", - "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.5", diff --git a/yarn.lock b/yarn.lock index 8dee672565..02766a1edc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3072,7 +3072,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3183,11 +3183,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3302,11 +3297,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4551,13 +4541,6 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -5532,7 +5515,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5556,13 +5539,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -5744,7 +5720,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -6530,11 +6506,6 @@ levn@^0.3.0, levn@~0.3.0: version "3.0.2" resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" -libjass@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" - integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= - liftoff@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" @@ -7257,21 +7228,6 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7406,15 +7362,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7499,22 +7446,6 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.50: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" @@ -7552,14 +7483,6 @@ node-sass@^4.13.1, node-sass@^4.8.3: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7613,13 +7536,6 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - npm-conf@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" @@ -7628,20 +7544,6 @@ npm-conf@^1.1.0: config-chain "^1.1.11" pify "^3.0.0" -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7649,7 +7551,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -7916,7 +7818,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@0: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -9304,6 +9206,15 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +query-string@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.1.tgz#ab021f275d463ce1b61e88f0ce6988b3e8fe7c2c" + integrity sha512-1ZvJOUl8ifkkBxu2ByVM/8GijMIPx+cef7u3yroO3Ogm4DOdZcF5dcrWTIlSHe3Pg/mtlt6/eFjObDfJureZZA== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9369,16 +9280,6 @@ raw-body@^2.3.2: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-file-stdin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" @@ -9853,7 +9754,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9952,7 +9853,7 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sax@^1.2.4, sax@~1.2.4: +sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10485,6 +10386,11 @@ specificity@^0.4.1: resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -10640,6 +10546,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -10801,11 +10712,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strip-outer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" @@ -11115,19 +11021,6 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -12275,7 +12168,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From f6cb372610b7b201b36982fb922d0dd7521b611c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20F=C3=A4th?= Date: Mon, 23 Mar 2020 16:49:00 +0100 Subject: [PATCH 388/449] Fix cast sender api path --- src/scripts/site.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 6739e3cd59..b9be7351aa 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -415,7 +415,7 @@ var AppInfo = {}; define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency); define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency); - define("castSenderApiLoader", [componentsPath + "castSenderApi"], returnFirstDependency); + define("castSenderApiLoader", [componentsPath + "/castSenderApi"], returnFirstDependency); define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency); define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency); From 7f10a81a1621e1bb28f32b4846fbc669bbb36cf6 Mon Sep 17 00:00:00 2001 From: Louis Hermier Date: Mon, 23 Mar 2020 16:53:31 +0000 Subject: [PATCH 389/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 4c726c8245..fd85828c17 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1470,5 +1470,7 @@ "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage", "NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}", - "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible." + "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible.", + "PreferEmbeddedEpisodeInfosOverFileNames": "Préférer les informations intégrées aux noms de fichiers", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible." } From bb475fd24ad69821d55a359d21bd76c66d7d00ee Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Mon, 23 Mar 2020 17:52:01 +0000 Subject: [PATCH 390/449] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7ade41afff..0f0b0aee68 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1474,5 +1474,7 @@ "DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket.", "PlaybackErrorNoCompatibleStream": "Hiba történt a kliens felmérése közben és a szerver nem küld kompatibilis formátumot az eszközre.", "AllowFfmpegThrottlingHelp": "Ha az átkódolás vagy remux eléggé előtöltődött a jelenlegi lejátszási pozícióhoz képest, ez megállítja a folyamatot, hogy kevesebb erőforrást vegyen igénybe. Ez akkor hasznos, ha ritkán ugrálsz előre a lejátszott videókban. Kapcsold ki, ha lejátszási problémákba ütközöl.", - "AllowFfmpegThrottling": "Átkódolás visszafogása" + "AllowFfmpegThrottling": "Átkódolás visszafogása", + "PreferEmbeddedEpisodeInfosOverFileNames": "Inkább a beágyazott epizódokra vonatkozó információkat részesítse előnyben a fájlnevekkel szemben", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Ez a beágyazott metaadatok epizódinformációit használja, ha rendelkezésre állnak." } From 2bda5f0277be6a1df2ed69cd315231ad8d5281f9 Mon Sep 17 00:00:00 2001 From: Riccardo Zanotto Date: Mon, 23 Mar 2020 18:53:57 +0000 Subject: [PATCH 391/449] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 5b213e1bce..4dd7b3d190 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -581,7 +581,7 @@ "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server e verrà usato di default come nome del pc.", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default il nome del pc.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", From c882c264a30bc83a04bdf0761db09831d55bf2b8 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 24 Mar 2020 10:03:51 +0300 Subject: [PATCH 392/449] Fix view restoring --- src/components/appRouter.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index efb58a089f..62bfb3cf40 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -511,9 +511,16 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM return baseRoute; } + var popstateOccurred = false; + window.addEventListener('popstate', function () { + popstateOccurred = true; + }); + function getHandler(route) { return function (ctx, next) { + ctx.isBack = popstateOccurred; handleRoute(ctx, next, route); + popstateOccurred = false; }; } From 34a5578679ddaa717e4185a27de48bb3b74bfe43 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 14:36:42 +0100 Subject: [PATCH 393/449] Run postcss for webpack bundle --- postcss.config.js | 2 +- src/scripts/site.js | 1 - yarn.lock | 23 +++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index 23159fd295..bd6e644892 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,4 @@ -const postcssPresetEnv = require('postcss-preset-env'); +const postcssPresetEnv = require('postcss-preset-env') const cssnano = require('cssnano'); const config = () => ({ diff --git a/src/scripts/site.js b/src/scripts/site.js index 4e208dbe0f..155e28b94e 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -677,7 +677,6 @@ var AppInfo = {}; }, bundles: { bundle: [ - "document-register-element", "fetch", "flvjs", "jstree", diff --git a/yarn.lock b/yarn.lock index 02766a1edc..d260ee6e3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -730,6 +730,11 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -8952,6 +8957,15 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -9020,6 +9034,15 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" From 0a0fe15b263707817cd092d9c8369587992e4275 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 1 Mar 2020 08:40:57 +0100 Subject: [PATCH 394/449] Enable ES6 support for all tools --- .eslintrc.yml | 6 ++++++ gulpfile.js | 2 +- package.json | 9 ++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 4bc22fc1d4..377716d53c 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,6 +3,12 @@ env: browser: true amd: true +parserOptions: + ecmaVersion: 6 + sourceType: module + ecmaFeatures: + impliedStrict: true + globals: # New browser globals DataView: readonly diff --git a/gulpfile.js b/gulpfile.js index ca6cf36dd2..a0337db1c9 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,7 +18,7 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); - + sass.compiler = require('node-sass') diff --git a/package.json b/package.json index 9d26a02319..2de78b821c 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "devDependencies": { "@babel/core": "^7.8.6", "@babel/polyfill": "^7.8.7", + "@babel/plugin-transform-modules-amd": "^7.8.3", "@babel/preset-env": "^7.8.6", "autoprefixer": "^9.7.4", "babel-loader": "^8.0.6", @@ -69,9 +70,11 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": [ - "@babel/preset-env" - ] + "presets": ["@babel/preset-env"], + "overrides": [{ + "test": ["src/components/cardbuilder/cardBuilder.js"], + "plugins": ["@babel/plugin-transform-modules-amd"] + }] }, "browserslist": [ "last 2 Firefox versions", From 8891be539e1a36ac6230abdf8ccdc3f8b964d277 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 21:15:38 +0100 Subject: [PATCH 395/449] Convert CardBuilder to ES6 --- src/components/cardbuilder/cardBuilder.js | 47 ++++++++++++----------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 7f562f1fd0..8f626ab211 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,10 +1,23 @@ -define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusManager', 'indicators', 'globalize', 'layoutManager', 'apphost', 'dom', 'browser', 'playbackManager', 'itemShortcuts', 'scripts/imagehelper', 'css!./card', 'paper-icon-button-light', 'programStyles'], - function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts, imageHelper) { - 'use strict'; +import datetime from 'datetime'; +import imageLoader from 'imageLoader'; +import connectionManager from 'connectionManager'; +import itemHelper from 'itemHelper'; +import focusManager from 'focusManager'; +import indicators from 'indicators'; +import globalize from 'globalize'; +import layoutManager from 'layoutManager'; +import dom from 'dom'; +import browser from 'browser'; +import playbackManager from 'playbackManager'; +import itemShortcuts from 'itemShortcuts'; +import imageHelper from 'scripts/imagehelper'; +import 'css!./card'; +import 'paper-icon-button-light'; +import 'programStyles'; var enableFocusTransform = !browser.slow && !browser.edge; - function getCardsHtml(items, options) { + export function getCardsHtml(items, options) { if (arguments.length === 1) { options = arguments[0]; items = options.items; @@ -1171,7 +1184,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function getDefaultBackgroundClass(str) { + export function getDefaultBackgroundClass(str) { return 'defaultCardBackground defaultCardBackground' + getDefaultColorIndex(str); } @@ -1504,7 +1517,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return html; } - function getDefaultText(item, options) { + export function getDefaultText(item, options) { if (item.CollectionType) { return '' } @@ -1533,7 +1546,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return '
' + defaultName + '
'; } - function buildCards(items, options) { + export function buildCards(items, options) { // Abort if the container has been disposed if (!document.body.contains(options.itemsContainer)) { @@ -1678,7 +1691,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onUserDataChanged(userData, scope) { + export function onUserDataChanged(userData, scope) { var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); @@ -1687,7 +1700,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onTimerCreated(programId, newTimerId, itemsContainer) { + export function onTimerCreated(programId, newTimerId, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); @@ -1702,7 +1715,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onTimerCancelled(id, itemsContainer) { + export function onTimerCancelled(id, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + id + '"]'); @@ -1716,7 +1729,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onSeriesTimerCancelled(id, itemsContainer) { + export function onSeriesTimerCancelled(id, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + id + '"]'); @@ -1729,15 +1742,3 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana cell.removeAttribute('data-seriestimerid'); } } - - return { - getCardsHtml: getCardsHtml, - getDefaultBackgroundClass: getDefaultBackgroundClass, - getDefaultText: getDefaultText, - buildCards: buildCards, - onUserDataChanged: onUserDataChanged, - onTimerCreated: onTimerCreated, - onTimerCancelled: onTimerCancelled, - onSeriesTimerCancelled: onSeriesTimerCancelled - }; - }); From bbbef042bf227ebd48159304b0c07c55b3238bca Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 21:16:40 +0100 Subject: [PATCH 396/449] Add JSDoc comments --- postcss.config.js | 2 +- src/components/cardbuilder/cardBuilder.js | 252 +++++++++++++++++----- src/scripts/site.js | 1 + 3 files changed, 195 insertions(+), 60 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index bd6e644892..23159fd295 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,4 @@ -const postcssPresetEnv = require('postcss-preset-env') +const postcssPresetEnv = require('postcss-preset-env'); const cssnano = require('cssnano'); const config = () => ({ diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 8f626ab211..edf3d0d606 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,3 +1,7 @@ +/** + * Card builder module. + * @module cardBuilder + */ import datetime from 'datetime'; import imageLoader from 'imageLoader'; import connectionManager from 'connectionManager'; @@ -17,6 +21,12 @@ import 'programStyles'; var enableFocusTransform = !browser.slow && !browser.edge; + /** + * Generate the HTML markup for cards of a set of items. + * @param items - The items to generate cards for. + * @param options - The options of the cards. + * @returns {string} The HTML markup for cards. + */ export function getCardsHtml(items, options) { if (arguments.length === 1) { options = arguments[0]; @@ -26,6 +36,13 @@ import 'programStyles'; return buildCardsHtmlInternal(items, options); } + /** + * Computes the number of posters per row. + * @param {string} shape - Shape of the cards. + * @param {number} screenWidth - Width of the screen. + * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. + * @returns {number} Number of cards per row of an itemsContainer. + */ function getPostersPerRow(shape, screenWidth, isOrientationLandscape) { switch (shape) { case 'portrait': @@ -230,6 +247,11 @@ import 'programStyles'; } } + /** + * Checks if the window is resizable. + * @param {number} windowWidth - Width of the client's screen. + * @returns {boolean} - Result of the check. + */ function isResizable(windowWidth) { var screen = window.screen; if (screen) { @@ -243,15 +265,24 @@ import 'programStyles'; return false; } + /** + * Gets the width of a card's image according to the shape and amount of cards per row. + * @param {string} shape - Shape of the card. + * @param {number} screenWidth - Width of the screen. + * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. + * @returns {number} Width of the image for a card. + */ function getImageWidth(shape, screenWidth, isOrientationLandscape) { var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); - var shapeWidth = Math.round(screenWidth / imagesPerRow) * 2; - - return shapeWidth; + return Math.round(screenWidth / imagesPerRow) * 2; } + /** + * Normalizes the options of a card. + * @param {Object} items - A set of items. + * @param {Object} options - Options for handling the items. + */ function setCardData(items, options) { - options.shape = options.shape || "auto"; var primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); @@ -308,8 +339,13 @@ import 'programStyles'; } } + /** + * Generates the internal HTML markup for cards. + * @param {Object} items - Items for which to generate the markup. + * @param {Object} options - Options for generating the markup. + * @returns {string} The internal HTML markup of the cards. + */ function buildCardsHtmlInternal(items, options) { - var isVertical; if (options.shape === 'autoVertical') { @@ -438,8 +474,12 @@ import 'programStyles'; return html; } + /** + * Computes the Aspect Ratio for a card given its shape. + * @param {string} shape - Shape for which to get the aspect ratio. + * @returns {null|number} Ratio of the shape. + */ function getDesiredAspect(shape) { - if (shape) { shape = shape.toLowerCase(); if (shape.indexOf('portrait') !== -1) { @@ -458,8 +498,21 @@ import 'programStyles'; return null; } - function getCardImageUrl(item, apiClient, options, shape) { + /** + * @typedef {Object} CardImageUrl + * @property {string} imgUrl - URL of the image. + * @property {boolean} forceName - Force the name to be visible. + * @property {boolean} coverImage - Acts as a cover image. + */ + /** Get the URL of the Card's image. + * @param {Object} item - Item for which to generate a card. + * @param {Object} apiClient - API Client object. + * @param {Object} options - Options of the card to generate. + * @param {string} shape - Shape of the desired image. + * @returns {CardImageUrl} Object representing the URL of the card's image. + */ + function getCardImageUrl(item, apiClient, options, shape) { var imageItem = item.ProgramInfo || item; item = imageItem; @@ -676,12 +729,23 @@ import 'programStyles'; }; } + /** + * Generates a random integer in a range. + * @param {number} min - Minimum of the range. + * @param {number} max - Maximum of the range. + * @returns {number} Randomly generated number. + */ function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } - var numRandomColors = 5; + /** + * Generates an index used to select the default color of a Card based on a string. + * @param {string} str - String to use for generating the index. + * @returns {number} Index of the color. + */ function getDefaultColorIndex(str) { + var numRandomColors = 5; if (str) { var charIndex = Math.floor(str.length / 2); @@ -698,8 +762,18 @@ import 'programStyles'; } } + /** + * Generates the HTML markup for a card's text. + * @param {Array} lines - Array containing the text lines. + * @param {string} cssClass - Base CSS class to use for the lines. + * @param {boolean} forceLines - Flag to force the rendering of all lines. + * @param {boolean} isOuterFooter - Flag to mark the text lines as outer footer. + * @param {string} cardLayout - DEPRECATED + * @param {boolean} addRightMargin - Flag to add a right margin to the text. + * @param {number} maxLines - Maximum number of lines to render. + * @returns {string} HTML markup fo the card's text. + */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { - var html = ''; var valid = 0; @@ -746,12 +820,23 @@ import 'programStyles'; return html; } + /** + * Determines if the item is Live TV. + * @param {Object} item - Item to use. + * @returns {boolean} Flag showing if the item is Live TV. + */ function isUsingLiveTvNaming(item) { return item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording'; } + /** + * Returns the air time text for the item based on the given times. + * @param {object} item - Item used to generate the air time text. + * @param {string} showAirDateTime - ISO8601 date for the start of the show. + * @param {string} showAirEndTime - ISO8601 date for the end of the show. + * @returns {string} The air time text for the item base on the given dates. + */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { - var airTimeText = ''; if (item.StartDate) { @@ -776,8 +861,22 @@ import 'programStyles'; return airTimeText; } + /** + * Generates the HTML markup for the card's footer text. + * @param {Object} item - Item used to generate the footer text. + * @param {Object} apiClient - API Client instance. + * @param {Object} options - Options used to generate the footer text. + * @param {string} showTitle - Title of the show. + * @param {boolean} forceName - Flag to force showing the name of the item. + * @param {boolean} overlayText - Flag to show overlay text. + * @param {CardImageUrl} imgUrl - Object representing the card's image URL. + * @param {string} footerClass - CSS class of the footer. + * @param {string} progressHtml - HTML markup of the progress bar. + * @param {string} logoUrl - URL of the logo for the item. + * @param {boolean} isOuterFooter - Flag to mark the text as outer footer. + * @returns {string} HTML markup of the card's footer text. + */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { - var html = ''; if (logoUrl) { @@ -1040,8 +1139,14 @@ import 'programStyles'; return html; } + /** + * Generates the HTML markup for the action button. + * @param {Object} item - Item used to generate the action button. + * @param {string} text - Text of the action button. + * @param {string} serverId - ID of the server. + * @returns {string} HTML markup of the action button. + */ function getTextActionButton(item, text, serverId) { - if (!text) { text = itemHelper.getDisplayName(item); } @@ -1057,10 +1162,14 @@ import 'programStyles'; return html; } + /** + * Generates HTML markup for the item count indicator. + * @param {Object} options - Options used to generate the item count. + * @param {Object} item - Item used to generate the item count. + * @returns {string} HTML markup for the item count indicator. + */ function getItemCountsHtml(options, item) { - var counts = []; - var childText; if (item.Type === 'Playlist') { @@ -1148,48 +1257,36 @@ import 'programStyles'; return counts.join(', '); } - function getProgramIndicators(item) { - - item = item.ProgramInfo || item; - - var html = ''; - - if (item.IsLive) { - html += '
' + globalize.translate('Live') + '
'; - } - - if (item.IsPremiere) { - html += '
' + globalize.translate('Premiere') + '
'; - } else if (item.IsSeries && !item.IsRepeat) { - html += '
' + globalize.translate('AttributeNew') + '
'; - } - //else if (item.IsRepeat) { - // html += '
' + globalize.translate('Repeat') + '
'; - //} - - if (html) { - html = '
' + html; - html += '
'; - } - - return html; - } - var refreshIndicatorLoaded; - function requireRefreshIndicator() { + /** + * Imports the refresh indicator element. + */ + function requireRefreshIndicator() { if (!refreshIndicatorLoaded) { refreshIndicatorLoaded = true; require(['emby-itemrefreshindicator']); } } + /** + * Returns the default background class for a card based on a string. + * @param {string} str - Text used to generate the background class. + * @returns {string} CSS classes for default card backgrounds. + */ export function getDefaultBackgroundClass(str) { return 'defaultCardBackground defaultCardBackground' + getDefaultColorIndex(str); } + /** + * Builds the HTML markup for an individual card. + * @param {number} index - Index of the card + * @param {object} item - Item used to generate the card. + * @param {object} apiClient - API Client instance. + * @param {object} options - Options used to generate the card. + * @returns {string} HTML markup for the generated card. + */ function buildCard(index, item, apiClient, options) { - var action = options.action || 'link'; if (action === 'play' && item.IsFolder) { @@ -1424,10 +1521,6 @@ import 'programStyles'; cardImageContainerOpen += '
' + indicatorsHtml + '
'; } - //if (item.Type === 'Program' || item.Type === 'Timer') { - // cardImageContainerOpen += getProgramIndicators(item); - //} - if (!imgUrl) { cardImageContainerOpen += getDefaultText(item, options); } @@ -1480,8 +1573,13 @@ import 'programStyles'; return '<' + tagName + ' data-index="' + index + '"' + timerAttributes + actionAttribute + ' data-isfolder="' + (item.IsFolder || false) + '" data-serverid="' + (item.ServerId || options.serverId) + '" data-id="' + (item.Id || item.ItemId) + '" data-type="' + item.Type + '"' + mediaTypeData + collectionTypeData + channelIdData + positionTicksData + collectionIdData + playlistIdData + contextData + parentIdData + ' data-prefix="' + prefix + '" class="' + className + '">' + cardImageContainerOpen + innerCardFooter + cardImageContainerClose + overlayButtons + additionalCardContent + cardScalableClose + outerCardFooter + cardBoxClose + ''; } + /** + * Generates HTML markup for the card overlay. + * @param {object} item - Item used to generate the card overlay. + * @param {string} action - Action assigned to the overlay. + * @returns {string} HTML markup of the card overlay. + */ function getHoverMenuHtml(item, action) { - var html = ''; html += '
'; @@ -1517,6 +1615,12 @@ import 'programStyles'; return html; } + /** + * Generates the text or icon used on default card backgrounds. + * @param {object} item - Item used to generate the card overlay. + * @param {object} options - Options used to generate the card overlay. + * @returns {string} HTML markup of the card overlay. + */ export function getDefaultText(item, options) { if (item.CollectionType) { return '' @@ -1546,8 +1650,12 @@ import 'programStyles'; return '
' + defaultName + '
'; } + /** + * Builds a set of cards and inserts it into the page;. + * @param {Array} items - Array of items used to build cards. + * @param {options} options - Options of the cards to build. + */ export function buildCards(items, options) { - // Abort if the container has been disposed if (!document.body.contains(options.itemsContainer)) { return; @@ -1588,8 +1696,13 @@ import 'programStyles'; } } + /** + * Ensures the indicators for a card exist and creates them if they don't. + * @param {string} card - HTML Markup of the card. + * @param {string} indicatorsElem - HTML markup of the indicators. + * @returns {string} - HTML markup of the indicators. + */ function ensureIndicators(card, indicatorsElem) { - if (indicatorsElem) { return indicatorsElem; } @@ -1607,8 +1720,12 @@ import 'programStyles'; return indicatorsElem; } + /** + * Adds user data to the card such as progress indicators, played status, etc. + * @param {string} card - HTML markup of the card. + * @param {Object} userData - User data to apply to the card. + */ function updateUserData(card, userData) { - var type = card.getAttribute('data-type'); var enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; var indicatorsElem = null; @@ -1691,8 +1808,12 @@ import 'programStyles'; } } + /** + * Handles when user data has changed. + * @param {Object} userData - User data to apply to the card. + * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. + */ export function onUserDataChanged(userData, scope) { - var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); for (var i = 0, length = cards.length; i < length; i++) { @@ -1700,8 +1821,13 @@ import 'programStyles'; } } + /** + * Handles when a timer was created. + * @param {string} programId - ID of the program. + * @param {string} newTimerId - ID of the new timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ export function onTimerCreated(programId, newTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { @@ -1715,9 +1841,13 @@ import 'programStyles'; } } - export function onTimerCancelled(id, itemsContainer) { - - var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + id + '"]'); + /** + * Handles when a timer is cancelled. + * @param {string} timerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ + export function onTimerCancelled(timerId, itemsContainer) { + var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { var cell = cells[i]; @@ -1729,9 +1859,13 @@ import 'programStyles'; } } - export function onSeriesTimerCancelled(id, itemsContainer) { - - var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + id + '"]'); + /** + * Handles when a series timer is cancelled. + * @param {string} canceledTimerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ + export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { + var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { var cell = cells[i]; diff --git a/src/scripts/site.js b/src/scripts/site.js index 155e28b94e..4e208dbe0f 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -677,6 +677,7 @@ var AppInfo = {}; }, bundles: { bundle: [ + "document-register-element", "fetch", "flvjs", "jstree", From 55d1657b50b63560dc49ed48b38ef4d60620bd79 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 22:33:41 +0100 Subject: [PATCH 397/449] Migrate var in CardBuilder to let and const --- src/components/cardbuilder/cardBuilder.js | 318 +++++++++++----------- 1 file changed, 155 insertions(+), 163 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index edf3d0d606..24e4035050 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,3 +1,4 @@ +/* eslint-disable indent */ /** * Card builder module. * @module cardBuilder @@ -19,7 +20,7 @@ import 'css!./card'; import 'paper-icon-button-light'; import 'programStyles'; - var enableFocusTransform = !browser.slow && !browser.edge; + const enableFocusTransform = !browser.slow && !browser.edge; /** * Generate the HTML markup for cards of a set of items. @@ -253,9 +254,9 @@ import 'programStyles'; * @returns {boolean} - Result of the check. */ function isResizable(windowWidth) { - var screen = window.screen; + const screen = window.screen; if (screen) { - var screenWidth = screen.availWidth; + const screenWidth = screen.availWidth; if ((screenWidth - windowWidth) > 20) { return true; @@ -273,7 +274,7 @@ import 'programStyles'; * @returns {number} Width of the image for a card. */ function getImageWidth(shape, screenWidth, isOrientationLandscape) { - var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); + const imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); return Math.round(screenWidth / imagesPerRow) * 2; } @@ -285,11 +286,11 @@ import 'programStyles'; function setCardData(items, options) { options.shape = options.shape || "auto"; - var primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); + const primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); - if (options.shape === 'auto' || options.shape === 'autohome' || options.shape === 'autooverflow' || options.shape === 'autoVertical') { + if (['auto', 'autohome', 'autooverflow', 'autoVertical'].includes(options.shape)) { - var requestedShape = options.shape; + const requestedShape = options.shape; options.shape = null; if (primaryImageAspectRatio) { @@ -327,11 +328,11 @@ import 'programStyles'; } if (!options.width) { - var screenWidth = dom.getWindowSize().innerWidth; - var screenHeight = dom.getWindowSize().innerHeight; + let screenWidth = dom.getWindowSize().innerWidth; + const screenHeight = dom.getWindowSize().innerHeight; if (isResizable(screenWidth)) { - var roundScreenTo = 100; + const roundScreenTo = 100; screenWidth = Math.floor(screenWidth / roundScreenTo) * roundScreenTo; } @@ -346,7 +347,7 @@ import 'programStyles'; * @returns {string} The internal HTML markup of the cards. */ function buildCardsHtmlInternal(items, options) { - var isVertical; + let isVertical = false; if (options.shape === 'autoVertical') { isVertical = true; @@ -354,24 +355,21 @@ import 'programStyles'; setCardData(items, options); - var html = ''; - var itemsInRow = 0; + let html = ''; + let itemsInRow = 0; - var currentIndexValue; - var hasOpenRow; - var hasOpenSection; + let currentIndexValue; + let hasOpenRow; + let hasOpenSection; - var sectionTitleTagName = options.sectionTitleTagName || 'div'; - var apiClient; - var lastServerId; + let sectionTitleTagName = options.sectionTitleTagName || 'div'; + let apiClient; + let lastServerId; - var i; - var length; + for (let i = 0; i < items.length; i++) { - for (i = 0, length = items.length; i < length; i++) { - - var item = items[i]; - var serverId = item.ServerId || options.serverId; + let item = items[i]; + let serverId = item.ServerId || options.serverId; if (serverId !== lastServerId) { lastServerId = serverId; @@ -379,14 +377,14 @@ import 'programStyles'; } if (options.indexBy) { - var newIndexValue = ''; + let newIndexValue = ''; if (options.indexBy === 'PremiereDate') { if (item.PremiereDate) { try { newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); - } catch (err) { - console.error('error parsing timestamp for premiere date'); + } catch (error) { + console.error('error parsing timestamp for premiere date', error); } } } else if (options.indexBy === 'ProductionYear') { @@ -461,15 +459,15 @@ import 'programStyles'; } } - var cardFooterHtml = ''; - for (i = 0, length = (options.lines || 0); i < length; i++) { + /*let cardFooterHtml = ''; + for (let i = 0; i < (options.lines || 0); i++) { if (i === 0) { cardFooterHtml += '
 
'; } else { cardFooterHtml += '
 
'; } - } + }*/ return html; } @@ -513,16 +511,15 @@ import 'programStyles'; * @returns {CardImageUrl} Object representing the URL of the card's image. */ function getCardImageUrl(item, apiClient, options, shape) { - var imageItem = item.ProgramInfo || item; - item = imageItem; + item = item.ProgramInfo || item; - var width = options.width; - var height = null; - var primaryImageAspectRatio = item.PrimaryImageAspectRatio; - var forceName = false; - var imgUrl = null; - var coverImage = false; - var uiAspect = null; + const width = options.width; + let height = null; + const primaryImageAspectRatio = item.PrimaryImageAspectRatio; + let forceName = false; + let imgUrl = null; + let coverImage = false; + let uiAspect = null; if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) { @@ -745,16 +742,16 @@ import 'programStyles'; * @returns {number} Index of the color. */ function getDefaultColorIndex(str) { - var numRandomColors = 5; + const numRandomColors = 5; if (str) { - var charIndex = Math.floor(str.length / 2); - var character = String(str.substr(charIndex, 1).charCodeAt()); - var sum = 0; - for (var i = 0; i < character.length; i++) { + const charIndex = Math.floor(str.length / 2); + const character = String(str.substr(charIndex, 1).charCodeAt()); + let sum = 0; + for (let i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } - var index = String(sum).substr(-1); + let index = String(sum).substr(-1); return (index % numRandomColors) + 1; } else { @@ -774,16 +771,14 @@ import 'programStyles'; * @returns {string} HTML markup fo the card's text. */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { - var html = ''; + let html = ''; - var valid = 0; - var i; - var length; + let valid = 0; - for (i = 0, length = lines.length; i < length; i++) { + for (let i = 0; i < lines.length; i++) { - var currentCssClass = cssClass; - var text = lines[i]; + let currentCssClass = cssClass; + let text = lines[i]; if (valid > 0 && isOuterFooter) { currentCssClass += ' cardText-secondary'; @@ -809,9 +804,9 @@ import 'programStyles'; if (forceLines) { - length = maxLines || Math.min(lines.length, maxLines || lines.length); + let linesLength = maxLines || Math.min(lines.length, maxLines || lines.length); - while (valid < length) { + while (valid < linesLength) { html += "
 
"; valid++; } @@ -837,11 +832,12 @@ import 'programStyles'; * @returns {string} The air time text for the item base on the given dates. */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { - var airTimeText = ''; + let airTimeText = ''; + if (item.StartDate) { try { - var date = datetime.parseISO8601Date(item.StartDate); + let date = datetime.parseISO8601Date(item.StartDate); if (showAirDateTime) { airTimeText += datetime.toLocaleDateString(date, { weekday: 'short', month: 'short', day: 'numeric' }) + ' '; @@ -877,13 +873,13 @@ import 'programStyles'; * @returns {string} HTML markup of the card's footer text. */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { - var html = ''; + let html = ''; if (logoUrl) { html += ''; } - var showOtherText = isOuterFooter ? !overlayText : overlayText; + const showOtherText = isOuterFooter ? !overlayText : overlayText; if (isOuterFooter && options.cardLayout && layoutManager.mobile) { @@ -892,12 +888,12 @@ import 'programStyles'; } } - var cssClass = options.centerText ? "cardText cardTextCentered" : "cardText"; - var serverId = item.ServerId || options.serverId; + const cssClass = options.centerText ? "cardText cardTextCentered" : "cardText"; + const serverId = item.ServerId || options.serverId; - var lines = []; - var parentTitleUnderneath = item.Type === 'MusicAlbum' || item.Type === 'Audio' || item.Type === 'MusicVideo'; - var titleAdded; + let lines = []; + const parentTitleUnderneath = item.Type === 'MusicAlbum' || item.Type === 'Audio' || item.Type === 'MusicVideo'; + let titleAdded; if (showOtherText) { if ((options.showParentTitle || options.showParentTitleOrTitle) && !parentTitleUnderneath) { @@ -926,7 +922,7 @@ import 'programStyles'; } } else { - var parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ""; + const parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ""; if (parentTitle || showTitle) { lines.push(parentTitle); @@ -936,14 +932,14 @@ import 'programStyles'; } } - var showMediaTitle = (showTitle && !titleAdded) || (options.showParentTitleOrTitle && !lines.length); + let showMediaTitle = (showTitle && !titleAdded) || (options.showParentTitleOrTitle && !lines.length); if (!showMediaTitle && !titleAdded && (showTitle || forceName)) { showMediaTitle = true; } if (showMediaTitle) { - var name = options.showTitle === 'auto' && !item.IsFolder && item.MediaType === 'Photo' ? '' : itemHelper.getDisplayName(item, { + const name = options.showTitle === 'auto' && !item.IsFolder && item.MediaType === 'Photo' ? '' : itemHelper.getDisplayName(item, { includeParentInfo: options.includeParentInfoInTitle }); @@ -970,22 +966,18 @@ import 'programStyles'; } if (options.showItemCounts) { - - var itemCountHtml = getItemCountsHtml(options, item); - - lines.push(itemCountHtml); + lines.push(getItemCountsHtml(options, item)); } if (options.textLines) { - var additionalLines = options.textLines(item); - for (var i = 0, length = additionalLines.length; i < length; i++) { + const additionalLines = options.textLines(item); + for (let i = 0; i < additionalLines.length; i++) { lines.push(additionalLines[i]); } } if (options.showSongCount) { - - var songLine = ''; + let songLine = ''; if (item.SongCount) { songLine = item.SongCount === 1 ? @@ -1023,7 +1015,7 @@ import 'programStyles'; } else { if (item.EndDate && item.ProductionYear) { - var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); + const endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); lines.push(item.ProductionYear + ((endYear === item.ProductionYear) ? '' : (' - ' + endYear))); } else { lines.push(item.ProductionYear || ''); @@ -1118,7 +1110,7 @@ import 'programStyles'; lines = []; } - var addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; + const addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; html += getCardTextLines(lines, cssClass, !options.overlayText, isOuterFooter, options.cardLayout, addRightTextMargin, options.lines); @@ -1155,7 +1147,7 @@ import 'programStyles'; return text; } - var html = ''; @@ -1169,8 +1161,8 @@ import 'programStyles'; * @returns {string} HTML markup for the item count indicator. */ function getItemCountsHtml(options, item) { - var counts = []; - var childText; + let counts = []; + let childText; if (item.Type === 'Playlist') { @@ -1178,7 +1170,7 @@ import 'programStyles'; if (item.RunTimeTicks) { - var minutes = item.RunTimeTicks / 600000000; + let minutes = item.RunTimeTicks / 600000000; minutes = minutes || 1; @@ -1257,7 +1249,7 @@ import 'programStyles'; return counts.join(', '); } - var refreshIndicatorLoaded; + let refreshIndicatorLoaded; /** * Imports the refresh indicator element. @@ -1287,7 +1279,7 @@ import 'programStyles'; * @returns {string} HTML markup for the generated card. */ function buildCard(index, item, apiClient, options) { - var action = options.action || 'link'; + let action = options.action || 'link'; if (action === 'play' && item.IsFolder) { // If this hard-coding is ever removed make sure to test nested photo albums @@ -1296,13 +1288,13 @@ import 'programStyles'; action = 'play'; } - var shape = options.shape; + let shape = options.shape; if (shape === 'mixed') { shape = null; - var primaryImageAspectRatio = item.PrimaryImageAspectRatio; + const primaryImageAspectRatio = item.PrimaryImageAspectRatio; if (primaryImageAspectRatio) { @@ -1320,7 +1312,7 @@ import 'programStyles'; // TODO move card creation code to Card component - var className = 'card'; + let className = 'card'; if (shape) { className += ' ' + shape + 'Card'; @@ -1346,16 +1338,16 @@ import 'programStyles'; } } - var imgInfo = getCardImageUrl(item, apiClient, options, shape); - var imgUrl = imgInfo.imgUrl; + const imgInfo = getCardImageUrl(item, apiClient, options, shape); + const imgUrl = imgInfo.imgUrl; - var forceName = imgInfo.forceName; + const forceName = imgInfo.forceName; - var showTitle = options.showTitle === 'auto' ? true : (options.showTitle || item.Type === 'PhotoAlbum' || item.Type === 'Folder'); - var overlayText = options.overlayText; + const showTitle = options.showTitle === 'auto' ? true : (options.showTitle || item.Type === 'PhotoAlbum' || item.Type === 'Folder'); + const overlayText = options.overlayText; - var cardImageContainerClass = 'cardImageContainer'; - var coveredImage = options.coverImage || imgInfo.coverImage; + let cardImageContainerClass = 'cardImageContainer'; + const coveredImage = options.coverImage || imgInfo.coverImage; if (coveredImage) { cardImageContainerClass += ' coveredImage'; @@ -1369,17 +1361,17 @@ import 'programStyles'; cardImageContainerClass += ' ' + getDefaultBackgroundClass(item.Name); } - var cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox'; + let cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox'; - var footerCssClass; - var progressHtml = indicators.getProgressBarHtml(item); + let footerCssClass; + let progressHtml = indicators.getProgressBarHtml(item); - var innerCardFooter = ''; + let innerCardFooter = ''; - var footerOverlayed = false; + let footerOverlayed = false; - var logoUrl; - var logoHeight = 40; + let logoUrl; + const logoHeight = 40; if (options.showChannelLogo && item.ChannelPrimaryImageTag) { logoUrl = apiClient.getScaledImageUrl(item.ChannelId, { @@ -1410,12 +1402,12 @@ import 'programStyles'; progressHtml = ''; } - var mediaSourceCount = item.MediaSourceCount || 1; + const mediaSourceCount = item.MediaSourceCount || 1; if (mediaSourceCount > 1) { innerCardFooter += '
' + mediaSourceCount + '
'; } - var outerCardFooter = ''; + let outerCardFooter = ''; if (!overlayText && !footerOverlayed) { footerCssClass = options.cardLayout ? 'cardFooter' : 'cardFooter cardFooter-transparent'; @@ -1434,15 +1426,15 @@ import 'programStyles'; cardBoxClass += ' cardBox-bottompadded'; } - var overlayButtons = ''; + let overlayButtons = ''; if (layoutManager.mobile) { - var overlayPlayButton = options.overlayPlayButton; + let overlayPlayButton = options.overlayPlayButton; if (overlayPlayButton == null && !options.overlayMoreButton && !options.overlayInfoButton && !options.cardLayout) { overlayPlayButton = item.MediaType === 'Video'; } - var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; + const btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { overlayButtons += ''; @@ -1462,12 +1454,12 @@ import 'programStyles'; } // cardBox can be it's own separate element if an outer footer is ever needed - var cardImageContainerOpen; - var cardImageContainerClose = ''; - var cardBoxClose = ''; - var cardScalableClose = ''; + let cardImageContainerOpen; + let cardImageContainerClose = ''; + let cardBoxClose = ''; + let cardScalableClose = ''; - var cardContentClass = 'cardContent'; + let cardContentClass = 'cardContent'; if (!options.cardLayout) { cardContentClass += ' cardContent-shadow'; } @@ -1485,13 +1477,13 @@ import 'programStyles'; cardImageContainerClose = ''; } - var cardScalableClass = 'cardScalable'; + let cardScalableClass = 'cardScalable'; cardImageContainerOpen = '
' + cardImageContainerOpen; cardBoxClose = '
'; cardScalableClose = '
'; - var indicatorsHtml = ''; + let indicatorsHtml = ''; if (options.missingIndicator !== false) { indicatorsHtml += indicators.getMissingIndicator(item); @@ -1512,7 +1504,7 @@ import 'programStyles'; } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; + const refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } @@ -1525,16 +1517,16 @@ import 'programStyles'; cardImageContainerOpen += getDefaultText(item, options); } - var tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; + const tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; - var nameWithPrefix = (item.SortName || item.Name || ''); - var prefix = nameWithPrefix.substring(0, Math.min(3, nameWithPrefix.length)); + const nameWithPrefix = (item.SortName || item.Name || ''); + let prefix = nameWithPrefix.substring(0, Math.min(3, nameWithPrefix.length)); if (prefix) { prefix = prefix.toUpperCase(); } - var timerAttributes = ''; + let timerAttributes = ''; if (item.TimerId) { timerAttributes += ' data-timerid="' + item.TimerId + '"'; } @@ -1542,7 +1534,7 @@ import 'programStyles'; timerAttributes += ' data-seriestimerid="' + item.SeriesTimerId + '"'; } - var actionAttribute; + let actionAttribute; if (tagName === 'button') { className += " itemAction"; @@ -1555,16 +1547,16 @@ import 'programStyles'; className += ' card-withuserdata'; } - var positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; - var collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; - var playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; - var mediaTypeData = item.MediaType ? (' data-mediatype="' + item.MediaType + '"') : ''; - var collectionTypeData = item.CollectionType ? (' data-collectiontype="' + item.CollectionType + '"') : ''; - var channelIdData = item.ChannelId ? (' data-channelid="' + item.ChannelId + '"') : ''; - var contextData = options.context ? (' data-context="' + options.context + '"') : ''; - var parentIdData = options.parentId ? (' data-parentid="' + options.parentId + '"') : ''; + const positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; + const collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; + const playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; + const mediaTypeData = item.MediaType ? (' data-mediatype="' + item.MediaType + '"') : ''; + const collectionTypeData = item.CollectionType ? (' data-collectiontype="' + item.CollectionType + '"') : ''; + const channelIdData = item.ChannelId ? (' data-channelid="' + item.ChannelId + '"') : ''; + const contextData = options.context ? (' data-context="' + options.context + '"') : ''; + const parentIdData = options.parentId ? (' data-parentid="' + options.parentId + '"') : ''; - var additionalCardContent = ''; + let additionalCardContent = ''; if (layoutManager.desktop) { additionalCardContent += getHoverMenuHtml(item, action); @@ -1580,11 +1572,11 @@ import 'programStyles'; * @returns {string} HTML markup of the card overlay. */ function getHoverMenuHtml(item, action) { - var html = ''; + let html = ''; html += '
'; - var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; + const btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { html += ''; @@ -1592,7 +1584,7 @@ import 'programStyles'; html += '
'; - var userData = item.UserData || {}; + const userData = item.UserData || {}; if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); @@ -1601,7 +1593,7 @@ import 'programStyles'; if (itemHelper.canRate(item)) { - var likes = userData.Likes == null ? '' : userData.Likes; + const likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); html += ''; @@ -1623,7 +1615,7 @@ import 'programStyles'; */ export function getDefaultText(item, options) { if (item.CollectionType) { - return '' + return ''; } switch (item.Type) { @@ -1646,7 +1638,7 @@ import 'programStyles'; return '' + options.defaultCardImageIcon + ''; } - var defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); + const defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); return '
' + defaultName + '
'; } @@ -1670,7 +1662,7 @@ import 'programStyles'; } } - var html = buildCardsHtmlInternal(items, options); + const html = buildCardsHtmlInternal(items, options); if (html) { @@ -1698,9 +1690,9 @@ import 'programStyles'; /** * Ensures the indicators for a card exist and creates them if they don't. - * @param {string} card - HTML Markup of the card. - * @param {string} indicatorsElem - HTML markup of the indicators. - * @returns {string} - HTML markup of the indicators. + * @param {HTMLDivElement} card - HTML Markup of the card. + * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. + * @returns {HTMLDivElement} - HTML markup of the indicators. */ function ensureIndicators(card, indicatorsElem) { if (indicatorsElem) { @@ -1711,7 +1703,7 @@ import 'programStyles'; if (!indicatorsElem) { - var cardImageContainer = card.querySelector('.cardImageContainer'); + const cardImageContainer = card.querySelector('.cardImageContainer'); indicatorsElem = document.createElement('div'); indicatorsElem.classList.add('cardIndicators'); cardImageContainer.appendChild(indicatorsElem); @@ -1722,16 +1714,16 @@ import 'programStyles'; /** * Adds user data to the card such as progress indicators, played status, etc. - * @param {string} card - HTML markup of the card. + * @param {HTMLDivElement} card - HTML markup of the card. * @param {Object} userData - User data to apply to the card. */ function updateUserData(card, userData) { - var type = card.getAttribute('data-type'); - var enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; - var indicatorsElem = null; - var playedIndicator = null; - var countIndicator = null; - var itemProgressBar = null; + const type = card.getAttribute('data-type'); + const enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; + let indicatorsElem = null; + let playedIndicator = null; + let countIndicator = null; + let itemProgressBar = null; if (userData.Played) { @@ -1774,7 +1766,7 @@ import 'programStyles'; } } - var progressHtml = indicators.getProgressBarHtml({ + const progressHtml = indicators.getProgressBarHtml({ Type: type, UserData: userData, MediaType: 'Video' @@ -1788,11 +1780,11 @@ import 'programStyles'; itemProgressBar = document.createElement('div'); itemProgressBar.classList.add('itemProgressBar'); - var innerCardFooter = card.querySelector('.innerCardFooter'); + let innerCardFooter = card.querySelector('.innerCardFooter'); if (!innerCardFooter) { innerCardFooter = document.createElement('div'); innerCardFooter.classList.add('innerCardFooter'); - var cardImageContainer = card.querySelector('.cardImageContainer'); + const cardImageContainer = card.querySelector('.cardImageContainer'); cardImageContainer.appendChild(innerCardFooter); } innerCardFooter.appendChild(itemProgressBar); @@ -1814,9 +1806,9 @@ import 'programStyles'; * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. */ export function onUserDataChanged(userData, scope) { - var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); + const cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); - for (var i = 0, length = cards.length; i < length; i++) { + for (let i = 0, length = cards.length; i < length; i++) { updateUserData(cards[i], userData); } } @@ -1828,13 +1820,13 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onTimerCreated(programId, newTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0, length = cells.length; i < length; i++) { + let cell = cells[i]; + const icon = cell.querySelector('.timerIndicator'); if (!icon) { - var indicatorsElem = ensureIndicators(cell); + const indicatorsElem = ensureIndicators(cell); indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); @@ -1847,11 +1839,11 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onTimerCancelled(timerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0; i < cells.length; i++) { + let cell = cells[i]; + let icon = cell.querySelector('.timerIndicator'); if (icon) { icon.parentNode.removeChild(icon); } @@ -1865,11 +1857,11 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0; i < cells.length; i++) { + let cell = cells[i]; + let icon = cell.querySelector('.timerIndicator'); if (icon) { icon.parentNode.removeChild(icon); } From fb63fc4cce4e4ebcda857bfd7f0a07549210d9da Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 22:38:55 +0100 Subject: [PATCH 398/449] Update yarn.lock --- yarn.lock | 150 +++++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/yarn.lock b/yarn.lock index d260ee6e3f..0ec0ea3155 100644 --- a/yarn.lock +++ b/yarn.lock @@ -730,11 +730,6 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -828,9 +823,9 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*": - version "13.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1924,13 +1919,14 @@ browserslist@^1.1.3: electron-to-chromium "^1.2.7" browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" - integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30001030" - electron-to-chromium "^1.3.363" - node-releases "^1.1.50" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" bs-recipes@1.3.4: version "1.3.4" @@ -2169,7 +2165,7 @@ caniuse-db@^1.0.30000639: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: version "1.0.30001035" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== @@ -3541,10 +3537,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.363: - version "1.3.376" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" - integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== elliptic@^6.0.0: version "6.5.2" @@ -4570,9 +4566,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== dependencies: bindings "^1.5.0" nan "^2.12.1" @@ -5666,9 +5662,9 @@ imurmurhash@^0.1.4: integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== indent-string@^2.1.0: version "2.1.0" @@ -6360,11 +6356,11 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^3.0.0: version "3.0.1" @@ -6509,7 +6505,7 @@ levn@^0.3.0, levn@~0.3.0: "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": version "3.0.2" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#99626d3ee5eb6bd695d7c908c5e6f910213b0e71" liftoff@^3.1.0: version "3.1.0" @@ -7077,9 +7073,9 @@ meow@^5.0.0: yargs-parser "^10.0.0" meow@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.1.tgz#f9b3f912c9aa039142cebcf74315129f4cd1ce1c" - integrity sha512-kxGTFgT/b7/oSRSQsJ0qsT5IMU+bgZ1eAdSA3kIV7onkW0QWo/hL5RbGlMfvBjHJKPE1LaPX0kdecYFiqYWjUw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.0.tgz#4ff4641818d3502afcddc631f94cb6971a581cb3" + integrity sha512-iIAoeI01v6pmSfObAAWFoITAA4GgiT45m4SmJgoxtZfvI0fyZwhV4d0lTwiUXvAKIPlma05Feb2Xngl52Mj5Cg== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.1.1" @@ -7091,7 +7087,7 @@ meow@^6.0.1: redent "^3.0.0" trim-newlines "^3.0.0" type-fest "^0.8.1" - yargs-parser "^16.1.0" + yargs-parser "^18.1.1" merge-descriptors@1.0.1: version "1.0.1" @@ -7218,17 +7214,12 @@ minimist-options@^4.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -7263,11 +7254,11 @@ mixin-deep@^1.2.0: is-extendable "^1.0.1" "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" move-concurrently@^1.0.1: version "1.0.1" @@ -7451,7 +7442,27 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +<<<<<<< HEAD node-releases@^1.1.50: +======= +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + +node-releases@^1.1.52: +>>>>>>> Update yarn.lock version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== @@ -8249,6 +8260,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -8647,9 +8665,9 @@ postcss-modules-local-by-default@^3.0.2: postcss-value-parser "^4.0.0" postcss-modules-scope@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" - integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -8957,15 +8975,6 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -9034,15 +9043,6 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -9453,9 +9453,9 @@ regenerator-runtime@^0.13.4: integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== regenerator-transform@^0.14.2: - version "0.14.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" - integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: "@babel/runtime" "^7.8.4" private "^0.1.8" @@ -11073,9 +11073,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.0.0, terser@^4.1.2: - version "4.6.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.6.tgz#da2382e6cafbdf86205e82fb9a115bd664d54863" - integrity sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g== + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -12226,10 +12226,10 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== +yargs-parser@^18.1.1: + version "18.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" + integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" From 1cfd2538be53e4134050b04fbcef9d3e28928b94 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 23:01:21 +0100 Subject: [PATCH 399/449] Remove dead code from CardBuilder --- src/components/cardbuilder/cardBuilder.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 24e4035050..3bcc83ce62 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -459,16 +459,6 @@ import 'programStyles'; } } - /*let cardFooterHtml = ''; - for (let i = 0; i < (options.lines || 0); i++) { - - if (i === 0) { - cardFooterHtml += '
 
'; - } else { - cardFooterHtml += '
 
'; - } - }*/ - return html; } From 759b3fc106d7f332530452f14c7e771901c347ae Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 21 Mar 2020 03:30:21 +0900 Subject: [PATCH 400/449] minor string changes --- src/components/cardbuilder/cardBuilder.js | 66 ++++++++++++----------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3bcc83ce62..3eac8a8b8a 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,8 +1,10 @@ /* eslint-disable indent */ + /** * Card builder module. * @module cardBuilder */ + import datetime from 'datetime'; import imageLoader from 'imageLoader'; import connectionManager from 'connectionManager'; @@ -23,10 +25,10 @@ import 'programStyles'; const enableFocusTransform = !browser.slow && !browser.edge; /** - * Generate the HTML markup for cards of a set of items. - * @param items - The items to generate cards for. + * Generate the HTML markup for cards for a set of items. + * @param items - The items used to generate cards. * @param options - The options of the cards. - * @returns {string} The HTML markup for cards. + * @returns {string} The HTML markup for the cards. */ export function getCardsHtml(items, options) { if (arguments.length === 1) { @@ -42,7 +44,7 @@ import 'programStyles'; * @param {string} shape - Shape of the cards. * @param {number} screenWidth - Width of the screen. * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. - * @returns {number} Number of cards per row of an itemsContainer. + * @returns {number} Number of cards per row for an itemsContainer. */ function getPostersPerRow(shape, screenWidth, isOrientationLandscape) { switch (shape) { @@ -250,7 +252,7 @@ import 'programStyles'; /** * Checks if the window is resizable. - * @param {number} windowWidth - Width of the client's screen. + * @param {number} windowWidth - Width of the device's screen. * @returns {boolean} - Result of the check. */ function isResizable(windowWidth) { @@ -279,7 +281,7 @@ import 'programStyles'; } /** - * Normalizes the options of a card. + * Normalizes the options for a card. * @param {Object} items - A set of items. * @param {Object} options - Options for handling the items. */ @@ -463,7 +465,7 @@ import 'programStyles'; } /** - * Computes the Aspect Ratio for a card given its shape. + * Computes the aspect ratio for a card given its shape. * @param {string} shape - Shape for which to get the aspect ratio. * @returns {null|number} Ratio of the shape. */ @@ -489,14 +491,14 @@ import 'programStyles'; /** * @typedef {Object} CardImageUrl * @property {string} imgUrl - URL of the image. - * @property {boolean} forceName - Force the name to be visible. + * @property {boolean} forceName - Flag to force the name to be visible. * @property {boolean} coverImage - Acts as a cover image. */ - /** Get the URL of the Card's image. + /** Get the URL of the card's image. * @param {Object} item - Item for which to generate a card. - * @param {Object} apiClient - API Client object. - * @param {Object} options - Options of the card to generate. + * @param {Object} apiClient - API client object. + * @param {Object} options - Options of the card. * @param {string} shape - Shape of the desired image. * @returns {CardImageUrl} Object representing the URL of the card's image. */ @@ -717,7 +719,7 @@ import 'programStyles'; } /** - * Generates a random integer in a range. + * Generates a random integer in a given range. * @param {number} min - Minimum of the range. * @param {number} max - Maximum of the range. * @returns {number} Randomly generated number. @@ -727,7 +729,7 @@ import 'programStyles'; } /** - * Generates an index used to select the default color of a Card based on a string. + * Generates an index used to select the default color of a card based on a string. * @param {string} str - String to use for generating the index. * @returns {number} Index of the color. */ @@ -758,7 +760,7 @@ import 'programStyles'; * @param {string} cardLayout - DEPRECATED * @param {boolean} addRightMargin - Flag to add a right margin to the text. * @param {number} maxLines - Maximum number of lines to render. - * @returns {string} HTML markup fo the card's text. + * @returns {string} HTML markup for the card's text. */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { let html = ''; @@ -806,9 +808,9 @@ import 'programStyles'; } /** - * Determines if the item is Live TV. - * @param {Object} item - Item to use. - * @returns {boolean} Flag showing if the item is Live TV. + * Determines if the item is live TV. + * @param {Object} item - Item to use for the check. + * @returns {boolean} Flag showing if the item is live TV. */ function isUsingLiveTvNaming(item) { return item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording'; @@ -819,7 +821,7 @@ import 'programStyles'; * @param {object} item - Item used to generate the air time text. * @param {string} showAirDateTime - ISO8601 date for the start of the show. * @param {string} showAirEndTime - ISO8601 date for the end of the show. - * @returns {string} The air time text for the item base on the given dates. + * @returns {string} The air time text for the item based on the given dates. */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { let airTimeText = ''; @@ -850,7 +852,7 @@ import 'programStyles'; /** * Generates the HTML markup for the card's footer text. * @param {Object} item - Item used to generate the footer text. - * @param {Object} apiClient - API Client instance. + * @param {Object} apiClient - API client instance. * @param {Object} options - Options used to generate the footer text. * @param {string} showTitle - Title of the show. * @param {boolean} forceName - Flag to force showing the name of the item. @@ -1264,7 +1266,7 @@ import 'programStyles'; * Builds the HTML markup for an individual card. * @param {number} index - Index of the card * @param {object} item - Item used to generate the card. - * @param {object} apiClient - API Client instance. + * @param {object} apiClient - API client instance. * @param {object} options - Options used to generate the card. * @returns {string} HTML markup for the generated card. */ @@ -1598,7 +1600,7 @@ import 'programStyles'; } /** - * Generates the text or icon used on default card backgrounds. + * Generates the text or icon used for default card backgrounds. * @param {object} item - Item used to generate the card overlay. * @param {object} options - Options used to generate the card overlay. * @returns {string} HTML markup of the card overlay. @@ -1633,7 +1635,7 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts it into the page;. + * Builds a set of cards and inserts it into the page. * @param {Array} items - Array of items used to build cards. * @param {options} options - Options of the cards to build. */ @@ -1679,8 +1681,8 @@ import 'programStyles'; } /** - * Ensures the indicators for a card exist and creates them if they don't. - * @param {HTMLDivElement} card - HTML Markup of the card. + * Ensures the indicators for a card exist and creates them if they don't exist. + * @param {HTMLDivElement} card - HTML markup of the card. * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. * @returns {HTMLDivElement} - HTML markup of the indicators. */ @@ -1703,7 +1705,7 @@ import 'programStyles'; } /** - * Adds user data to the card such as progress indicators, played status, etc. + * Adds user data to the card such as progress indicators and played status. * @param {HTMLDivElement} card - HTML markup of the card. * @param {Object} userData - User data to apply to the card. */ @@ -1793,7 +1795,7 @@ import 'programStyles'; /** * Handles when user data has changed. * @param {Object} userData - User data to apply to the card. - * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. + * @param {HTMLElement} scope - DOM element to use as a scope when selecting cards. */ export function onUserDataChanged(userData, scope) { const cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); @@ -1804,10 +1806,10 @@ import 'programStyles'; } /** - * Handles when a timer was created. + * Handles when a timer has been created. * @param {string} programId - ID of the program. * @param {string} newTimerId - ID of the new timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ export function onTimerCreated(programId, newTimerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); @@ -1824,9 +1826,9 @@ import 'programStyles'; } /** - * Handles when a timer is cancelled. + * Handles when a timer has been cancelled. * @param {string} timerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the items container. */ export function onTimerCancelled(timerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); @@ -1842,9 +1844,9 @@ import 'programStyles'; } /** - * Handles when a series timer is cancelled. + * Handles when a series timer has been cancelled. * @param {string} canceledTimerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the items container. */ export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); From feeacf12a2ed7197e5d1f17f70e56dfe64f15305 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:12:34 +0100 Subject: [PATCH 401/449] Implement suggestions --- src/components/cardbuilder/cardBuilder.js | 47 ++++++++++------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3eac8a8b8a..1f87a341c0 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,8 +1,8 @@ /* eslint-disable indent */ /** - * Card builder module. - * @module cardBuilder + * Module for building cards from item data. + * @module components/cardBuilder/cardBuilder */ import datetime from 'datetime'; @@ -488,19 +488,12 @@ import 'programStyles'; return null; } - /** - * @typedef {Object} CardImageUrl - * @property {string} imgUrl - URL of the image. - * @property {boolean} forceName - Flag to force the name to be visible. - * @property {boolean} coverImage - Acts as a cover image. - */ - - /** Get the URL of the card's image. + /** Get the URL of the Card's image. * @param {Object} item - Item for which to generate a card. * @param {Object} apiClient - API client object. * @param {Object} options - Options of the card. * @param {string} shape - Shape of the desired image. - * @returns {CardImageUrl} Object representing the URL of the card's image. + * @returns {Object} Object representing the URL of the card's image. */ function getCardImageUrl(item, apiClient, options, shape) { item = item.ProgramInfo || item; @@ -854,15 +847,15 @@ import 'programStyles'; * @param {Object} item - Item used to generate the footer text. * @param {Object} apiClient - API client instance. * @param {Object} options - Options used to generate the footer text. - * @param {string} showTitle - Title of the show. + * @param {string} showTitle - Flag to show the title in the footer. * @param {boolean} forceName - Flag to force showing the name of the item. * @param {boolean} overlayText - Flag to show overlay text. - * @param {CardImageUrl} imgUrl - Object representing the card's image URL. - * @param {string} footerClass - CSS class of the footer. - * @param {string} progressHtml - HTML markup of the progress bar. + * @param {Object} imgUrl - Object representing the card's image URL. + * @param {string} footerClass - CSS classes of the footer element. + * @param {string} progressHtml - HTML markup of the progress bar element. * @param {string} logoUrl - URL of the logo for the item. * @param {boolean} isOuterFooter - Flag to mark the text as outer footer. - * @returns {string} HTML markup of the card's footer text. + * @returns {string} HTML markup of the card's footer text element. */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { let html = ''; @@ -1635,8 +1628,8 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts it into the page. - * @param {Array} items - Array of items used to build cards. + * Builds a set of cards and inserts them into the page;. + * @param {Array} items - Array of items used to build the cards. * @param {options} options - Options of the cards to build. */ export function buildCards(items, options) { @@ -1682,9 +1675,9 @@ import 'programStyles'; /** * Ensures the indicators for a card exist and creates them if they don't exist. - * @param {HTMLDivElement} card - HTML markup of the card. - * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. - * @returns {HTMLDivElement} - HTML markup of the indicators. + * @param {HTMLDivElement} card - DOM element of the card. + * @param {HTMLDivElement} indicatorsElem - DOM element of the indicators. + * @returns {HTMLDivElement} - DOM element of the indicators. */ function ensureIndicators(card, indicatorsElem) { if (indicatorsElem) { @@ -1706,7 +1699,7 @@ import 'programStyles'; /** * Adds user data to the card such as progress indicators and played status. - * @param {HTMLDivElement} card - HTML markup of the card. + * @param {HTMLDivElement} card - DOM element of the card. * @param {Object} userData - User data to apply to the card. */ function updateUserData(card, userData) { @@ -1828,7 +1821,7 @@ import 'programStyles'; /** * Handles when a timer has been cancelled. * @param {string} timerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ export function onTimerCancelled(timerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); @@ -1845,11 +1838,11 @@ import 'programStyles'; /** * Handles when a series timer has been cancelled. - * @param {string} canceledTimerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM element of the items container. + * @param {string} cancelledTimerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ - export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { - const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); + export function onSeriesTimerCancelled(cancelledTimerId, itemsContainer) { + const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + cancelledTimerId + '"]'); for (let i = 0; i < cells.length; i++) { let cell = cells[i]; From 7bb7270b6137acb009c636c2c93c975e29312ffb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 18:00:03 +0100 Subject: [PATCH 402/449] Fix rebase issues --- src/components/cardbuilder/cardBuilder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 1f87a341c0..9d86bc9d7c 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -488,7 +488,7 @@ import 'programStyles'; return null; } - /** Get the URL of the Card's image. + /** Get the URL of the card's image. * @param {Object} item - Item for which to generate a card. * @param {Object} apiClient - API client object. * @param {Object} options - Options of the card. @@ -1628,7 +1628,7 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts them into the page;. + * Builds a set of cards and inserts them into the page. * @param {Array} items - Array of items used to build the cards. * @param {options} options - Options of the cards to build. */ From 032cc9aa85d347f4b8f06b65c5fbd14c6803327e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 23 Mar 2020 17:11:35 +0100 Subject: [PATCH 403/449] Update yarn.lock --- webpack.common.js | 12 +- yarn.lock | 667 +++++++++++++++++++++++----------------------- 2 files changed, 342 insertions(+), 337 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index 6b357102c0..c87ccdbc0d 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -6,12 +6,12 @@ const CopyPlugin = require("copy-webpack-plugin"); const Assets = [ "alameda/alameda.js", "native-promise-only/npo.js", - "libass-wasm/dist/subtitles-octopus-worker.js", - "libass-wasm/dist/subtitles-octopus-worker.data", - "libass-wasm/dist/subtitles-octopus-worker.wasm", - "libass-wasm/dist/subtitles-octopus-worker-legacy.js", - "libass-wasm/dist/subtitles-octopus-worker-legacy.data", - "libass-wasm/dist/subtitles-octopus-worker-legacy.js.mem" + "libass-wasm/dist/js/subtitles-octopus-worker.js", + "libass-wasm/dist/js/subtitles-octopus-worker.data", + "libass-wasm/dist/js/subtitles-octopus-worker.wasm", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.data", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem" ]; module.exports = { diff --git a/yarn.lock b/yarn.lock index 0ec0ea3155..8b7697cef4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,42 +9,43 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" - integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== dependencies: - browserslist "^4.8.5" + browserslist "^4.9.1" invariant "^2.2.4" semver "^5.5.0" "@babel/core@>=7.2.2", "@babel/core@^7.8.6": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" - integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.7" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.7" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.7" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" - json5 "^2.1.0" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" - integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== +"@babel/generator@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.3.tgz#7c8b2956c6f68b3ab732bd16305916fbba521d94" + integrity sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ== dependencies: - "@babel/types" "^7.8.7" + "@babel/types" "^7.9.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -64,15 +65,6 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" - integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.7" - "@babel/helper-compilation-targets@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" @@ -147,17 +139,17 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" - integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" "@babel/template" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/types" "^7.9.0" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": @@ -167,7 +159,7 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== @@ -215,6 +207,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -225,28 +222,28 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" - integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== dependencies: + "@babel/helper-validator-identifier" "^7.9.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.8.6", "@babel/parser@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" - integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== +"@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.3.tgz#043a5fc2ad8b7ea9facddc4e802a1f0f25da7255" + integrity sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -281,10 +278,18 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.8.3": +"@babel/plugin-proposal-numeric-separator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -297,15 +302,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" - integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.8.3": +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.8.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== @@ -341,6 +346,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" @@ -400,10 +412,10 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" - integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" + integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" @@ -428,7 +440,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== @@ -451,10 +463,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" - integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -480,41 +492,41 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" - integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== +"@babel/plugin-transform-modules-amd@^7.8.3", "@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" - integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" - integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" - integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": @@ -540,11 +552,10 @@ "@babel/helper-replace-supers" "^7.8.3" "@babel/plugin-transform-parameters@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" - integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" + integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== dependencies: - "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -623,11 +634,11 @@ regenerator-runtime "^0.13.4" "@babel/preset-env@^7.8.6": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" - integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== dependencies: - "@babel/compat-data" "^7.8.6" + "@babel/compat-data" "^7.9.0" "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -635,14 +646,16 @@ "@babel/plugin-proposal-dynamic-import" "^7.8.3" "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" @@ -651,20 +664,20 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-classes" "^7.9.0" "@babel/plugin-transform-computed-properties" "^7.8.3" "@babel/plugin-transform-destructuring" "^7.8.3" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-for-of" "^7.9.0" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.8.3" - "@babel/plugin-transform-modules-commonjs" "^7.8.3" - "@babel/plugin-transform-modules-systemjs" "^7.8.3" - "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" @@ -678,17 +691,29 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.7" - browserslist "^4.8.5" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" - integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: regenerator-runtime "^0.13.4" @@ -701,27 +726,27 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" - integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== +"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.6" + "@babel/generator" "^7.9.0" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" - integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== +"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.0" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -823,9 +848,9 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*": - version "13.9.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" - integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + version "13.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" + integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -881,18 +906,18 @@ "@types/vfile-message" "*" "@types/webpack-sources@*": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.6.tgz#3d21dfc2ec0ad0c77758e79362426a9ba7d7cbcb" - integrity sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ== + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" + integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.6.1" "@types/webpack@^4.4.31": - version "4.41.7" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" - integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== + version "4.41.8" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.8.tgz#d2244f5f612ee30230a5c8c4ae678bce90d27277" + integrity sha512-mh4litLHTlDG84TGCFv1pZldndI34vkrW9Mks++Zx4KET7DRMoCXUvLbTISiuF4++fMgNnhV9cc1nCXJQyBYbQ== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -901,150 +926,149 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: - "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" + "@webassemblyjs/ast" "1.9.0" -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -1495,17 +1519,17 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.7.4: - version "9.7.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" - integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + version "9.7.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.5.tgz#8df10b9ff9b5814a8d411a5cfbab9c793c392376" + integrity sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg== dependencies: - browserslist "^4.8.3" - caniuse-lite "^1.0.30001020" + browserslist "^4.11.0" + caniuse-lite "^1.0.30001036" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.26" - postcss-value-parser "^4.0.2" + postcss "^7.0.27" + postcss-value-parser "^4.0.3" aws-sign2@~0.7.0: version "0.7.0" @@ -1526,14 +1550,15 @@ axios@0.19.0: is-buffer "^2.0.2" babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" @@ -1918,13 +1943,13 @@ browserslist@^1.1.3: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== +browserslist@^4.0.0, browserslist@^4.11.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1: + version "4.11.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad" + integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A== dependencies: caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" + electron-to-chromium "^1.3.380" node-releases "^1.1.52" pkg-up "^3.1.0" @@ -2014,9 +2039,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^12.0.2, cacache@^12.0.3: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -2161,14 +2186,14 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000639: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" - integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== + version "1.0.30001036" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001036.tgz#8761fb6cd423ef2d3f8d96a21d898932252dc477" + integrity sha512-plRkihXQyiDaFUXC7x/jAIXXTKiiaWvfAagsruh/vmstnRQ+a2a95HyENxiTr5WrkPSvmFUIvsRUalVFyeh2/w== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" - integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036: + version "1.0.30001036" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" + integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w== caseless@~0.12.0: version "0.12.0" @@ -3537,10 +3562,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.378: - version "1.3.379" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" - integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.380: + version "1.3.382" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.382.tgz#cad02da655c33f7a3d6ca7525bd35c17e90f3a8f" + integrity sha512-gJfxOcgnBlXhfnUUObsq3n3ReU8CT6S8je97HndYRkKsNZMJJ38zO/pI5aqO7L3Myfq+E3pqPyKK/ynyLEQfBA== elliptic@^6.0.0: version "6.5.2" @@ -3703,9 +3728,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: - version "1.17.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" - integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -3870,11 +3895,11 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" - integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" + integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== dependencies: - estraverse "^4.0.0" + estraverse "^5.0.0" esrecurse@^4.1.0: version "4.2.1" @@ -3883,11 +3908,16 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" + integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4346,7 +4376,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -4714,9 +4744,9 @@ glob-parent@^3.1.0: path-dirname "^1.0.0" glob-parent@^5.0.0, glob-parent@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" @@ -6355,7 +6385,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: +json5@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== @@ -6504,8 +6534,8 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": - version "3.0.2" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#99626d3ee5eb6bd695d7c908c5e6f910213b0e71" + version "4.0.0" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#1d12af0b04fb2337570b57d706dd97db2f904b9d" liftoff@^3.1.0: version "3.1.0" @@ -6581,7 +6611,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -6907,11 +6937,6 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -7253,10 +7278,10 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" - integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== dependencies: minimist "^1.2.5" @@ -7442,27 +7467,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -<<<<<<< HEAD -node-releases@^1.1.50: -======= -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.52: ->>>>>>> Update yarn.lock version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== @@ -8222,9 +8227,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -9898,7 +9903,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4, schema-utils@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== @@ -12001,14 +12006,14 @@ webpack-stream@^5.2.1: webpack "^4.26.1" webpack@^4.26.1, webpack@^4.41.5: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + version "4.42.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" + integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" acorn "^6.2.1" ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -12020,7 +12025,7 @@ webpack@^4.26.1, webpack@^4.41.5: loader-utils "^1.2.3" memory-fs "^0.4.1" micromatch "^3.1.10" - mkdirp "^0.5.1" + mkdirp "^0.5.3" neo-async "^2.6.1" node-libs-browser "^2.2.1" schema-utils "^1.0.0" @@ -12197,9 +12202,9 @@ yallist@^3.0.2: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" - integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + version "1.8.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" + integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== dependencies: "@babel/runtime" "^7.8.7" From 82aa8a3f28383ce7286d9fa66b7d2293e1835cc4 Mon Sep 17 00:00:00 2001 From: lldsolitude Date: Tue, 24 Mar 2020 08:42:04 +0000 Subject: [PATCH 404/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b0c9a59694..ec6591fe25 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1474,5 +1474,8 @@ "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。", "PlaybackErrorNoCompatibleStream": "客户端配置文件存在问题,服务器未发送兼容的媒体格式。", "AllowFfmpegThrottlingHelp": "当转码或再封装的进度大幅超过当前播放位置时,暂停该进程,以使其消耗更少的资源。在观看时不经常调整播放进度的情况下,这将非常有用。如果遇到播放问题,请关闭此功能。", - "AllowFfmpegThrottling": "限制转码速度" + "AllowFfmpegThrottling": "限制转码速度", + "PreferEmbeddedEpisodeInfosOverFileNames": "优先使用内置的剧集信息而不是文件名", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "这将在内置元数据含剧集信息时使用内置信息。", + "ClientSettings": "客户端设置" } From dba5fd9ac92798ab389d7fd7a6ad6400f3e24616 Mon Sep 17 00:00:00 2001 From: Casper Talvio Date: Tue, 24 Mar 2020 12:56:20 +0000 Subject: [PATCH 405/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 11d497fd19..b3515ae4a8 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -257,7 +257,7 @@ "DownloadsValue": "{0} latausta", "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", "DropShadow": "Tiputa varjo", - "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voidaan myös nopeuttaa verkkoon kirjautumista.", + "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voi myös nopeuttaa lan yhteyden kautta kirjautumista.", "Edit": "Muokkaa", "EditImages": "Muokkaa kuvia", "EditMetadata": "Muokkaa metadataa", @@ -310,5 +310,10 @@ "Depressed": "Painettu", "CopyStreamURLError": "Verkko-osoitteen kopioinnissa tapahtui virhe.", "ButtonSplit": "jaa", - "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto." + "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.", + "EnableStreamLooping": "Auto-toista suoralähetykset", + "EnableNextVideoInfoOverlayHelp": "Videon lopussa, näytä soittolistassa seuraavaksi toistettavan videon tiedot.", + "ClientSettings": "Pääte-asetukset", + "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", + "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus" } From 02ce5f6d6c581fe95526c29b848e1785d2c6e27f Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Tue, 24 Mar 2020 15:00:17 +0000 Subject: [PATCH 406/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index ec6591fe25..f752606b33 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1348,7 +1348,7 @@ "HeaderFavoriteArtists": "最爱的艺术家", "HeaderKeepRecording": "继续录制", "HeaderKeepSeries": "保持系列", - "HeaderMusicQuality": "音质", + "HeaderMusicQuality": "音频质量", "HeaderNextEpisodePlayingInValue": "下一集在 {0} 后播放", "HeaderNextVideoPlayingInValue": "下一部影片在 {0} 后播放", "HeaderPlayOn": "播放在", From 9115a4e1fa626407dc0fbb5a10574e7f6cd0af8c Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 19:33:10 +0100 Subject: [PATCH 407/449] Clean up the settings menu on mobile --- src/assets/css/librarybrowser.css | 6 +++++- src/controllers/user/menu.js | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 0bf65d83a7..13265e40d1 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -21,7 +21,7 @@ } .libraryPage { - padding-top: 7em !important; + padding-top: 7em; } .itemDetailPage { @@ -1119,3 +1119,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .itemsViewSettingsContainer > .button-flat { margin: 0; } + +.layout-mobile #myPreferencesMenuPage { + padding-top: 3.75em; +} diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index b1e2b7b519..e7d816fb6f 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -1,4 +1,4 @@ -define(["apphost", "connectionManager", "listViewStyle", "emby-button"], function(appHost, connectionManager) { +define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-button"], function(appHost, connectionManager, layoutManager) { "use strict"; return function(view, params) { @@ -43,6 +43,12 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio page.querySelector(".adminSection").classList.add("hide"); } + if (layoutManager.mobile) { + page.querySelector(".headerUsername").classList.add("hide"); + page.querySelector(".adminSection").classList.add("hide"); + page.querySelector(".userSection").classList.add("hide"); + } + ApiClient.getUser(userId).then(function(user) { page.querySelector(".headerUsername").innerHTML = user.Name; if (!user.Policy.IsAdministrator) { From 3b9ca3c1a398e5a0dffc8c6763e4c27b817cc13d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 21:09:10 +0100 Subject: [PATCH 408/449] Add Settings entry to the navigation drawer --- src/scripts/librarymenu.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 5e6562ee42..11c89b01da 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -243,15 +243,20 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; } + html += '' + globalize.translate("ButtonSettings") + ""; html += '' + globalize.translate("ButtonSignOut") + ""; html += "
"; } // add buttons to navigation drawer navDrawerScrollContainer.innerHTML = html; - // bind logout button click to method - var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout"); + var btnSettings = navDrawerScrollContainer.querySelector(".btnSettings"); + if (btnSettings) { + btnSettings.addEventListener("click", onSettingsClick); + } + + var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout"); if (btnLogout) { btnLogout.addEventListener("click", onLogoutClick); } @@ -598,6 +603,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } } + function onSettingsClick() { + Dashboard.navigate("mypreferencesmenu.html"); + } + function onLogoutClick() { Dashboard.logout(); } From cccbf24f099464dfc654a0f323f57b7cbec54274 Mon Sep 17 00:00:00 2001 From: Mathis Date: Tue, 24 Mar 2020 21:48:49 +0000 Subject: [PATCH 409/449] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index 60fd625ea3..5a449d8e55 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1,5 +1,5 @@ { - "Absolute": "Gesamt", + "Absolute": "Absolut", "AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschränkt. Bitte versuche es später erneut.", "Actor": "Darsteller(in)", "Add": "Hinzufügen", @@ -1493,5 +1493,6 @@ "NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}", "AllowFfmpegThrottling": "Transkodierung drosseln", "PlaybackErrorNoCompatibleStream": "Es gab ein Problem bei der Erkennung des Wiedergabeprofils des Clients und der Server sendet kein kompatibles Format.", - "AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden." + "AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden.", + "ClientSettings": "Client Einstellungen" } From 2fec0e40823bdbf6c4d064b359baa7dcd0bd7795 Mon Sep 17 00:00:00 2001 From: Mathis Date: Tue, 24 Mar 2020 21:49:55 +0000 Subject: [PATCH 410/449] Translated using Weblate (German (Swiss)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gsw/ --- src/strings/gsw.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 7d0162e852..a154e4fc8e 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -164,5 +164,8 @@ "Songs": "Lieder", "Sync": "Synchronisation", "ValueSpecialEpisodeName": "Extra - {0}", - "VersionNumber": "Version {0}" + "VersionNumber": "Version {0}", + "Absolute": "Absolut", + "Actor": "Schauspiler", + "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. " } From 580bf9fd23a136de3038ac509c35f3772764e8cf Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:37:34 +0000 Subject: [PATCH 411/449] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 756a759068..626583fa0b 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -328,7 +328,7 @@ "Art": "圖像", "Artists": "演出者", "AsManyAsPossible": "越多越好", - "Ascending": "由少到多", + "Ascending": "遞增", "AspectRatio": "長寬比", "AttributeNew": "新增", "Audio": "音訊", @@ -552,7 +552,7 @@ "EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", "HDPrograms": "HD節目", "HandledByProxy": "由反向代理處理", - "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”自動“。", + "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”無“。", "HeaderAccessSchedule": "存取時程", "HeaderAccessScheduleHelp": "建立一個存取時程以限制可存取的時段。", "HeaderActiveDevices": "運行中裝置", @@ -1493,7 +1493,7 @@ "RecordingPathChangeMessage": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。", "RestartPleaseWaitMessage": "Jellyfin 伺服器將重新啟動,這將花費幾分鐘時間。", "LabelEmbedAlbumArtDidl": "於 Didl 中嵌入專輯封面", - "LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。", + "LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。需重新啓動伺服器。", "LabelEmbedAlbumArtDidlHelp": "有些裝置使用這個方式來取得專輯封面,啟用這個選項可能導致其他設備播放失敗。", "SettingsWarning": "更改這些值可能會導致不穩定或連線故障。如果您遇到任何問題,建議將它們重新更改為預設值。", "LabelEnableSingleImageInDidlLimitHelp": "若在 Didl 中嵌入多個圖片,某些裝置可能無法正常顯示。", @@ -1641,5 +1641,10 @@ "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", - "ButtonSplit": "拆分" + "ButtonSplit": "分割", + "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員", + "NoCreatedLibraries": "看來您還未創任何媒體庫。{0}立刻創一個新的嗎?{1}", + "ClientSettings": "用戶設定", + "AllowFfmpegThrottlingHelp": "當轉檔或重組進度大量超前目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。", + "AllowFfmpegThrottling": "限制轉檔" } From 3ed9be897e727d983d82c9b89976c90dcf99bd54 Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:53:03 +0000 Subject: [PATCH 412/449] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 626583fa0b..d527b5a5bf 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1637,7 +1637,7 @@ "LabelVideoResolution": "視頻解析度:", "LabelStreamType": "串流類型:", "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", - "EnableFastImageFadeIn": "快速圖片淡入", + "EnableFastImageFadeIn": "圖片快速淡入效果", "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", From ca0914819a74d64c39d01dea8208b44a1ee270b6 Mon Sep 17 00:00:00 2001 From: The Iiseppi Date: Wed, 25 Mar 2020 08:32:09 +0000 Subject: [PATCH 413/449] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index b3515ae4a8..b61724e2fe 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -315,5 +315,10 @@ "EnableNextVideoInfoOverlayHelp": "Videon lopussa, näytä soittolistassa seuraavaksi toistettavan videon tiedot.", "ClientSettings": "Pääte-asetukset", "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", - "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus" + "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus", + "ErrorDeletingItem": "Tiedostoa poistaessa Jellyfin Palvelimelta ilmeni virhe. Varmista, että Jellyfin Palvelimella on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.", + "ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.", + "ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.", + "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla, selatessasi kirjastoa.", + "EnableThemeVideos": "Teeman videot" } From 308000bc97913d53ba6e7ef87d8d25f2c0200b46 Mon Sep 17 00:00:00 2001 From: Ric Li Date: Wed, 25 Mar 2020 08:28:53 +0000 Subject: [PATCH 414/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index f752606b33..a37f839039 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -705,7 +705,7 @@ "LabelPublicHttpPortHelp": "映射到本地 HTTP 端口的公开端口号。", "LabelPublicHttpsPort": "公开 HTTPS 端口号:", "LabelPublicHttpsPortHelp": "映射到本地 HTTPS 端口的公开端口号。", - "LabelReadHowYouCanContribute": "学习如何构建。", + "LabelReadHowYouCanContribute": "了解如何做出贡献。", "LabelReasonForTranscoding": "转码原因:", "LabelRecord": "录制:", "LabelRecordingPath": "默认录制路径:", From 1c54bdee51d52ba3f358e66e5ff82522d2765c7a Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:53:18 +0000 Subject: [PATCH 415/449] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index d527b5a5bf..ffc0228af2 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1636,15 +1636,18 @@ "LaunchWebAppOnStartupHelp": "伺服器啓動時在默認游覽器中打開網頁端。使用重啓伺服器功能時此項不生效。", "LabelVideoResolution": "視頻解析度:", "LabelStreamType": "串流類型:", - "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", + "EnableFastImageFadeInHelp": "對已載入的圖片啟用更快的淡入動畫", "EnableFastImageFadeIn": "圖片快速淡入效果", "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", "ButtonSplit": "分割", - "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員", + "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員。", "NoCreatedLibraries": "看來您還未創任何媒體庫。{0}立刻創一個新的嗎?{1}", "ClientSettings": "用戶設定", "AllowFfmpegThrottlingHelp": "當轉檔或重組進度大量超前目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。", - "AllowFfmpegThrottling": "限制轉檔" + "AllowFfmpegThrottling": "限制轉檔", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "這將會使用內建劇集資料。", + "PlaybackErrorNoCompatibleStream": "用戶端偵測出了問題,伺服器也未傳送相容的媒體格式。", + "PreferEmbeddedEpisodeInfosOverFileNames": "優先使用內建劇集資訊而不是檔案名稱" } From d7c32dcde924d9a3afb3790103f401be3b25ad73 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 12:34:50 +0300 Subject: [PATCH 416/449] Fix radiobutton focus marker --- src/elements/emby-radio/emby-radio.css | 105 ++++++++++++++----------- src/elements/emby-radio/emby-radio.js | 20 ++++- src/themes/purplehaze/theme.css | 9 +++ 3 files changed, 87 insertions(+), 47 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 6db3c39e4d..34af657b9c 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -4,7 +4,6 @@ display: inline-block; box-sizing: border-box; margin: 0; - padding-left: 24px; } .radio-label-block { @@ -31,67 +30,81 @@ border: none; } -.mdl-radio__outer-circle { - position: absolute; - top: 4px; - left: 0; - display: inline-block; - box-sizing: border-box; - width: 16px; - height: 16px; - margin: 0; - cursor: pointer; - border: 2px solid currentcolor; +.mdl-radio__circles { + position: relative; + margin-right: 0.54em; + width: 1.08em; + height: 1.08em; border-radius: 50%; - z-index: 2; + cursor: pointer; } -.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid #00a4dc; +.mdl-radio__circles svg { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 1; } -.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid rgba(0, 0, 0, 0.26); +.mdl-radio__button:disabled + .mdl-radio__circles { cursor: auto; } +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { + color: #00a4dc; +} + +.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__outer-circle { + color: rgba(0, 0, 0, 0.26); +} + .mdl-radio__inner-circle { - position: absolute; - z-index: 1; - margin: 0; - top: 8px; - left: 4px; - box-sizing: border-box; - width: 8px; - height: 8px; - cursor: pointer; - transition-duration: 0.28s; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 0.2s; transition-property: -webkit-transform; transition-property: transform; transition-property: transform, -webkit-transform; - -webkit-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); + -webkit-transform: scale(0); + transform: scale(0); + transform-origin: 50% 50%; +} + +.mdl-radio__button:checked + .mdl-radio__circles .mdl-radio__inner-circle { + -webkit-transform: scale(1); + transform: scale(1); +} + +.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__inner-circle { + color: rgba(0, 0, 0, 0.26); +} + +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { + color: #00a4dc; +} + +.mdl-radio__focus-circle { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + margin: 0; border-radius: 50%; background: #00a4dc; + opacity: 0.26; + transition-duration: 0.2s; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); } -.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - background: rgba(0, 0, 0, 0.26); - cursor: auto; -} - -.mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.76); -} - -.mdl-radio__button:checked:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26); +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { + -webkit-transform: scale(1.75); + transform: scale(1.75); } .mdl-radio__label { diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 000c656822..86c08678e1 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -43,7 +43,25 @@ define(['css!./emby-radio', 'registerElement'], function () { labelTextElement.classList.add('radioButtonLabel'); labelTextElement.classList.add('mdl-radio__label'); - labelElement.insertAdjacentHTML('beforeend', ''); + var html = ''; + + html += '
'; + + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + html += '
'; + + html += '
'; + + this.insertAdjacentHTML('afterend', html); this.addEventListener('keydown', onKeyDown); }; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 9c13841422..a31b5a924f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -438,6 +438,15 @@ a[data-role=button] { color: #f8f8fe; } +.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, +.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { + color: #ff77f1; +} + +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { + background: #00a4dc; +} + .emby-tab-button { color: #999; } From a41bd6de56a09baaa27fec396ed5b3a546af11af Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 12:35:13 +0300 Subject: [PATCH 417/449] Fix checkbox border on TV --- src/elements/emby-checkbox/emby-checkbox.css | 2 +- src/themes/purplehaze/theme.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index 42a9207560..b33a216140 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -55,7 +55,7 @@ height: 1.83em; margin: 0; overflow: hidden; - border: 2px solid currentcolor; + border: 0.14em solid currentcolor; border-radius: 0.14em; z-index: 2; display: flex; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index a31b5a924f..d65071afa4 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -382,7 +382,7 @@ a[data-role=button] { .emby-checkbox:checked + span + .checkboxOutline { background-color: #030322; - border: 2px solid rgb(72, 195, 200); + border: 0.14em solid rgb(72, 195, 200); } .emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { @@ -394,7 +394,7 @@ a[data-role=button] { } .emby-checkbox:focus:not(:checked) + span + .checkboxOutline { - border: 2px solid #ff77f1; + border: 0.14em solid #ff77f1; } .itemProgressBarForeground { From 17d1dc355940ae0069782cba5d9cc539119ed38c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 18:49:38 +0300 Subject: [PATCH 418/449] Fix tiny cropping in Firefox --- src/elements/emby-radio/emby-radio.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 34af657b9c..0b17a82ed4 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -46,6 +46,7 @@ top: 0; left: 0; z-index: 1; + overflow: visible; } .mdl-radio__button:disabled + .mdl-radio__circles { From a2ccaa29c3b6b4115d573fe086551ca9587cf7fc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 20:45:27 +0300 Subject: [PATCH 419/449] Turn off radiobutton focus on Mobile --- src/elements/emby-radio/emby-radio.css | 6 +++--- src/elements/emby-radio/emby-radio.js | 10 ++++++++-- src/themes/purplehaze/theme.css | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 0b17a82ed4..f8671ce265 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -53,7 +53,7 @@ cursor: auto; } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { color: #00a4dc; } @@ -80,7 +80,7 @@ color: rgba(0, 0, 0, 0.26); } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { color: #00a4dc; } @@ -103,7 +103,7 @@ transform: scale(0); } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { -webkit-transform: scale(1.75); transform: scale(1.75); } diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 86c08678e1..46a3e3826c 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -1,4 +1,4 @@ -define(['css!./emby-radio', 'registerElement'], function () { +define(['layoutManager', 'css!./emby-radio', 'registerElement'], function (layoutManager) { 'use strict'; var EmbyRadioPrototype = Object.create(HTMLInputElement.prototype); @@ -23,6 +23,7 @@ define(['css!./emby-radio', 'registerElement'], function () { } EmbyRadioPrototype.attachedCallback = function () { + var showFocus = !layoutManager.mobile; if (this.getAttribute('data-radio') === 'true') { return; @@ -37,6 +38,9 @@ define(['css!./emby-radio', 'registerElement'], function () { labelElement.classList.add('mdl-radio'); labelElement.classList.add('mdl-js-radio'); labelElement.classList.add('mdl-js-ripple-effect'); + if (showFocus) { + labelElement.classList.add('show-focus'); + } var labelTextElement = labelElement.querySelector('span'); @@ -57,7 +61,9 @@ define(['css!./emby-radio', 'registerElement'], function () { html += ''; html += ''; - html += '
'; + if (showFocus) { + html += '
'; + } html += '
'; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index d65071afa4..45f43abc2f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -438,12 +438,12 @@ a[data-role=button] { color: #f8f8fe; } -.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, -.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { color: #ff77f1; } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { background: #00a4dc; } From 9bf5cda44afc5ba2f31b62bd620074a341f556b3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 20:53:49 +0300 Subject: [PATCH 420/449] Fix lint error --- src/elements/emby-radio/emby-radio.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index f8671ce265..2d7f584171 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -53,14 +53,14 @@ cursor: auto; } -.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { - color: #00a4dc; -} - .mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__outer-circle { color: rgba(0, 0, 0, 0.26); } +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { + color: #00a4dc; +} + .mdl-radio__inner-circle { transition-duration: 0.2s; transition-property: -webkit-transform; From 8f1434fa40bb4fa6a0abc392b0911700081e9d8e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 25 Mar 2020 21:40:22 +0100 Subject: [PATCH 421/449] Fix Browsersync JavaScript reload error --- gulpfile.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index ca6cf36dd2..33a34889fb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,14 +18,14 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); - -sass.compiler = require('node-sass') +sass.compiler = require('node-sass'); +var config; if (mode.production()) { - var config = require('./webpack.prod.js'); + config = require('./webpack.prod.js'); } else { - var config = require('./webpack.dev.js'); + config = require('./webpack.dev.js'); } function serve() { @@ -36,20 +36,20 @@ function serve() { port: 8080 }); - watch(['src/**/*.js', '!src/bundle.js'], javascript); + watch(['src/**/*.js', '!src/bundle.js'], series(javascript, standalone)); watch('src/bundle.js', webpack); watch('src/**/*.css', css); watch(['src/**/*.html', '!src/index.html'], html); watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); watch(['src/**/*.json', 'src/**/*.ico'], copy); watch('src/index.html', injectBundle); - watch(['src/standalone.js', 'src/scripts/apploader.js'], standalone); } function standalone() { return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) .pipe(concat('scripts/apploader.js')) - .pipe(dest('dist/')); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function clean() { @@ -70,7 +70,6 @@ function javascript() { })) .pipe(mode.development(sourcemaps.write('.'))) .pipe(dest('dist/')) - .pipe(browserSync.stream()); } function webpack() { @@ -118,6 +117,6 @@ function injectBundle() { .pipe(browserSync.stream()); } -exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) -exports.standalone = series(exports.default, standalone) -exports.serve = series(exports.standalone, serve) +exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle); +exports.standalone = series(exports.default, standalone); +exports.serve = series(exports.standalone, serve); From 2a7f7ba7fee1c9d12af9b43084c65b1df5ed236d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 25 Mar 2020 22:26:28 +0100 Subject: [PATCH 422/449] Use let instead of var in gulpfile --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 33a34889fb..f42376e24a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -21,7 +21,7 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass'); -var config; +let config; if (mode.production()) { config = require('./webpack.prod.js'); } else { From cd1732677db7ab75b9228e030c017f73581ef78c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 11:15:44 +0300 Subject: [PATCH 423/449] Add browser lazy-sync --- gulpfile.js | 143 +++++++++++++++++++++++++++++++++++++++------------ package.json | 2 + yarn.lock | 72 ++++++++++++++++++++++++-- 3 files changed, 182 insertions(+), 35 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index f42376e24a..0eb5593541 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,6 +18,8 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); +const gulpif = require('gulp-if'); +const lazypipe = require('lazypipe'); sass.compiler = require('node-sass'); @@ -28,6 +30,30 @@ if (mode.production()) { config = require('./webpack.dev.js'); } +const options = { + javascript: { + query: ['src/**/*.js', '!src/bundle.js', '!src/standalone.js', '!src/scripts/apploader.js'] + }, + apploader: { + query: ['src/standalone.js', 'src/scripts/apploader.js'] + }, + css: { + query: ['src/**/*.css', 'src/**/*.scss'] + }, + html: { + query: ['src/**/*.html', '!src/index.html'] + }, + images: { + query: ['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'] + }, + copy: { + query: ['src/**/*.json', 'src/**/*.ico'] + }, + injectBundle: { + query: 'src/index.html' + } +}; + function serve() { browserSync.init({ server: { @@ -36,40 +62,89 @@ function serve() { port: 8080 }); - watch(['src/**/*.js', '!src/bundle.js'], series(javascript, standalone)); - watch('src/bundle.js', webpack); - watch('src/**/*.css', css); - watch(['src/**/*.html', '!src/index.html'], html); - watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); - watch(['src/**/*.json', 'src/**/*.ico'], copy); - watch('src/index.html', injectBundle); -} + let events = ['add', 'change']; -function standalone() { - return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) - .pipe(concat('scripts/apploader.js')) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + watch(options.javascript.query).on('all', function (event, path) { + if (events.includes(event)) { + javascript(path); + } + }); + + watch(options.apploader.query, apploader(true)); + + watch('src/bundle.js', webpack); + + watch(options.css.query).on('all', function (event, path) { + if (events.includes(event)) { + css(path); + } + }); + + watch(options.html.query).on('all', function (event, path) { + if (events.includes(event)) { + html(path); + } + }); + + watch(options.images.query).on('all', function (event, path) { + if (events.includes(event)) { + images(path); + } + }); + + watch(options.copy.query).on('all', function (event, path) { + if (events.includes(event)) { + copy(path); + } + }); + + watch(options.injectBundle.query, injectBundle); } function clean() { return del(['dist/']); } -function javascript() { - return src(['src/**/*.js', '!src/bundle.js'], { base: './src/' }) - .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) - .pipe(babel({ +let pipelineJavascript = lazypipe() + .pipe(function () { + return mode.development(sourcemaps.init({ loadMaps: true })); + }) + .pipe(function () { + return babel({ presets: [ ['@babel/preset-env'] ] - })) - .pipe(terser({ + }); + }) + .pipe(function () { + return terser({ keep_fnames: true, mangle: false - })) - .pipe(mode.development(sourcemaps.write('.'))) + }); + }) + .pipe(function () { + return mode.development(sourcemaps.write('.')); + }); + +function javascript(query) { + return src(typeof query !== 'function' ? query : options.javascript.query, { base: './src/' }) + .pipe(pipelineJavascript()) .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function apploader(standalone) { + function task() { + return src(options.apploader.query, { base: './src/' }) + .pipe(gulpif(standalone, concat('scripts/apploader.js'))) + .pipe(pipelineJavascript()) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); + }; + + task.displayName = 'apploader'; + + return task; } function webpack() { @@ -78,8 +153,8 @@ function webpack() { .pipe(browserSync.stream()); } -function css() { - return src(['src/**/*.css', 'src/**/*.scss'], { base: './src/' }) +function css(query) { + return src(typeof query !== 'function' ? query : options.css.query, { base: './src/' }) .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) .pipe(sass().on('error', sass.logError)) .pipe(postcss()) @@ -88,28 +163,28 @@ function css() { .pipe(browserSync.stream()); } -function html() { - return src(['src/**/*.html', '!src/index.html'], { base: './src/' }) +function html(query) { + return src(typeof query !== 'function' ? query : options.html.query, { base: './src/' }) .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) .pipe(dest('dist/')) .pipe(browserSync.stream()); } -function images() { - return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' }) +function images(query) { + return src(typeof query !== 'function' ? query : options.images.query, { base: './src/' }) .pipe(mode.production(imagemin())) .pipe(dest('dist/')) .pipe(browserSync.stream()); } -function copy() { - return src(['src/**/*.json', 'src/**/*.ico'], { base: './src/' }) +function copy(query) { + return src(typeof query !== 'function' ? query : options.copy.query, { base: './src/' }) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function injectBundle() { - return src('src/index.html', { base: './src/' }) + return src(options.injectBundle.query, { base: './src/' }) .pipe(inject( src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true } )) @@ -117,6 +192,10 @@ function injectBundle() { .pipe(browserSync.stream()); } -exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle); -exports.standalone = series(exports.default, standalone); +function build(standalone) { + return series(clean, parallel(javascript, apploader(standalone), webpack, css, html, images, copy), injectBundle); +} + +exports.default = build(false); +exports.standalone = build(true); exports.serve = series(exports.standalone, serve); diff --git a/package.json b/package.json index 2de78b821c..58d288b371 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "gulp-cli": "^2.2.0", "gulp-concat": "^2.6.1", "gulp-htmlmin": "^5.0.1", + "gulp-if": "^3.0.0", "gulp-imagemin": "^7.1.0", "gulp-inject": "^5.0.5", "gulp-mode": "^1.0.2", @@ -32,6 +33,7 @@ "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", + "lazypipe": "^1.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", diff --git a/yarn.lock b/yarn.lock index 8b7697cef4..5641ad41a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3517,6 +3517,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3527,6 +3532,16 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplexify@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" + integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + each-props@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" @@ -3610,7 +3625,7 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4524,6 +4539,11 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA= + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5064,6 +5084,15 @@ gulp-htmlmin@^5.0.1: plugin-error "^1.0.1" through2 "^2.0.3" +gulp-if@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-3.0.0.tgz#6c3e7edc8bafadc34f2ebecb314bf43324ba1e40" + integrity sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw== + dependencies: + gulp-match "^1.1.0" + ternary-stream "^3.0.0" + through2 "^3.0.1" + gulp-imagemin@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-7.1.0.tgz#d1810a908fb64b4fbf15a750d303d988443e68cf" @@ -5096,6 +5125,13 @@ gulp-inject@^5.0.5: stream-to-array "^2.3.0" through2 "^3.0.1" +gulp-match@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz#552b7080fc006ee752c90563f9fec9d61aafdf4f" + integrity sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ== + dependencies: + minimatch "^3.0.3" + gulp-mode@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/gulp-mode/-/gulp-mode-1.0.2.tgz#33c76033491fb71f47f1ebf8c67561ad9da7dfc9" @@ -6480,6 +6516,13 @@ last-run@^1.1.0: default-resolution "^2.0.0" es6-weak-map "^2.0.1" +lazypipe@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz#b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c" + integrity sha512-CrU+NYdFHW8ElaeXCWz5IbmetiYVYq1fOCmpdAeZ8L+khbv1e7EnshyjlKqkO+pJbVPrsJQnHbVxEiLujG6qhQ== + dependencies: + stream-combiner "*" + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -7119,6 +7162,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3, merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" @@ -7216,7 +7264,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -10525,6 +10573,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@*: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -11062,6 +11118,16 @@ tempfile@^2.0.0: temp-dir "^1.0.0" uuid "^3.0.1" +ternary-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253" + integrity sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ== + dependencies: + duplexify "^4.1.1" + fork-stream "^0.0.4" + merge-stream "^2.0.0" + through2 "^3.0.1" + terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" @@ -11129,7 +11195,7 @@ through2@^3.0.1: dependencies: readable-stream "2 || 3" -through@^2.3.6, through@^2.3.8: +through@^2.3.6, through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= From 9f13e2a36c8e0fe18ec97e042615bd5f685736ca Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 17:22:57 +0300 Subject: [PATCH 424/449] Enable subtitle settings on Tizen --- src/components/apphost.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index f3e89ed29e..5470803846 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -280,11 +280,11 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet //features.push("multiserver"); features.push("screensaver"); - if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { + if (!browser.orsay && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { features.push("subtitleappearancesettings"); } - if (!browser.orsay && !browser.tizen) { + if (!browser.orsay) { features.push("subtitleburnsettings"); } From fe85c5f96c44a01e03bae7de42ebed251cbf072a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 20:31:46 +0300 Subject: [PATCH 425/449] Enable subtitle sync slider focus and keyboard dragging --- src/components/subtitlesync/subtitlesync.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 07ce2cb7ec..23d0d07a04 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -1,4 +1,4 @@ -define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, template, css) { +define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) { "use strict"; var player; @@ -10,6 +10,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles function init(instance) { var parent = document.createElement('div'); + document.body.appendChild(parent); parent.innerHTML = template; subtitleSyncSlider = parent.querySelector(".subtitleSyncSlider"); @@ -17,6 +18,14 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncCloseButton = parent.querySelector(".subtitleSync-closeButton"); subtitleSyncContainer = parent.querySelector(".subtitleSyncContainer"); + if (layoutManager.tv) { + subtitleSyncSlider.classList.add("focusable"); + // HACK: Delay to give time for registered element attach (Firefox) + setTimeout(function () { + subtitleSyncSlider.enableKeyboardDragging(); + }, 0); + } + subtitleSyncContainer.classList.add("hide"); subtitleSyncTextField.updateOffset = function(offset) { @@ -87,8 +96,6 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle("forceToHide"); }); - document.body.appendChild(parent); - instance.element = parent; } From d60bec3834e11671e0a1ba9694cabfa3dbdf6fb2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 15 Mar 2020 14:15:48 +0100 Subject: [PATCH 426/449] Improve details page informatios and selects --- src/assets/css/librarybrowser.css | 41 ++++++++++++++++++++++++ src/controllers/itemdetailpage.js | 31 ++++++++++-------- src/elements/emby-select/emby-select.css | 2 +- src/elements/emby-select/emby-select.js | 2 +- src/itemdetails.html | 26 ++++++++++----- src/strings/bg-bg.json | 6 ++-- src/strings/cs.json | 6 ++-- src/strings/da.json | 6 ++-- src/strings/de.json | 6 ++-- src/strings/el.json | 6 ++-- src/strings/en-gb.json | 6 ++-- src/strings/en-us.json | 12 +++---- src/strings/es-ar.json | 6 ++-- src/strings/es-mx.json | 6 ++-- src/strings/es.json | 8 ++--- src/strings/fi.json | 3 +- src/strings/fr.json | 8 ++--- src/strings/he.json | 8 ++--- src/strings/hu.json | 6 ++-- src/strings/it.json | 6 ++-- src/strings/ja.json | 6 ++-- src/strings/kk.json | 6 ++-- src/strings/ko.json | 6 ++-- src/strings/lt-lt.json | 6 ++-- src/strings/lv.json | 6 ++-- src/strings/nb.json | 6 ++-- src/strings/nl.json | 6 ++-- src/strings/pl.json | 6 ++-- src/strings/pt-br.json | 6 ++-- src/strings/pt-pt.json | 6 ++-- src/strings/pt.json | 6 ++-- src/strings/ro.json | 6 ++-- src/strings/ru.json | 6 ++-- src/strings/sk.json | 6 ++-- src/strings/sl-si.json | 6 ++-- src/strings/sv.json | 6 ++-- src/strings/tr.json | 8 ++--- src/strings/zh-cn.json | 6 ++-- src/strings/zh-tw.json | 6 ++-- 39 files changed, 152 insertions(+), 165 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 13265e40d1..b599ddde33 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1123,3 +1123,44 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .layout-mobile #myPreferencesMenuPage { padding-top: 3.75em; } + +.itemDetailsGroup { + margin-bottom: 1.5em; +} + +.trackSelections { + max-width: 44em; +} + +.detailsGroupItem, +.trackSelections .selectContainer { + display: flex; + max-width: 44em; + margin: 0 0 0.5em !important; +} + +.trackSelections .selectContainer { + margin: 0 0 0.15em !important; +} + +.detailsGroupItem .label, +.trackSelections .selectContainer .selectLabel { + flex-grow: 0; + flex-shrink: 0; + flex-basis: 6.25em; + margin: 0 0.6em 0 0; +} + +.trackSelections .selectContainer .selectLabel { + margin: 0 0.2em 0 0; +} + +.trackSelections .selectContainer .detailTrackSelect { + font-size: inherit; + padding: 0; +} + +.trackSelections .selectContainer .selectArrowContainer .selectArrow { + margin-top: 0; + font-size: 1.4em; +} diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 82569835ca..3d74ab4327 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -718,11 +718,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderLinks(linksElem, item) { var html = []; - if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) { - var dateCreated = datetime.parseISO8601Date(item.DateCreated); - html.push(globalize.translate("AddedOnValue", datetime.toLocaleDateString(dateCreated) + " " + datetime.getDisplayTime(dateCreated))); - } - var links = []; if (!layoutManager.tv && item.HomePageUrl) { @@ -736,7 +731,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } if (links.length) { - html.push(globalize.translate("LinksValue", links.join(", "))); + html.push(links.join(", ")); } linksElem.innerHTML = html.join(", "); @@ -1032,13 +1027,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti context: context }) + '">' + p.Name + ""; }).join(", "); - var elem = page.querySelector(".genres"); - elem.innerHTML = globalize.translate(genres.length > 1 ? "GenresValue" : "GenreValue", html); + var genresLabel = page.querySelector(".genresLabel"); + genresLabel.innerHTML = globalize.translate(genres.length > 1 ? "Genres" : "Genre"); + var genresValue = page.querySelector(".genres"); + genresValue.innerHTML = html; + + var genresGroup = page.querySelector(".genresGroup"); if (genres.length) { - elem.classList.remove("hide"); + genresGroup.classList.remove("hide"); } else { - elem.classList.add("hide"); + genresGroup.classList.add("hide"); } } @@ -1056,13 +1055,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti context: context }) + '">' + p.Name + ""; }).join(", "); - var elem = page.querySelector(".directors"); - elem.innerHTML = globalize.translate(directors.length > 1 ? "DirectorsValue" : "DirectorValue", html); + var directorsLabel = page.querySelector(".directorsLabel"); + directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? "Directors" : "Director"); + var directorsValue = page.querySelector(".directors"); + directorsValue.innerHTML = html; + + var directorsGroup = page.querySelector(".directorsGroup"); if (directors.length) { - elem.classList.remove("hide"); + directorsGroup.classList.remove("hide"); } else { - elem.classList.add("hide"); + directorsGroup.classList.add("hide"); } } diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 9f07ca3f65..32aec69c46 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -109,7 +109,7 @@ } .selectArrow { - margin-top: 0.35em; + margin-top: 1.2em; font-size: 1.7em; } diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index 02818c6630..c772c0f960 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/itemdetails.html b/src/itemdetails.html index 672d0b65a6..3a1c2748a6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -111,22 +111,32 @@
-
+
-
-
- -
+
+
+
+
+
+ +
+
+
+
+
+ + +
-
+
-
+
-
+
diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index c2b0bb6922..ca95412f36 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -101,8 +101,7 @@ "Desktop": "Работен плот", "DeviceAccessHelp": "Това се отнася само за устройства, които могат да бъдат различени и няма да попречи на достъп от мрежов четец. Филтрирането на потребителски устройства ще предотврати използването им докато не бъдат одобрени тук.", "Director": "Режисьор", - "DirectorValue": "Режисьор: {0}", - "DirectorsValue": "Режисьори: {0}", + "Directors": "Режисьори", "Disc": "Диск", "Dislike": "Нехаресване", "Display": "Показване", @@ -137,9 +136,8 @@ "FormatValue": "Формат: {0}", "Friday": "Петък", "Fullscreen": "Цял екран", - "GenreValue": "Жанр: {0}", + "Genre": "Жанр", "Genres": "Жанрове", - "GenresValue": "Жанрове: {0}", "GroupVersions": "Групиране на версиите", "GuestStar": "Гостуваща звезда", "Guide": "Справочник", diff --git a/src/strings/cs.json b/src/strings/cs.json index ac3f8dd416..810be262b2 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1276,8 +1276,7 @@ "DetectingDevices": "Hledání zařízení", "DirectPlayError": "Chyba přímého přehrávání", "DirectStreamHelp2": "Přímé streamování souboru používá velmi malý výkon bez ztráty kvality videa.", - "DirectorValue": "Režisér: {0}", - "DirectorsValue": "Režiséři: {0}", + "Directors": "Režiséři", "Disabled": "Vypnuto", "DisplayInMyMedia": "Zobrazit na domovské obrazovce", "DisplayInOtherHomeScreenSections": "Zobrazení v sekcích domovské obrazovky, jako jsou nejnovější média, a pokračování ve sledování", @@ -1297,8 +1296,7 @@ "Filters": "Filtry", "Folders": "Složky", "General": "Hlavní", - "GenreValue": "Žánr: {0}", - "GenresValue": "Žánry: {0}", + "Genre": "Žánr", "GroupBySeries": "Seskupit podle série", "HandledByProxy": "Zpracováno reverzním proxy", "HeaderAddLocalUser": "Přidat místního uživatele", diff --git a/src/strings/da.json b/src/strings/da.json index 9ddba4c8f0..74d7d21b8a 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -1166,8 +1166,7 @@ "DirectStreamHelp1": "Medie filen er kompatibel med enheden i forhold til opløsning og medie type (H.264,AC3, etc.), men er i en ikke kompatibel fil container (mkv, avi, wmv, etc). Videoen vil blive genpakket live før den streames til enheden.", "DirectStreamHelp2": "Direkte Streaming af en fil bruger meget lidt processor kraft uden nogen tab af video kvalitet.", "DirectStreaming": "Direkte streaming", - "DirectorValue": "Instruktør: {0}", - "DirectorsValue": "Instruktører: {0}", + "Directors": "Instruktører", "Disc": "Disk", "Dislike": "Kan ikke lide", "Display": "Visning", @@ -1207,8 +1206,7 @@ "Features": "Funktioner", "Filters": "Filtre", "FormatValue": "Format: {0}", - "GenreValue": "Genre: {0}", - "GenresValue": "Genrer: {0}", + "Genre": "Genre", "GroupBySeries": "Gruppér efter serie", "Guide": "Vejledning", "GuideProviderLogin": "Log Ind", diff --git a/src/strings/de.json b/src/strings/de.json index 5a449d8e55..861c57ef4b 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -175,8 +175,7 @@ "DirectStreamHelp2": "Direktes Streaming von Dateien benötigt sehr wenig Rechenleistung ohne Verlust der Videoqualität.", "DirectStreaming": "Direktes Streaming", "Director": "Regisseur", - "DirectorValue": "Regisseur: {0}", - "DirectorsValue": "Regisseure: {0}", + "Directors": "Regisseure", "Disabled": "Abgeschaltet", "Disc": "Disk", "Disconnect": "Verbindung trennen", @@ -1293,9 +1292,8 @@ "Extras": "Extras", "FolderTypeTvShows": "TV Serien", "FormatValue": "Format: {0}", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "HeaderAdmin": "Admin", "HeaderApp": "App", "HeaderGenres": "Genres", diff --git a/src/strings/el.json b/src/strings/el.json index fb02479421..8e0b77ac17 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -166,8 +166,7 @@ "DirectStreamHelp2": "Η άμεση ροή ενός αρχείου χρησιμοποιεί ελάχιστη ισχύ επεξεργασίας χωρίς απώλεια της ποιότητας του βίντεο.", "DirectStreaming": "Απευθείας Αναμετάδοση", "Director": "Σκηνοθέτης", - "DirectorValue": "Σκηνοθέτης: {0}", - "DirectorsValue": "Σκηνοθέτες: {0}", + "Directors": "Σκηνοθέτες", "Disabled": "Απενεργοποιημένο", "Disc": "Δίσκος", "Disconnect": "Αποσύνδεση", @@ -233,9 +232,8 @@ "Friday": "Παρασκευή", "Fullscreen": "ΠΛΗΡΗΣ ΟΘΟΝΗ", "General": "Γενικά", - "GenreValue": "Είδος: {0}", + "Genre": "Είδος", "Genres": "Είδη", - "GenresValue": "Είδη: {0}", "GroupBySeries": "Ομαδοποίηση κατά σειρά", "GroupVersions": "Ομαδικές εκδόσεις", "GuestStar": "Φιλική Συμμετοχή", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4f4f94f6fa..d5ed1acde5 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -223,8 +223,7 @@ "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "DirectStreaming": "Direct streaming", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", + "Directors": "Directors", "Disabled": "Disabled", "Disc": "Disc", "Disconnect": "Disconnect", @@ -299,8 +298,7 @@ "Friday": "Friday", "Fullscreen": "Full screen", "General": "General", - "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}", + "Genre": "Genre", "GroupBySeries": "Group by series", "GroupVersions": "Group versions", "GuestStar": "Guest star", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 1afa731186..924f1a188b 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -192,8 +192,7 @@ "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "DirectStreaming": "Direct streaming", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", + "Directors": "Directors", "Disabled": "Disabled", "Disc": "Disc", "Disconnect": "Disconnect", @@ -272,9 +271,8 @@ "Friday": "Friday", "Fullscreen": "Full screen", "General": "General", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "GroupBySeries": "Group by series", "GroupVersions": "Group versions", "GuestStar": "Guest star", @@ -551,7 +549,7 @@ "LabelAppNameExample": "Example: Sickbeard, Sonarr", "LabelArtists": "Artists:", "LabelArtistsHelp": "Separate multiple using ;", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAudioBitDepth": "Audio bit depth:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioChannels": "Audio channels:", @@ -841,7 +839,7 @@ "LabelSubtitleDownloaders": "Subtitle downloaders:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitlePlaybackMode": "Subtitle mode:", - "LabelSubtitles": "Subtitles:", + "LabelSubtitles": "Subtitles", "LabelSupportedMediaTypes": "Supported Media Types:", "LabelTVHomeScreen": "TV mode home screen:", "LabelTag": "Tag:", @@ -887,7 +885,7 @@ "DashboardServerName": "Server: {0}", "DashboardOperatingSystem": "Operating System: {0}", "DashboardArchitecture": "Architecture: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoBitrate": "Video bitrate:", "LabelVideoCodec": "Video codec:", "LabelVideoResolution": "Video resolution:", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 64f7a0fd7e..6c7ed6f2d4 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -312,8 +312,7 @@ "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.", "DirectStreaming": "Transmisión en directo", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directores: {0}", + "Directors": "Directores", "Disabled": "Deshabilitado", "Disc": "Disco", "Disconnect": "Desconectar", @@ -398,8 +397,7 @@ "Friday": "Viernes", "Fullscreen": "Pantalla Completa", "General": "General", - "GenreValue": "Género: {0}", - "GenresValue": "Géneros: {0}", + "Genre": "Género", "GroupBySeries": "Agrupar por Serie", "GroupVersions": "Agrupar versiones", "GuestStar": "Estrella invitada", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 2968bbcdd4..76679b698f 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -179,7 +179,7 @@ "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La Transmisión Directa de un archivo usa muy poco poder de procesamiento sin ninguna perdida en la calidad de video.", "DirectStreaming": "Transmisión Directa", - "DirectorsValue": "Directores: {0}", + "Directors": "Directores", "Disabled": "Desactivado", "Disc": "DIsco", "Disconnect": "Desconectar", @@ -255,9 +255,8 @@ "FormatValue": "Formato: {0}", "Friday": "Viernes", "Fullscreen": "Pantalla Completa", - "GenreValue": "Genero: {0}", + "Genre": "Genero", "Genres": "Géneros", - "GenresValue": "Géneros: {0}", "GroupBySeries": "Agrupar por series", "GroupVersions": "Agrupar versiones", "GuestStar": "Estrella invitada", @@ -1350,7 +1349,6 @@ "ButtonTrailer": "Trailer", "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "Director": "Director", - "DirectorValue": "Director: {0}", "Extras": "Extras", "General": "General", "HeaderAdmin": "Administrador", diff --git a/src/strings/es.json b/src/strings/es.json index 3d56ff56d8..2f3fb2769b 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1248,9 +1248,8 @@ "Descending": "Descendiente", "DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin ninguna pérdida de calidad en el vídeo.", - "Director": "Dirección de", - "DirectorValue": "Dirección de: {0}", - "DirectorsValue": "Directores: {0}", + "Director": "Director", + "Directors": "Directores", "Display": "Mostrar", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio al igual que \"últimos\" y \"continuar viendo\"", @@ -1272,8 +1271,7 @@ "Filters": "Filtros", "Folders": "Carpetas", "General": "General", - "GenreValue": "Género: {0}", - "GenresValue": "Géneros: {0}", + "Genre": "Género", "GroupBySeries": "Agrupar por series", "GuideProviderLogin": "Credenciales", "HeaderAlbumArtists": "Artistas del álbum", diff --git a/src/strings/fi.json b/src/strings/fi.json index b61724e2fe..55c5a1fbcd 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -240,8 +240,7 @@ "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", - "DirectorValue": "Ohjaaja: {0}", - "DirectorsValue": "Ohjaajat: {0}", + "Directors": "Ohjaajat", "Disabled": "Pois päältä kytkettynä", "Disc": "Levy", "Disconnect": "Katkaise yhteys", diff --git a/src/strings/fr.json b/src/strings/fr.json index fd85828c17..465eca15f1 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -175,9 +175,8 @@ "DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3, etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.", "DirectStreamHelp2": "Le streaming en direct d'un fichier utilise très peu de puissance de traitement sans perte de qualité vidéo.", "DirectStreaming": "Streaming direct", - "Director": "Réalisation", - "DirectorValue": "Réalisation : {0}", - "DirectorsValue": "Réalisation : {0}", + "Director": "Réalisateur(trice)", + "Directors": "Réalisateurs", "Disabled": "Désactivé", "Disc": "Disque", "Disconnect": "Déconnecter", @@ -1329,9 +1328,8 @@ "ButtonPause": "Pause", "Collections": "Collections", "Extras": "Extras", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "Guide": "Guide", "GuestStar": "Guest star", "Photos": "Photos", diff --git a/src/strings/he.json b/src/strings/he.json index a334f312b7..381b9bc181 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -59,7 +59,6 @@ "DeleteImageConfirmation": "האם אתה בטוח שברצונך למחוק תמונה זו?", "DeleteMedia": "מחק מדיה", "DeleteUser": "מחק משתמש", - "Director": "מנהל", "Dislike": "לא אוהב", "DoNotRecord": "אל תקליט", "Download": "הורדה", @@ -557,8 +556,8 @@ "DisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות", "DisplayInMyMedia": "הצג בעמוד הבית", "Disconnect": "התנתק", - "DirectorsValue": "במאים: {0}", - "DirectorValue": "במאי: {0}", + "Director": "במאי", + "Directors": "במאים", "Descending": "סדר יורד", "Default": "ברירת מחדל", "DeathDateValue": "נפטר: {0}", @@ -667,8 +666,7 @@ "HeaderAddScheduledTaskTrigger": "הוסף טריגר", "HeaderActivity": "פעילות", "Guide": "מדריך", - "GenresValue": "ז'אנרים: {0}", - "GenreValue": "ז'אנר: {0}", + "Genre": "ז'אנר", "General": "כללי", "Fullscreen": "מסך מלא", "FolderTypeUnset": "תוכן מעורבב", diff --git a/src/strings/hu.json b/src/strings/hu.json index 0f0b0aee68..69ce7acedd 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -87,8 +87,7 @@ "DeleteMedia": "Média törlése", "Descending": "Csökkenő", "Director": "Rendező", - "DirectorValue": "Rendező: {0}", - "DirectorsValue": "Rendezők: {0}", + "Directors": "Rendezők", "Dislike": "Nem tettszik", "Display": "Megjelenítés", "DisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése", @@ -124,7 +123,6 @@ "Fullscreen": "Teljes képernyő", "General": "Általános", "Genres": "Műfajok", - "GenresValue": "Műfajok: {0}", "HeaderActiveDevices": "Aktív eszközök", "HeaderAddToCollection": "Hozzáadás gyűjteményhez", "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", @@ -575,7 +573,7 @@ "Writer": "Író", "Yesterday": "Tegnap", "FormatValue": "Formátum: {0}", - "GenreValue": "Műfaj: {0}", + "Genre": "Műfaj", "HeaderServerSettings": "Szerver beállítások", "LabelDropImageHere": "Húzz ide egy képet, vagy kattints a böngészéshez.", "LabelDropShadow": "Árnyék:", diff --git a/src/strings/it.json b/src/strings/it.json index 4dd7b3d190..6ba6df0d12 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -165,8 +165,7 @@ "DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video.", "DirectStreaming": "Streaming Diretto", "Director": "Regista", - "DirectorValue": "Regista: {0}", - "DirectorsValue": "Registi: {0}", + "Directors": "Registi", "Disabled": "Disabilitato", "Disc": "Disco", "Disconnect": "Disconnetti", @@ -240,9 +239,8 @@ "FormatValue": "Formato: {0}", "Friday": "Venerdì", "Fullscreen": "Schermo Intero", - "GenreValue": "Genere: {0}", + "Genre": "Genere", "Genres": "Generi", - "GenresValue": "Generi: {0}", "GroupBySeries": "Raggruppa per serie", "GroupVersions": "Raggruppa versioni", "GuestStar": "Personaggio famoso", diff --git a/src/strings/ja.json b/src/strings/ja.json index 8450f01f4d..9a881bce0d 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -176,8 +176,7 @@ "DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", "DirectStreaming": "ダイレクトストリーミング", "Director": "ディレクター", - "DirectorValue": "ディレクター: {0}", - "DirectorsValue": "ディレクターズ: {0}", + "Directors": "ディレクターズ", "Disabled": "無効", "Disc": "ディスク", "Disconnect": "切断", @@ -266,9 +265,8 @@ "Friday": "金曜日", "Fullscreen": "フルスクリーン", "General": "全般", - "GenreValue": "ジャンル: {0}", + "Genre": "ジャンル", "Genres": "ジャンル", - "GenresValue": "ジャンル: {0}", "GroupBySeries": "シリーズグループ", "GroupVersions": "グループバージョン", "GuestStar": "ゲストスター", diff --git a/src/strings/kk.json b/src/strings/kk.json index a70b03a69b..665091106d 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -188,8 +188,7 @@ "DirectStreamHelp2": "Faıldy tikeleı taratý beıne sapasyn joǵaltpaı óte az esepteý qýatyn paıdalanady.", "DirectStreaming": "Tikeleı tasymaldanýda", "Director": "Rejısór", - "DirectorValue": "Rejısóri: {0}", - "DirectorsValue": "Rejısórler; {0}", + "Directors": "Rejısórler", "Disabled": "Ajyratylǵan", "Disc": "Dıski", "Disconnect": "Ajyratý", @@ -267,9 +266,8 @@ "Friday": "juma", "Fullscreen": "Tolyq ekran", "General": "Jalpy", - "GenreValue": "Janr: {0}", + "Genre": "Janr", "Genres": "Janrlar", - "GenresValue": "Janrlar: {0}", "GroupBySeries": "Telehıkaıalar boıynsha toptastyrý", "GroupVersions": "Nusqalardy toptastyrý", "GuestStar": "Shaqyrylǵan aktór", diff --git a/src/strings/ko.json b/src/strings/ko.json index c7efcc0ea5..b96642d8d1 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -880,7 +880,6 @@ "DoNotRecord": "녹화 안 함", "Disconnect": "연결 끊기", "Disabled": "비활성화됨", - "DirectorValue": "감독: {0}", "DirectPlaying": "다이렉트 재생", "DirectStreaming": "다이렉트 스트리밍", "DirectStreamHelp2": "다이렉트 스트리밍은 비디오 퀄리티의 손실없이 매우 적은 처리능력을 사용합니다.", @@ -1145,8 +1144,7 @@ "HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 '사용 안 함'으로 변경하십시오.", "GuestStar": "게스트 스타", "GroupBySeries": "시리즈별로 그룹화", - "GenresValue": "장르: {0}", - "GenreValue": "장르: {0}", + "Genre": "장르", "General": "일반", "FileReadCancelled": "파일 읽기 작업이 취소되었습니다.", "FetchingData": "추가 데이터를 가져오는 중", @@ -1284,7 +1282,7 @@ "LabelDiscNumber": "디스크 번호:", "Identify": "식별자", "HeaderMoreLikeThis": "비슷한 작품", - "DirectorsValue": "감독: {0}", + "Directors": "감독", "ButtonSplit": "나누기", "HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.", "HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index fa97fe2d8b..07d1b790af 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -624,8 +624,7 @@ "ConfirmEndPlayerSession": "Ar norite išjungti Jellyfin ant {0}?", "Descending": "Mažėjančia tvarka", "DetectingDevices": "Ieškomi įrenginiai", - "DirectorValue": "Režisierius: {0}", - "DirectorsValue": "Režisieriai: {0}", + "Directors": "Režisieriai", "Disabled": "Išjungtas", "Disc": "Diskas", "Disconnect": "Atsijungti", @@ -805,7 +804,7 @@ "ExtraLarge": "Labai didelis", "Fullscreen": "Viso ekrano režimas", "General": "Bendri", - "GenreValue": "Žanras: {0}", + "Genre": "Žanras", "ErrorPleaseSelectLineup": "Pasirinkite TV programą ir bandykite dar kartą. Jei TV programos nerodoma, patikrinkite ar teisingas jūsų vartotojo vardas, slaptažodis ir pašto kodas.", "HeaderRevisionHistory": "Versijų istorija", "HeaderShutdown": "Išjungti", @@ -924,7 +923,6 @@ "ErrorAddingXmlTvFile": "Atidarant XMLTV failą įvyko klaida. Įsitikinkite, ar failas egzistuoja, ir bandykite dar kartą.", "ErrorGettingTvLineups": "Atsisiunčiant TV programas įvyko klaida. Įsitikinkite, kad jūsų informacija teisinga, ir bandykite dar kartą.", "Features": "Medžiagos", - "GenresValue": "Žanrai: {0}", "GroupBySeries": "Grupuoti pagal serialus", "Guide": "Gidas", "GuideProviderLogin": "Prisijungti", diff --git a/src/strings/lv.json b/src/strings/lv.json index 657a2261a5..660ebcd971 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -412,9 +412,8 @@ "GuestStar": "Vieszvaigzne", "GroupVersions": "Grupēt versijas", "GroupBySeries": "Grupēt pēc sērijām", - "GenresValue": "Žanri: {0}", "Genres": "Žanri", - "GenreValue": "Žanrs: {0}", + "Genre": "Žanrs", "General": "Vispārīgs", "Fullscreen": "Pilnekrāns", "Friday": "Piektdiena", @@ -464,8 +463,7 @@ "Dislike": "Nepatīk", "Disc": "Disks", "Disabled": "Atspējots", - "DirectorsValue": "Direktori: {0}", - "DirectorValue": "Direktors: {0}", + "Directors": "Direktori", "Director": "Direktors", "DirectStreaming": "Tiešā straumēšana", "DirectPlaying": "Tiešā Atskaņošana", diff --git a/src/strings/nb.json b/src/strings/nb.json index 1b6c1529ac..373cdc8a55 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1159,7 +1159,6 @@ "MediaInfoStreamTypeVideo": "Video", "OptionDownloadBannerImage": "Banner", "CopyStreamURLSuccess": "URLen ble kopiert.", - "DirectorValue": "Regissør: {0}", "OptionThumb": "Miniatyrbilde", "LabelInternetQuality": "Internettkvalitet:", "SubtitleAppearanceSettingsDisclaimer": "Disse innstillingene vil ikke påvirke grafiske undertekster (PGS, DVD, osv.) eller ASS/SSA-teksting som inkluderer sin egen formatering.", @@ -1267,7 +1266,7 @@ "LabelMatchType": "Matchtype:", "OptionPosterCard": "Plakatkort", "Uniform": "Jevn", - "DirectorsValue": "Regissører: {0}", + "Directors": "Regissører", "Disabled": "Deaktivert", "Disc": "Plate", "Display": "Vis", @@ -1283,8 +1282,7 @@ "FetchingData": "Henter ytterligere data", "Folders": "Mapper", "FormatValue": "Format: {0}", - "GenreValue": "Sjanger: {0}", - "GenresValue": "Sjangre: {0}", + "Genre": "Sjanger", "GroupBySeries": "Grupper etter serie", "GroupVersions": "Grupper etter versjon", "Guide": "Guide", diff --git a/src/strings/nl.json b/src/strings/nl.json index 9ac84a7396..5ca394dc26 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -168,8 +168,7 @@ "DirectStreamHelp2": "Direct streamen van een bestand gebruikt weinig processor kracht zonder verlies van beeldkwaliteit.", "DirectStreaming": "Direct streamen", "Director": "Regiseur", - "DirectorValue": "Regisseur: {0}", - "DirectorsValue": "Regisseurs: {0}", + "Directors": "Regisseurs", "Disabled": "Uitgeschakeld", "Disc": "Disk", "Disconnect": "Loskoppelen", @@ -1269,9 +1268,8 @@ "Desktop": "Bureaublad", "DownloadsValue": "{0} downloads", "Filters": "Filters", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "HeaderAlbums": "Albums", "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", diff --git a/src/strings/pl.json b/src/strings/pl.json index 4097a6cc3f..71a4ba06e9 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -180,8 +180,7 @@ "DirectStreamHelp2": "Transmisja bezpośrednia pliku używa niewiele mocy przetwarzania, bez utraty jakości wideo.", "DirectStreaming": "Transmisja bezpośrednia", "Director": "Reżyser", - "DirectorValue": "Reżyser: {0}", - "DirectorsValue": "Reżyserzy: {0}", + "Directors": "Reżyserzy", "Disabled": "Nieaktywne", "Disc": "Dysk", "Disconnect": "Rozłącz", @@ -258,9 +257,8 @@ "Friday": "Piątek", "Fullscreen": "Pełny ekran", "General": "Ogólne", - "GenreValue": "Gatunek: {0}", + "Genre": "Gatunek", "Genres": "Gatunki", - "GenresValue": "Gatunki: {0}", "GroupBySeries": "Grupuj po serialach", "GroupVersions": "Wersje grup", "GuestStar": "Gość specjalny", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index dcb24a2fcc..c5b426fead 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -172,8 +172,7 @@ "DirectStreamHelp2": "O streaming direto de um arquivo usa baixo processamento sem perda de qualidade de vídeo.", "DirectStreaming": "Streaming Direto", "Director": "Diretor", - "DirectorValue": "Diretor: {0}", - "DirectorsValue": "Diretores: {0}", + "Directors": "Diretores", "Disabled": "Desativado", "Disc": "Disco", "Disconnect": "Desconectar", @@ -248,9 +247,8 @@ "Friday": "Sexta-feira", "Fullscreen": "Tela cheia", "General": "Geral", - "GenreValue": "Gênero: {0}", + "Genre": "Gênero", "Genres": "Gêneros", - "GenresValue": "Gêneros: {0}", "GroupBySeries": "Agrupar por séries", "GroupVersions": "Agrupar versões", "GuestStar": "Convidado especial", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index c8e20fd063..f80bc1f5aa 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -873,8 +873,7 @@ "GuestStar": "Estrela convidada", "GroupVersions": "Agrupar versões", "GroupBySeries": "Agrupar por série", - "GenresValue": "Géneros: {0}", - "GenreValue": "Género: {0}", + "Genre": "Género", "General": "Geral", "FormatValue": "Formato: {0}", "FolderTypeUnset": "Conteúdo Misto", @@ -1077,8 +1076,7 @@ "News": "Notícias", "Programs": "Programas", "HeaderMovies": "Filmes", - "DirectorsValue": "Realização: {0}", - "DirectorValue": "Realizador: {0}", + "Directors": "Realização", "ButtonOff": "Desligado", "ButtonAddImage": "Adicionar Imagem", "LabelOriginalTitle": "Título original:", diff --git a/src/strings/pt.json b/src/strings/pt.json index ecd6ccb079..a7cd41299d 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -906,8 +906,7 @@ "Disconnect": "Desligar", "Disc": "Disco", "Disabled": "Desactivado", - "DirectorsValue": "Realização: {0}", - "DirectorValue": "Realizador: {0}", + "Directors": "Realização", "Director": "Realizador", "DirectStreaming": "Reprodução directa", "DirectStreamHelp2": "A reprodução directa de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", @@ -1186,12 +1185,11 @@ "GuestStar": "Estrela convidada", "GroupVersions": "Agrupar versões", "GroupBySeries": "Agrupar por série", - "GenresValue": "Géneros: {0}", "ErrorAddingListingsToSchedulesDirect": "Ocorreu um erro ao adicionar o alinhamento à sua conta Schedules Direct. As contas Schedules Direct permitem apenas um número limitado de alinhamentos. Poderá ser necessário iniciar sessão na sua conta e remover outras listagens antes de prosseguir.", "Ended": "Terminado", "DefaultMetadataLangaugeDescription": "Estes são os valores por omissão que podem ser individualizados para cada uma das bibliotecas.", "Genres": "Géneros", - "GenreValue": "Género: {0}", + "Genre": "Género", "General": "Geral", "Fullscreen": "Ecrã inteiro", "Friday": "Sexta", diff --git a/src/strings/ro.json b/src/strings/ro.json index 34907d09f1..a5b938e7ee 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -382,8 +382,7 @@ "ConfirmDeletion": "Confirmă ștergerea", "DeleteDeviceConfirmation": "Sigur doriți să ștergeți acest dispozitiv? Acesta va reapărea data viitoare când un utilizator se conectează cu acesta.", "DeleteUser": "Șterge utilizator", - "DirectorValue": "Regizor: {0}", - "DirectorsValue": "Regizori: {0}", + "Directors": "Regizori", "Disabled": "Dezactivat", "Disconnect": "Deconectare", "Dislike": "Neplăcut", @@ -545,8 +544,7 @@ "EveryNDays": "La fiecare {0} zile", "Extras": "Extra", "Genres": "Genuri", - "GenreValue": "Gen: {0}", - "GenresValue": "Genuri: {0}", + "Genre": "Gen", "Guide": "Ghid", "HeaderCancelRecording": "Anulați înregistrarea", "HeaderCancelSeries": "Anulați seriile", diff --git a/src/strings/ru.json b/src/strings/ru.json index b84651ed58..4986855da5 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -181,8 +181,7 @@ "DirectStreamHelp2": "При прямой трансляции файла расходуется очень мало вычислительной мощности без потери качества видео.", "DirectStreaming": "Транслируется напрямую", "Director": "Режиссёр", - "DirectorValue": "Режиссёр: {0}", - "DirectorsValue": "Режиссёры: {0}", + "Directors": "Режиссёры", "Disabled": "Отключено", "Disc": "Диск", "Disconnect": "Разъединиться", @@ -260,9 +259,8 @@ "Friday": "пятница", "Fullscreen": "Полный экран", "General": "Общие", - "GenreValue": "Жанр: {0}", + "Genre": "Жанр", "Genres": "Жанры", - "GenresValue": "Жанры: {0}", "GroupBySeries": "Группирование по сериалам", "GroupVersions": "Сгруппировать версии", "GuestStar": "Пригл. актёр", diff --git a/src/strings/sk.json b/src/strings/sk.json index edbc343fae..2727fe01d1 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -123,8 +123,7 @@ "DetectingDevices": "Hľadám zariadenia", "DeviceAccessHelp": "Táto možnosť sa vzťahuje iba na zariadenia, ktoré môžu byť jedinečne identifikované a nezabráni prístup cez prehliadač. Filtrovaním prístupu používateľských zariadení zabraňuje užívateľom použiť nové zariadenie, pokiaľ neboli tu schválené.", "Director": "Režisér", - "DirectorValue": "Réžia: {0}", - "DirectorsValue": "Režiséri: {0}", + "Directors": "Režiséri", "Disc": "Disk", "Disconnect": "Odpojiť", "Dislike": "Nepáči sa mi to", @@ -165,9 +164,8 @@ "Friday": "Piatok", "Fullscreen": "Celá obrazovka", "General": "Všeobecné", - "GenreValue": "Žáner: {0}", + "Genre": "Žáner", "Genres": "Žánre", - "GenresValue": "Žánre: {0}", "GroupBySeries": "Zoskupiť podľa série", "GuestStar": "Hosťujúca hviezda", "Guide": "Sprievodca", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 83be4ddd92..9b74efe3a7 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -271,8 +271,7 @@ "Down": "Dol", "Dislike": "Ni mi všeč", "Disabled": "Onemogočen", - "DirectorsValue": "Režiserji: {0}", - "DirectorValue": "Režiser: {0}", + "Directors": "Režiserji", "Director": "Režiser", "DetectingDevices": "Zaznavanje naprav", "Desktop": "Namizje", @@ -462,8 +461,7 @@ "GuestStar": "Gostujoči igralec", "GroupVersions": "Združi različice", "GroupBySeries": "Združi bo serijah", - "GenresValue": "Zvrsti: {0}", - "GenreValue": "Zvrst: {0}", + "Genre": "Zvrst", "General": "Splošno", "Fullscreen": "Celoten zaslon", "Friday": "Petek", diff --git a/src/strings/sv.json b/src/strings/sv.json index 17bb11b57b..2dd5ec2dc2 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -163,8 +163,7 @@ "DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.", "DirectStreaming": "Direktströmning", "Director": "Regissör", - "DirectorValue": "Regi: {0}", - "DirectorsValue": "Regi: {0}", + "Directors": "Regi", "Disabled": "Inaktiverad", "Disc": "Skiva", "Disconnect": "Koppla bort", @@ -235,7 +234,6 @@ "Friday": "Fredag", "Fullscreen": "Fullskärm", "Genres": "Genrer", - "GenresValue": "Genrer: {0}", "GroupBySeries": "Gruppera efter serie", "GroupVersions": "Gruppera versioner", "GuestStar": "Gästmedverkande", @@ -1273,7 +1271,7 @@ "HeaderApp": "Applikation", "HeaderAdmin": "Administratör", "Guide": "Guide", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "General": "Allmänt", "FastForward": "Snabbspola", "Extras": "Extramaterial", diff --git a/src/strings/tr.json b/src/strings/tr.json index e1ac24da6d..7d2afd756f 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -314,9 +314,8 @@ "ColorPrimaries": "Renk primerleri", "DirectStreamHelp2": "Doğrudan Akış, video kalitesinde herhangi bir kayıp olmadan çok az işlem gücü kullanır.", "DirectStreaming": "Doğrudan akış", - "Director": "yönetmen", - "DirectorValue": "Yönetmen: {0}", - "DirectorsValue": "Yöneticiler: {0}", + "Director": "Yönetmen", + "Directors": "Yöneticiler", "Disabled": "Deaktif", "DisplayModeHelp": "Jellyfin’i çalıştırdığınız ekran türünü seçin.", "DoNotRecord": "Kaydetme", @@ -521,8 +520,7 @@ "GuestStar": "Konuk sanatçı", "GroupVersions": "Grup versiyonları", "GroupBySeries": "Seriye göre gruplandır", - "GenresValue": "Türler: {0}", - "GenreValue": "Tür: {0}", + "Genre": "Tür", "General": "Genel", "Fullscreen": "Tam ekran", "FormatValue": "Biçim: {0}", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index a37f839039..271be38b5f 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1310,16 +1310,14 @@ "BoxRear": "盒子(背面)", "ChannelNumber": "频道号码", "ColorSpace": "色彩空间", - "DirectorValue": "导演:{0}", - "DirectorsValue": "导演:{0}", + "Directors": "导演", "ColorTransfer": "色彩转换", "ConfirmDeleteItem": "这将同时在磁盘和媒体库中删除这个项目。确认删除?", "ConfirmDeleteItems": "这将同时在磁盘和媒体库中删除这些项目。确认删除?", "ConfirmEndPlayerSession": "确认要关闭位于{0}的Jellyfin吗?", "ValueSeconds": "{0}秒", "Features": "功能", - "GenreValue": "风格:{0}", - "GenresValue": "风格:{0}", + "Genre": "风格", "Guide": "指南", "HeaderCancelRecording": "取消录制", "HeaderFavoriteMovies": "最爱的电影", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index ffc0228af2..59ab7fcdda 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -453,8 +453,7 @@ "DirectStreamHelp2": "直接串流檔案會占用非常少的處理效能並且影片的品質不會有任何損失。", "DirectStreaming": "直接串流", "Director": "導演", - "DirectorValue": "導演: {0}", - "DirectorsValue": "導演: {0}", + "Directors": "導演", "Disabled": "已停用", "Disc": "光碟", "Disconnect": "斷開連結", @@ -539,9 +538,8 @@ "FreeAppsFeatureDescription": "享受免費的Jellyfin應用程式。", "Fullscreen": "全螢幕", "General": "一般", - "GenreValue": "類型 : {0}", + "Genre": "類型", "Genres": "風格", - "GenresValue": "類型 : {0}", "GroupBySeries": "按系列分組", "GroupVersions": "按版本分組", "GuestStar": "特邀明星", From 4643c83ab14637fea8c4df0ed5dd251e3f451ee1 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 20:48:09 +0100 Subject: [PATCH 427/449] Update some details page translations for the new layout --- src/strings/bg-bg.json | 4 ++-- src/strings/cs.json | 6 +++--- src/strings/da.json | 6 +++--- src/strings/de.json | 6 +++--- src/strings/el.json | 6 +++--- src/strings/en-gb.json | 6 +++--- src/strings/es-mx.json | 6 +++--- src/strings/es.json | 6 +++--- src/strings/fr.json | 6 +++--- src/strings/hu.json | 6 +++--- src/strings/it.json | 6 +++--- src/strings/ja.json | 6 +++--- src/strings/kk.json | 6 +++--- src/strings/ko.json | 6 +++--- src/strings/lt-lt.json | 2 +- src/strings/lv.json | 6 +++--- src/strings/nb.json | 6 +++--- src/strings/nl.json | 6 +++--- src/strings/pl.json | 6 +++--- src/strings/pt-br.json | 6 +++--- src/strings/pt-pt.json | 6 +++--- src/strings/pt.json | 2 +- src/strings/ro.json | 6 +++--- src/strings/ru.json | 6 +++--- src/strings/sk.json | 6 +++--- src/strings/sl-si.json | 4 ++-- src/strings/sv.json | 6 +++--- src/strings/tr.json | 2 +- src/strings/zh-cn.json | 6 +++--- src/strings/zh-tw.json | 6 +++--- 30 files changed, 82 insertions(+), 82 deletions(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index ca95412f36..e6aaa30fb1 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -433,7 +433,7 @@ "LabelStatus": "Състояние:", "LabelStopWhenPossible": "Спирай, когато е възможно:", "LabelSubtitlePlaybackMode": "Режим на субтитрите:", - "LabelSubtitles": "Субтитри:", + "LabelSubtitles": "Субтитри", "LabelSupportedMediaTypes": "Поддържани типове медия:", "LabelTag": "Етикет:", "LabelTextColor": "Цвят на текста:", @@ -810,7 +810,7 @@ "MediaInfoLayout": "Подредба", "MusicVideo": "Музикален клип", "MediaInfoStreamTypeVideo": "Видео", - "LabelVideo": "Видео:", + "LabelVideo": "Видео", "HeaderVideoTypes": "Видове видеа", "HeaderVideoType": "Вид на видеото", "EnableExternalVideoPlayers": "Външни възпроизводители", diff --git a/src/strings/cs.json b/src/strings/cs.json index 810be262b2..bf74c4ad2d 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -461,7 +461,7 @@ "LabelArtist": "Umělec", "LabelArtists": "Umělci:", "LabelArtistsHelp": "Odděl pomocí ;", - "LabelAudio": "Zvuk:", + "LabelAudio": "Zvuk", "LabelAudioLanguagePreference": "Preferovaný jazyk zvuku:", "LabelBindToLocalNetworkAddress": "Vázat na místní síťovou adresu:", "LabelBindToLocalNetworkAddressHelp": "Volitelné. Přepsat lokální IP adresu vazanou na http server. Pokud je ponecháno prázdné, server se sváže ke všem dostupným adresám (aplikace bude dostupná na všech síťových zařízení, které server nabízí). Změna této hodnoty vyžaduje restartování Jellyfin Serveru.", @@ -709,7 +709,7 @@ "LabelStopping": "Zastavování", "LabelSubtitleFormatHelp": "Příklad: srt", "LabelSubtitlePlaybackMode": "Mód titulků:", - "LabelSubtitles": "Titulky:", + "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTagline": "Slogan:", "LabelTextBackgroundColor": "Barva pozadí textu:", @@ -1393,7 +1393,7 @@ "LabelUrl": "URL:", "LabelUserAgent": "User agent:", "LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení přehrávání serveru.", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoCodec": "Video kodek:", "LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.", "LetterButtonAbbreviation": "A", diff --git a/src/strings/da.json b/src/strings/da.json index 74d7d21b8a..22ddc52200 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -1268,7 +1268,7 @@ "Label3DFormat": "3D format:", "LabelAlbum": "Album:", "LabelArtist": "Kunstner", - "LabelAudio": "Lyd:", + "LabelAudio": "Lyd", "LabelBitrateMbps": "Bitrate (Mbps):", "LabelBlockContentWithTags": "Blokér filer med mærkerne:", "LabelBurnSubtitles": "Brænd undertekster:", @@ -1313,7 +1313,7 @@ "LabelSortOrder": "Sorteringsorden:", "LabelSoundEffects": "Lydeffekter:", "LabelStatus": "Status:", - "LabelSubtitles": "Undertekster:", + "LabelSubtitles": "Undertekster", "LabelSyncNoTargetsHelp": "Det ser ud til at du ikke har nogen apps der understøtter offline hentning.", "LabelTVHomeScreen": "TV modus hjemmeskærm:", "LabelTag": "Mærke:", @@ -1327,7 +1327,7 @@ "LabelUrl": "Link:", "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoCodec": "Video codec:", "LabelWindowBackgroundColor": "Tekst baggrundsfarve:", "LabelXDlnaCap": "X-DLNA begrænsning:", diff --git a/src/strings/de.json b/src/strings/de.json index 861c57ef4b..97cb1f959e 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -758,7 +758,7 @@ "LabelSubtitleDownloaders": "Untertitel Downloader:", "LabelSubtitleFormatHelp": "Beispiel: srt", "LabelSubtitlePlaybackMode": "Untertitelmodus:", - "LabelSubtitles": "Untertitel:", + "LabelSubtitles": "Untertitel", "LabelSupportedMediaTypes": "Unterstüzte Medientypen:", "LabelTVHomeScreen": "TV-Mode Startseite:", "LabelTextBackgroundColor": "Hintergrundfarbe des Textes:", @@ -1305,7 +1305,7 @@ "Home": "Startseite", "Horizontal": "Horizontal", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelCache": "Cache:", "LabelFormat": "Format:", "LabelH264Crf": "H264 Encodierungs-CRF:", @@ -1324,7 +1324,7 @@ "LabelTypeText": "Text", "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen.", "LinksValue": "Links: {0}", "MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.", diff --git a/src/strings/el.json b/src/strings/el.json index 8e0b77ac17..3856480fd0 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -450,7 +450,7 @@ "LabelAppNameExample": "Παράδειγμα: Sickbeard, NzbDrone", "LabelArtists": "Καλλιτέχνες:", "LabelArtistsHelp": "Ξεχωρίστε πολλαπλά χρησιμοποιώντας;", - "LabelAudio": "Ήχος:", + "LabelAudio": "Ήχος", "LabelAudioLanguagePreference": "Προτιμώμενη γλώσσα ήχου:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Αυτόματη ανανέωση μεταδεδομένων από το internet:", "LabelBirthDate": "Ημερομηνία Γενεθλίων:", @@ -664,7 +664,7 @@ "LabelStopWhenPossible": "Διακοπή όταν είναι δυνατόν:", "LabelSubtitleFormatHelp": "Παράδειγμα: srt", "LabelSubtitlePlaybackMode": "Λειτουργία υποτίτλων:", - "LabelSubtitles": "Υπότιτλοι:", + "LabelSubtitles": "Υπότιτλοι", "LabelSupportedMediaTypes": "Υποστηριζόμενοι τύποι μέσων:", "LabelTVHomeScreen": "Αρχική οθόνη λειτουργίας τηλεόρασης:", "LabelTag": "Ετικέτα:", @@ -694,7 +694,7 @@ "LabelVersion": "Έκδοση:", "LabelVersionInstalled": "{0} εγκαταστήθηκε", "LabelVersionNumber": "Έκδοση {0}", - "LabelVideo": "Βίντεο:", + "LabelVideo": "Βίντεο", "LabelXDlnaCapHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", "LabelYear": "Έτος:", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index d5ed1acde5..757ea55266 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -806,7 +806,7 @@ "LabelTag": "Tag:", "LabelTVHomeScreen": "TV mode home screen:", "LabelSupportedMediaTypes": "Supported Media Types:", - "LabelSubtitles": "Subtitles:", + "LabelSubtitles": "Subtitles", "LabelSubtitlePlaybackMode": "Subtitle mode:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitleDownloaders": "Subtitle downloaders:", @@ -1167,7 +1167,7 @@ "LabelAudioChannels": "Audio channels:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioBitDepth": "Audio bit depth:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelArtistsHelp": "Separate multiple using ;", "LabelArtists": "Artists:", "LabelAppName": "App name", @@ -1336,7 +1336,7 @@ "MediaInfoSoftware": "Software", "ValueOneSeries": "1 series", "MediaInfoBitrate": "Bitrate", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelPrevious": "Previous", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart to extrathumbs field", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 76679b698f..1aff47675c 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -781,7 +781,7 @@ "LabelSubtitleDownloaders": "Recolectores de Subtitulos:", "LabelSubtitleFormatHelp": "Ejemplo: srt", "LabelSubtitlePlaybackMode": "Modo de subtítulo:", - "LabelSubtitles": "Subtítulos:", + "LabelSubtitles": "Subtítulos", "LabelSupportedMediaTypes": "Tipos de Medios Soportados:", "LabelTVHomeScreen": "Modo de pantalla de TV:", "LabelTag": "Etiqueta:", @@ -1365,7 +1365,7 @@ "HeaderRestartingServer": "Reiniciando servidor", "HeaderVideos": "Videos", "Horizontal": "Horizontal", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAuthProvider": "Proveedor de autenticación:", "LabelDynamicExternalId": "{0} Id:", "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", @@ -1378,7 +1378,7 @@ "DashboardServerName": "Servidor: {0}", "DashboardOperatingSystem": "Sistema operativo: {0}", "DashboardArchitecture": "Arquitectura: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelWeb": "Web: ", "LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor", "LaunchWebAppOnStartupHelp": "Abre el cliente web en su navegador web predeterminado cuando se inicia el servidor. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.", diff --git a/src/strings/es.json b/src/strings/es.json index 2f3fb2769b..6666964c49 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1288,7 +1288,7 @@ "HeaderVideoType": "Tipo de vídeo", "Home": "Inicio", "Horizontal": "Horizontal", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelBurnSubtitles": "Incrustar subtítulos:", "LabelDashboardTheme": "Tema para la interfaz del servidor:", "LabelDateTimeLocale": "Fecha y hora local:", @@ -1306,10 +1306,10 @@ "LabelSortBy": "Ordenar por:", "LabelSortOrder": "Orden:", "LabelSoundEffects": "Efectos de sonido:", - "LabelSubtitles": "Subtítulos:", + "LabelSubtitles": "Subtítulos", "LabelTVHomeScreen": "Modo televisión en pantalla de inicio:", "LabelVersion": "Versión:", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "LabelXDlnaCap": "X-DNLA cap:", "LabelXDlnaDoc": "X-DLNA doc:", "LearnHowYouCanContribute": "Descubre cómo puedes contribuir.", diff --git a/src/strings/fr.json b/src/strings/fr.json index 465eca15f1..aab47271c0 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -776,7 +776,7 @@ "LabelSubtitleDownloaders": "Outils de téléchargement de sous-titres :", "LabelSubtitleFormatHelp": "Exemple : srt", "LabelSubtitlePlaybackMode": "Mode des sous-titres :", - "LabelSubtitles": "Sous-titres :", + "LabelSubtitles": "Sous-titres", "LabelSupportedMediaTypes": "Types de médias supportés :", "LabelTVHomeScreen": "Écran d'accueil du mode TV :", "LabelTag": "Étiquette :", @@ -813,7 +813,7 @@ "LabelValue": "Valeur :", "LabelVersion": "Version :", "LabelVersionInstalled": "{0} installé(s)", - "LabelVideo": "Vidéo :", + "LabelVideo": "Vidéo", "LabelXDlnaCap": "Cap X-DLNA :", "LabelXDlnaCapHelp": "Détermine le contenu de l'élément X_DLNACAP dans l'espace de nom urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Doc X-DLNA :", @@ -1339,7 +1339,7 @@ "HeaderTuners": "Égaliseur", "Horizontal": "Horizontal", "Images": "Images", - "LabelAudio": "Audio :", + "LabelAudio": "Audio", "LabelVersionNumber": "Version {0}", "LeaveBlankToNotSetAPassword": "Laissez vide pour ne pas définir de mot de passe.", "Logo": "Logo", diff --git a/src/strings/hu.json b/src/strings/hu.json index 69ce7acedd..f8dfecb6c0 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -231,7 +231,7 @@ "LabelAllowServerAutoRestart": "Automatikus újraindítás engedélyezése a szervernek a frissítések telepítéséhez", "LabelAllowServerAutoRestartHelp": "A szerver csak akkor indul újra ha nincs felhasználói tevékenység.", "LabelArtists": "Előadók:", - "LabelAudio": "Audió:", + "LabelAudio": "Audió", "LabelAudioLanguagePreference": "Audió nyelvének beállítása:", "LabelBirthYear": "Születési év:", "LabelCachePath": "Gyorsítótár útvonal:", @@ -319,7 +319,7 @@ "LabelStopping": "Megállítás", "LabelSubtitleFormatHelp": "Például: srt", "LabelSubtitlePlaybackMode": "Felirat mód:", - "LabelSubtitles": "Feliratok:", + "LabelSubtitles": "Feliratok", "LabelTagline": "Címke:", "LabelTheme": "Kinézet:", "LabelTime": "Idő:", @@ -336,7 +336,7 @@ "LabelUsername": "Felhasználónév:", "LabelVersionInstalled": "{0} telepítve", "LabelVersionNumber": "Verzió {0}", - "LabelVideo": "Videó:", + "LabelVideo": "Videó", "LabelYear": "Év:", "LabelYourFirstName": "Keresztneved:", "LabelYoureDone": "Készen vagy!", diff --git a/src/strings/it.json b/src/strings/it.json index 6ba6df0d12..cf9e06910e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -749,7 +749,7 @@ "LabelSubtitleDownloaders": "Downloader sottotitoli:", "LabelSubtitleFormatHelp": "Esempio: srt", "LabelSubtitlePlaybackMode": "Modalità Sottotitolo:", - "LabelSubtitles": "Sottotitoli:", + "LabelSubtitles": "Sottotitoli", "LabelSupportedMediaTypes": "Tipi di media supportati:", "LabelTVHomeScreen": "Schermata iniziale della modalità TV:", "LabelTagline": "Slogan:", @@ -1317,7 +1317,7 @@ "HeaderRestartingServer": "Riavvio Server", "Home": "Home", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelCache": "Cache:", "ButtonAddImage": "Aggiungi Immagine", "CopyStreamURL": "Copia Indirizzo dello Stream", @@ -1398,7 +1398,7 @@ "LabelTranscodingProgress": "Progresso di trascodifica:", "DashboardVersionNumber": "Versione: {0}", "DashboardServerName": "Server: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Architettura: {0}", "LabelWeb": "Web:", "LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server", diff --git a/src/strings/ja.json b/src/strings/ja.json index 9a881bce0d..4a15d798c3 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -558,7 +558,7 @@ "LabelOriginalAspectRatio": "元のアスペクト比:", "LabelPrevious": "前へ", "LabelServerName": "サーバー名:", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "サポートされているメディアタイプ:", "LabelTVHomeScreen": "TVモードホームスクリーン:", "LabelTextColor": "文字色:", @@ -858,7 +858,7 @@ "LabelAllowedRemoteAddresses": "リモートIPアドレスフィルター:", "LabelAppNameExample": "例: スケートボード、ソナー", "LabelArtists": "アーティスト:", - "LabelAudio": "音声:", + "LabelAudio": "音声", "LabelAudioBitDepth": "音声ビット深度:", "LabelAudioBitrate": "音声ビットレート:", "LabelAudioChannels": "音声チャンネル:", @@ -963,7 +963,7 @@ "DashboardVersionNumber": "バージョン: {0}", "DashboardServerName": "サーバー: {0}", "DashboardArchitecture": "アーキテクチャ: {0}", - "LabelVideo": "映像:", + "LabelVideo": "映像", "LabelVideoBitrate": "映像ビットレート:", "LabelYourFirstName": "名前:", "Share": "共有", diff --git a/src/strings/kk.json b/src/strings/kk.json index 665091106d..852e408a3b 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -536,7 +536,7 @@ "LabelAppNameExample": "Mysaly: Sickbeard, Sonarr", "LabelArtists": "Oryndaýshylar:", "LabelArtistsHelp": "Birneshýin mynaýmen bólińiz ;", - "LabelAudio": "Dybys:", + "LabelAudio": "Dybys", "LabelAudioLanguagePreference": "Dybys tiliniń teńshelimi:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Metaderekterdi Internetten avtomatty jańartý:", "LabelBindToLocalNetworkAddress": "Jergilikti jeli mekenjaıyna baılastyrý:", @@ -807,7 +807,7 @@ "LabelSubtitleDownloaders": "Sýbtıtrler júkteýshileri:", "LabelSubtitleFormatHelp": "Mysal: srt", "LabelSubtitlePlaybackMode": "Sýbtıtr rejimi:", - "LabelSubtitles": "Sýbtıtrler:", + "LabelSubtitles": "Sýbtıtrler", "LabelSupportedMediaTypes": "Qoldaýdaǵy tasyǵyshderekter túrleri:", "LabelTVHomeScreen": "TD rejimindegi basqy ekran:", "LabelTag": "Teg:", @@ -849,7 +849,7 @@ "LabelVersion": "Nusqa:", "LabelVersionInstalled": "{0} ornatylǵan", "LabelVersionNumber": "Nýsqasy: {0}", - "LabelVideo": "Beıne:", + "LabelVideo": "Beıne", "LabelXDlnaCap": "X-DLNA sıpattary:", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.", "LabelXDlnaDoc": "X-DLNA tásimi:", diff --git a/src/strings/ko.json b/src/strings/ko.json index b96642d8d1..833f8ccb10 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1025,7 +1025,7 @@ "LabelWeb": "웹:", "LabelVideoCodec": "비디오 코덱:", "LabelVideoBitrate": "비디오 비트레이트:", - "LabelVideo": "비디오:", + "LabelVideo": "비디오", "DashboardArchitecture": "아키텍처: {0}", "DashboardOperatingSystem": "운영체제: {0}", "DashboardServerName": "서버: {0}", @@ -1042,7 +1042,7 @@ "LabelTheme": "테마:", "LabelTextSize": "글자 크기:", "LabelTextColor": "글자 색:", - "LabelSubtitles": "자막:", + "LabelSubtitles": "자막", "LabelSubtitleFormatHelp": "예시: srt", "LabelSubtitleDownloaders": "자막 다운로더:", "LabelStopping": "중지", @@ -1082,7 +1082,7 @@ "LabelAudioCodec": "오디오 코덱:", "LabelAudioChannels": "오디오 채널:", "LabelAudioBitrate": "오디오 비트레이트:", - "LabelAudio": "오디오:", + "LabelAudio": "오디오", "Items": "항목", "Kids": "어린이", "Home": "홈", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 07d1b790af..c87628316c 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -784,7 +784,7 @@ "HeaderLoginFailure": "Prisijungimo klaida", "Hide": "Paslėpti", "LabelAll": "Visi", - "LabelAudio": "Garsas:", + "LabelAudio": "Garsas", "LabelCancelled": "Atšaukta", "LabelCertificatePassword": "Sertifikato slaptažodis:", "LabelCertificatePasswordHelp": "Jei sertifikatui reikalingas slaptažodis, jį įveskite čia.", diff --git a/src/strings/lv.json b/src/strings/lv.json index 660ebcd971..8c19b23ad7 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -52,7 +52,7 @@ "LabelVideoResolution": "Video izšķirtspēja:", "LabelVideoCodec": "Video kodeks:", "LabelVideoBitrate": "Video bitu-ātrums:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arhitektūra: {0}", "DashboardOperatingSystem": "Operētājsistēma: {0}", "DashboardServerName": "Serveris: {0}", @@ -85,7 +85,7 @@ "LabelTag": "Tags:", "LabelTVHomeScreen": "TV režīma mājas ekrāns:", "LabelSupportedMediaTypes": "Atbalstītie Multivides Veidi:", - "LabelSubtitles": "Subtitri:", + "LabelSubtitles": "Subtitri", "LabelSubtitlePlaybackMode": "Subtitru veids:", "LabelSubtitleFormatHelp": "Piemērs: srt", "LabelSubtitleDownloaders": "Subtitru lejupielādētāji:", @@ -222,7 +222,7 @@ "LabelBirthYear": "Dzimšanas gads:", "LabelBirthDate": "Dzimšanas datums:", "LabelAudioLanguagePreference": "Ieteicamā audio valoda:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelArtistsHelp": "Atdali vairākus izmantojot ;", "LabelArtists": "Izpildītājs:", "LabelAppNameExample": "Piemēram: Sickbeard, Sonarr", diff --git a/src/strings/nb.json b/src/strings/nb.json index 373cdc8a55..3d863d17e0 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1179,7 +1179,7 @@ "MediaInfoSampleRate": "Samplingsfrekvens", "MediaInfoStreamTypeData": "Data", "Option3D": "3D", - "LabelVideo": "Video:", + "LabelVideo": "Video", "OptionAlbum": "Album", "OptionAlbumArtist": "Albumartist", "Filters": "Filtre", @@ -1313,7 +1313,7 @@ "Horizontal": "Horisontal", "HttpsRequiresCert": "For å bruke sikker tilkobling må du legge inn et klarert SSL-sertifikat, for eksempel fra Let's Encrypt. Du må enten legge inn et sertifikat, eller deaktivere sikker tilkobling.", "LabelAlbumArtPN": "Albumomslag PN:", - "LabelAudio": "Lyd:", + "LabelAudio": "Lyd", "LabelAuthProvider": "Autentiserings-metode:", "LabelBitrate": "Bithastighet:", "LabelBurnSubtitles": "Brenn inn undertekst:", @@ -1342,7 +1342,7 @@ "LabelSpecialSeasonsDisplayName": "Visningsnavn for spesialsesong:", "LabelStatus": "Status:", "LabelSubtitleDownloaders": "Kilder for undertekst:", - "LabelSubtitles": "Undertekster:", + "LabelSubtitles": "Undertekster", "LabelTVHomeScreen": "Hjemskjerm for TV-modus:", "LabelTag": "Tagg:", "LabelTextBackgroundColor": "Tekstbagrunnsfarge:", diff --git a/src/strings/nl.json b/src/strings/nl.json index 5ca394dc26..2acfe83414 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -744,7 +744,7 @@ "LabelSubtitleDownloaders": "Ondertiteldownloaders:", "LabelSubtitleFormatHelp": "Voorbeeld: srt", "LabelSubtitlePlaybackMode": "Ondertitel mode:", - "LabelSubtitles": "Ondertitels:", + "LabelSubtitles": "Ondertitels", "LabelSupportedMediaTypes": "Ondersteunde Media Types:", "LabelTVHomeScreen": "TV mode begin scherm", "LabelTextBackgroundColor": "Tekst achtergrond kleur:", @@ -1310,7 +1310,7 @@ "ItemCount": "{0} items", "Items": "Items", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAuthProvider": "Authenticatie Aanbieder:", "LabelCache": "Cache:", "LabelDidlMode": "DIDL mode:", @@ -1429,7 +1429,7 @@ "LabelXDlnaCap": "X-DLNA cap:", "DashboardVersionNumber": "Versie: {0}", "DashboardArchitecture": "Architectuur: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "MediaInfoStreamTypeAudio": "Audio", "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeSubtitle": "Ondertiteling", diff --git a/src/strings/pl.json b/src/strings/pl.json index 71a4ba06e9..32e9a97980 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -523,7 +523,7 @@ "LabelAppNameExample": "Przykład: Sickbeard, Sonarr", "LabelArtists": "Wykonawcy:", "LabelArtistsHelp": "Oddzielaj używając ;", - "LabelAudio": "Dźwięk:", + "LabelAudio": "Dźwięk", "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:", "LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:", @@ -789,7 +789,7 @@ "LabelSubtitleDownloaders": "Dostawcy napisów:", "LabelSubtitleFormatHelp": "Przykład: srt", "LabelSubtitlePlaybackMode": "Tryb napisów:", - "LabelSubtitles": "Napisy:", + "LabelSubtitles": "Napisy", "LabelSupportedMediaTypes": "Obsługiwane typy mediów:", "LabelTVHomeScreen": "Ekran startowy trybu telewizyjnego:", "LabelTag": "Znacznik:", @@ -827,7 +827,7 @@ "LabelVersion": "Wersja:", "LabelVersionInstalled": "Zainstalowano {0}", "LabelVersionNumber": "Wersja {0}", - "LabelVideo": "Wideo:", + "LabelVideo": "Wideo", "LabelXDlnaCapHelp": "Określa zawartość elementu X_DLNACAP w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Określa zawartość elementu X_DLNADOC w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", "LabelYear": "Rok:", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index c5b426fead..f1bffad58c 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -506,7 +506,7 @@ "LabelAppNameExample": "Exemplo: Sickbeard, Sonarr", "LabelArtists": "Artistas:", "LabelArtistsHelp": "Separa vários usando ;", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelAudioLanguagePreference": "Idioma preferido de áudio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar automaticamente os metadados da internet:", "LabelBindToLocalNetworkAddress": "Vincular a um endereço de rede local:", @@ -768,7 +768,7 @@ "LabelSubtitleDownloaders": "Downloaders de legendas:", "LabelSubtitleFormatHelp": "Exemplo: srt", "LabelSubtitlePlaybackMode": "Modo de legenda:", - "LabelSubtitles": "Legendas:", + "LabelSubtitles": "Legendas", "LabelSupportedMediaTypes": "Tipos de Mídia Suportados:", "LabelTVHomeScreen": "Tela inicial do modo TV:", "LabelTagline": "Slogan:", @@ -804,7 +804,7 @@ "LabelVersion": "Versão:", "LabelVersionInstalled": "{0} instalado", "LabelVersionNumber": "Versão {0}", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.", "LabelYear": "Ano:", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index f80bc1f5aa..d4a81580f2 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -955,7 +955,7 @@ "LabelBindToLocalNetworkAddress": "Endereço local para colocar o servidor à escuta:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar metadados automaticamente a partir da Internet:", "LabelAuthProvider": "Provedor de autenticação:", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelAllowedRemoteAddressesMode": "Tipo de filtro de IP remoto:", "LabelAllowedRemoteAddresses": "Filtro de IP remoto:", "LabelAllowHWTranscoding": "Permitir transcodificação por hardware", @@ -1306,7 +1306,7 @@ "LabelWeb": "Web:", "LabelVideoCodec": "Codec de vídeo:", "LabelVideoBitrate": "Taxa de bits de vídeo:", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "DashboardArchitecture": "Arquitetura: {0}", "DashboardOperatingSystem": "Sistema Operativo: {0}", "DashboardServerName": "Servidor: {0}", @@ -1320,7 +1320,7 @@ "LabelTextColor": "Côr do texto:", "LabelTextBackgroundColor": "Côr de fundo do texto:", "LabelTag": "Etiqueta:", - "LabelSubtitles": "Legendas:", + "LabelSubtitles": "Legendas", "LabelSportsCategories": "Categorias de Desporto:", "FetchingData": "A transferir informação adicional", "List": "lista", diff --git a/src/strings/pt.json b/src/strings/pt.json index a7cd41299d..57787e93eb 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -450,7 +450,7 @@ "LabelAudioCodec": "Codec de áudio:", "LabelAudioChannels": "Canais de áudio:", "LabelAudioBitrate": "Taxa de bits de áudio:", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelArtistsHelp": "Separe múltiplos com ;", "LabelArtists": "Artistas:", "LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone", diff --git a/src/strings/ro.json b/src/strings/ro.json index a5b938e7ee..427ccff485 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -653,7 +653,7 @@ "LabelTag": "Etichetă:", "LabelTVHomeScreen": "Ecran de pornire în modul TV:", "LabelSupportedMediaTypes": "Tipuri media suportate:", - "LabelSubtitles": "Subtitrări:", + "LabelSubtitles": "Subtitrări", "LabelSubtitlePlaybackMode": "Mod subtitrare:", "LabelSubtitleFormatHelp": "Exemplu: srt", "LabelSubtitleDownloaders": "Descărcare subtitrări:", @@ -903,7 +903,7 @@ "LabelAudioChannels": "Canale audio:", "LabelAudioBitrate": "Rata de biți audio:", "LabelAudioBitDepth": "Adâncimea bitului audio:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAppNameExample": "Exemplu: Sickbeard, Sonarr", "LabelAppName": "Nume app", "LabelAllowedRemoteAddressesMode": "Modul de filtrare a adresei IP de la distanță:", @@ -1146,7 +1146,7 @@ "LabelWeb": "Web:", "LabelVideoCodec": "Codec video:", "LabelVideoBitrate": "Rata de biți a video-ului:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arhitectură: {0}", "DashboardOperatingSystem": "Sistem de operare: {0}", "DashboardServerName": "Server: {0}", diff --git a/src/strings/ru.json b/src/strings/ru.json index 4986855da5..d50bcaccaa 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -525,7 +525,7 @@ "LabelAppNameExample": "Пример: Sickbeard, Sonarr", "LabelArtists": "Исполнители:", "LabelArtistsHelp": "Для разделения используйте точку с запятой ;", - "LabelAudio": "Аудио:", + "LabelAudio": "Аудио", "LabelAudioLanguagePreference": "Выбор языка аудио:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Автоматически обновлять метаданные из Интернета:", "LabelBindToLocalNetworkAddress": "Привязка к адресу в локальной сети:", @@ -792,7 +792,7 @@ "LabelSubtitleDownloaders": "Загрузчики субтитров:", "LabelSubtitleFormatHelp": "Пример: srt", "LabelSubtitlePlaybackMode": "Режим субтитров:", - "LabelSubtitles": "Субтитры:", + "LabelSubtitles": "Субтитры", "LabelSupportedMediaTypes": "Поддерживаемые типы медиаданных:", "LabelTVHomeScreen": "Главная страница ТВ-режима:", "LabelTag": "Тег:", @@ -830,7 +830,7 @@ "LabelVersion": "Версия:", "LabelVersionInstalled": "Установлена: {0}", "LabelVersionNumber": "Версия {0}", - "LabelVideo": "Видео:", + "LabelVideo": "Видео", "LabelXDlnaCap": "Свойства X-Dlna:", "LabelXDlnaCapHelp": "Определяется содержание из элемента X_DLNACAP во пространстве имён urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Схема X-Dlna:", diff --git a/src/strings/sk.json b/src/strings/sk.json index 2727fe01d1..e0bebec52f 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -471,7 +471,7 @@ "LabelStartWhenPossible": "Spustiť akonáhle je možné:", "LabelStatus": "Stav:", "LabelSubtitleFormatHelp": "Príklad: srt", - "LabelSubtitles": "Titulky:", + "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTextBackgroundColor": "Farba pozadia textu:", "LabelTextColor": "Farba textu:", @@ -960,7 +960,7 @@ "HeaderVideoType": "Typ videa", "HeaderVideoTypes": "Typy videí", "LabelAirsBeforeSeason": "Vysielané pred sériou:", - "LabelAudio": "Zvuk:", + "LabelAudio": "Zvuk", "LabelBlockContentWithTags": "Blokovať položky s tagmi:", "LabelDisplayMode": "Režim zobrazenia:", "LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sérií, v ktorej boli odvysielané", @@ -1327,7 +1327,7 @@ "LabelXDlnaCap": "X-DLNA cap:", "LabelVideoCodec": "Video kodek:", "LabelVideoBitrate": "Dátový tok videa:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVaapiDeviceHelp": "Toto je vykreslovací node, ktorý sa používa na hardvérovú akceleráciu.", "LabelVaapiDevice": "VA API zariadenie:", "LabelUserRemoteClientBitrateLimitHelp": "Prepíše východzie globálne hodnoty nastavené v nastavení prehrávania servera.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 9b74efe3a7..a692edbd3f 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -594,7 +594,7 @@ "LabelAppName": "Ime aplikacije", "LabelAppNameExample": "Primer: Sickbeard, Sonarr", "LabelArtistsHelp": "Loči več z ;", - "LabelAudio": "Zvok:", + "LabelAudio": "Zvok", "LabelAudioBitrate": "Bitna hitrost zvoka:", "LabelAudioChannels": "Kanali zvoka:", "LabelAudioCodec": "Zvočni kodek:", @@ -1185,7 +1185,7 @@ "LabelTextBackgroundColor": "Barva ozadja besedila:", "LabelTag": "Oznaka:", "LabelSupportedMediaTypes": "Podprti tipi predstavnosti:", - "LabelSubtitles": "Podnapisi:", + "LabelSubtitles": "Podnapisi", "LabelSubtitlePlaybackMode": "Način podnapisov:", "LabelSubtitleFormatHelp": "Primer: srt", "LabelSubtitleDownloaders": "Pridobivanje podnapisov:", diff --git a/src/strings/sv.json b/src/strings/sv.json index 2dd5ec2dc2..595780f070 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -480,7 +480,7 @@ "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med vid flera ;", - "LabelAudio": "Ljud:", + "LabelAudio": "Ljud", "LabelAudioLanguagePreference": "Önskat ljudspråk:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Uppdatera metadata automatiskt ifrån internet:", "LabelBindToLocalNetworkAddress": "Knyt till lokal nätverksadress:", @@ -740,7 +740,7 @@ "LabelSubtitleDownloaders": "Undertextskällor:", "LabelSubtitleFormatHelp": "Exempel: srt", "LabelSubtitlePlaybackMode": "Undertextläge:", - "LabelSubtitles": "Undertexter:", + "LabelSubtitles": "Undertexter", "LabelSupportedMediaTypes": "Mediaformat som stöds:", "LabelTVHomeScreen": "Hemskärm i TV-läge:", "LabelTag": "Etikett:", @@ -1451,7 +1451,7 @@ "LabelVideoResolution": "Video upplösning:", "LabelVideoCodec": "Video codec:", "LabelVideoBitrate": "Video bitrate:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arkitektur: {0}", "DashboardOperatingSystem": "Operativsystem: {0}", "DashboardServerName": "Server: {0}", diff --git a/src/strings/tr.json b/src/strings/tr.json index 7d2afd756f..5588a3091e 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -649,7 +649,7 @@ "LabelAudioSampleRate": "Ses örnekleme hızı:", "LabelAudioCodec": "Ses kodeği:", "LabelAudioChannels": "Ses kanalları:", - "LabelAudio": "Ses:", + "LabelAudio": "Ses", "LabelAppName": "Uygulama adı", "LabelAllowHWTranscoding": "Donanım kod dönüştürmesine izin ver", "LabelAll": "Tümü", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 271be38b5f..1a3aa1e4de 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -753,7 +753,7 @@ "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支持的媒体类型:", "LabelTVHomeScreen": "TV 模式主屏幕:", "LabelTag": "标签:", @@ -1327,7 +1327,7 @@ "HeaderFavoriteVideos": "最爱的视频", "HeaderVideoType": "视频类型", "Items": "项目", - "LabelAudio": "音频:", + "LabelAudio": "音频", "LabelServerName": "服务器名称:", "LabelTranscodePath": "转码路径:", "LabelTranscodes": "转码:", @@ -1363,7 +1363,7 @@ "LabelUserLoginAttemptsBeforeLockout": "用户被封禁前可尝试的次数:", "DashboardVersionNumber": "版本:{0}", "DashboardServerName": "服务器:{0}", - "LabelVideo": "视频:", + "LabelVideo": "视频", "LabelWeb": "网站:", "LeaveBlankToNotSetAPassword": "您可以将此字段留空以设置空密码。", "LinksValue": "链接:{0}", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 59ab7fcdda..718cb4d572 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -915,7 +915,7 @@ "LabelAppNameExample": "例如: Sickbeard, Sonarr", "LabelArtists": "藝人:", "LabelArtistsHelp": "分開多重使用 ;", - "LabelAudio": "音頻:", + "LabelAudio": "音頻", "LabelAuthProvider": "認證提供者:", "LabelAutomaticallyRefreshInternetMetadataEvery": "從網路自動刷新數據:", "LabelBindToLocalNetworkAddress": "聯結本地網絡地址:", @@ -1044,7 +1044,7 @@ "LabelExtractChaptersDuringLibraryScan": "於媒體庫掃描時擷取章節圖片", "LabelHttpsPort": "本地 HTTPS 端口:", "LabelFailed": "失敗", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支援的媒體類型:", "LabelTextBackgroundColor": "文字背景顏色:", "LabelTextColor": "文字顏色:", @@ -1060,7 +1060,7 @@ "LabelTypeText": "文本", "LabelUsername": "使用者名稱:", "DashboardOperatingSystem": "作業系統:{0}", - "LabelVideo": "影片:", + "LabelVideo": "影片", "LabelVideoCodec": "影片編碼:", "LabelYear": "年:", "LatestFromLibrary": "最新 {0}", From 37ebb772e8443c602f61d7f8746b98aa008789e5 Mon Sep 17 00:00:00 2001 From: Fernando Date: Thu, 26 Mar 2020 19:25:34 +0000 Subject: [PATCH 428/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 3d56ff56d8..f99c06410e 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -5,7 +5,7 @@ "AddToCollection": "Añadir a la colección", "AddToPlaylist": "Añadir a la lista de reproducción", "AddedOnValue": "Añadido {0}", - "AdditionalNotificationServices": "Visite el catálogo de complementos para instalar servicios de notificación adicionales.", + "AdditionalNotificationServices": "Visite el catálogo de extensiones para instalar servicios de notificación adicionales.", "Albums": "Álbumes", "Alerts": "Alertas", "All": "Todo", @@ -40,7 +40,7 @@ "Box": "Caja", "BoxRear": "Caja (trasera)", "Browse": "Explorar", - "BrowsePluginCatalogMessage": "Navegar el catalogo de complementos para ver los complementos disponibles.", + "BrowsePluginCatalogMessage": "Explore el catálogo de extensiones para ver las extensiones disponibles.", "ButtonAdd": "Añadir", "ButtonAddMediaLibrary": "Añadir biblioteca de medios", "ButtonAddScheduledTaskTrigger": "Agregar Activador", @@ -818,16 +818,16 @@ "MessageItemSaved": "Elemento grabado.", "MessageItemsAdded": "Ítems añadidos.", "MessageLeaveEmptyToInherit": "Dejar en blanco para heredar la configuración del elemento padre, o el valor global por defecto.", - "MessageNoAvailablePlugins": "No hay complementos disponibles.", + "MessageNoAvailablePlugins": "No hay extensiones disponibles.", "MessageNoMovieSuggestionsAvailable": "No hay sugerencias de películas disponibles. Comience ver y calificar sus películas y vuelva para ver las recomendaciones.", - "MessageNoPluginsInstalled": "No tiene complementos instalados.", + "MessageNoPluginsInstalled": "No hay extensiones instaladas.", "MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.", "MessageNothingHere": "Nada aquí.", "MessagePasswordResetForUsers": "Se ha restablecido las contraseñas a los siguientes usuarios. Ahora pueden iniciar sesión con los códigos PIN que usaron para el restablecimiento.", "MessagePleaseEnsureInternetMetadata": "Asegúrate de que la descarga de etiquetas desde internet está activada.", "MessagePleaseWait": "Por favor, espere.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.", - "MessagePluginInstallDisclaimer": "Los complementos creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", + "MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", "MessageReenableUser": "Mira abajo para reactivarlo", "MessageSettingsSaved": "Ajustes guardados.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Se eliminarán las siguientes ubicaciones de medios de tu biblioteca:", @@ -1138,7 +1138,7 @@ "TabMovies": "Películas", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", - "TabMyPlugins": "Mis complementos", + "TabMyPlugins": "Mis extensiones", "TabNetworks": "Cadenas", "TabNfoSettings": "Ajustes de NFO", "TabNotifications": "Notificaciones", @@ -1418,7 +1418,7 @@ "TV": "Televisión", "TabInfo": "Info", "TabLogs": "Registros", - "TabPlugins": "Complementos", + "TabPlugins": "Extensiones", "TabSeries": "Series", "TabTrailers": "Tráilers", "TagsValue": "Etiquetas: {0}", From 499f9835b48fa27847f368dd0c6f5737363a7644 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 21:04:37 +0100 Subject: [PATCH 429/449] Remove Last Played label on details page --- src/assets/css/librarybrowser.css | 3 ++- src/controllers/itemdetailpage.js | 13 ------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b599ddde33..4e3f36921d 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1140,11 +1140,12 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .trackSelections .selectContainer { - margin: 0 0 0.15em !important; + margin: 0 0 0.3em !important; } .detailsGroupItem .label, .trackSelections .selectContainer .selectLabel { + cursor: default; flex-grow: 0; flex-shrink: 0; flex-basis: 6.25em; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 3d74ab4327..23a672751c 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -703,18 +703,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderUserInfo(page, item) { - var lastPlayedElement = page.querySelector(".itemLastPlayed"); - - if (item.UserData && item.UserData.LastPlayedDate) { - lastPlayedElement.classList.remove("hide"); - var datePlayed = datetime.parseISO8601Date(item.UserData.LastPlayedDate); - lastPlayedElement.innerHTML = globalize.translate("DatePlayed") + ": " + datetime.toLocaleDateString(datePlayed) + " " + datetime.getDisplayTime(datePlayed); - } else { - lastPlayedElement.classList.add("hide"); - } - } - function renderLinks(linksElem, item) { var html = []; @@ -1123,7 +1111,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti reloadUserDataButtons(page, item); renderLinks(externalLinksElem, item); - renderUserInfo(page, item); renderTags(page, item); renderSeriesAirTime(page, item, isStatic); } From af3176af7c31e50bb94c6a12337b6966b8ff1a6a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 21:13:26 +0100 Subject: [PATCH 430/449] Fix oversized track selector on details page --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 4e3f36921d..965adec943 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1159,6 +1159,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .trackSelections .selectContainer .detailTrackSelect { font-size: inherit; padding: 0; + overflow: hidden; } .trackSelections .selectContainer .selectArrowContainer .selectArrow { From f3b5c804a323a72803824e673936f3b72447b90b Mon Sep 17 00:00:00 2001 From: Cameron Cordes Date: Thu, 19 Mar 2020 21:20:47 -0400 Subject: [PATCH 431/449] Migrate some easy components to ES6 --- package.json | 22 +- src/components/filedownloader.js | 28 +- src/components/filesystem.js | 29 +-- src/components/input/keyboardnavigation.js | 290 ++++++++++----------- src/components/sanitizefilename.js | 154 ++++++----- 5 files changed, 256 insertions(+), 267 deletions(-) diff --git a/package.json b/package.json index 2de78b821c..9bf666a74e 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,23 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": ["@babel/preset-env"], - "overrides": [{ - "test": ["src/components/cardbuilder/cardBuilder.js"], - "plugins": ["@babel/plugin-transform-modules-amd"] - }] + "presets": [ + "@babel/preset-env" + ], + "overrides": [ + { + "test": [ + "src/components/cardbuilder/cardBuilder.js", + "src/components/filedownloader.js", + "src/components/filesystem.js", + "src/components/input/keyboardnavigation.js", + "src/components/sanatizefilename.js" + ], + "plugins": [ + "@babel/plugin-transform-modules-amd" + ] + } + ] }, "browserslist": [ "last 2 Firefox versions", diff --git a/src/components/filedownloader.js b/src/components/filedownloader.js index 08b6176a02..d64e48967c 100644 --- a/src/components/filedownloader.js +++ b/src/components/filedownloader.js @@ -1,18 +1,14 @@ -define(['multi-download'], function (multiDownload) { - 'use strict'; +import multiDownload from "multi-download" - return { - download: function (items) { +export function download(items) { - if (window.NativeShell) { - items.map(function (item) { - window.NativeShell.downloadFile(item.url); - }); - } else { - multiDownload(items.map(function (item) { - return item.url; - })); - } - } - }; -}); + if (window.NativeShell) { + items.map(function (item) { + window.NativeShell.downloadFile(item.url); + }); + } else { + multiDownload(items.map(function (item) { + return item.url; + })); + } +} diff --git a/src/components/filesystem.js b/src/components/filesystem.js index aac697415e..3c14020d1a 100644 --- a/src/components/filesystem.js +++ b/src/components/filesystem.js @@ -1,18 +1,13 @@ -define([], function () { - 'use strict'; +export function fileExists(path) { + if (window.NativeShell && window.NativeShell.FileSystem) { + return window.NativeShell.FileSystem.fileExists(path); + } + return Promise.reject(); +} - return { - fileExists: function (path) { - if (window.NativeShell && window.NativeShell.FileSystem) { - return window.NativeShell.FileSystem.fileExists(path); - } - return Promise.reject(); - }, - directoryExists: function (path) { - if (window.NativeShell && window.NativeShell.FileSystem) { - return window.NativeShell.FileSystem.directoryExists(path); - } - return Promise.reject(); - } - }; -}); +export function directoryExists(path) { + if (window.NativeShell && window.NativeShell.FileSystem) { + return window.NativeShell.FileSystem.directoryExists(path); + } + return Promise.reject(); +} diff --git a/src/components/input/keyboardnavigation.js b/src/components/input/keyboardnavigation.js index 0359ee7430..bdcb733179 100644 --- a/src/components/input/keyboardnavigation.js +++ b/src/components/input/keyboardnavigation.js @@ -1,165 +1,157 @@ -define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { - "use strict"; +import inputManager from "inputManager"; +import layoutManager from "layoutManager"; - /** - * Key name mapping. - */ - // Add more to support old browsers - var KeyNames = { - 13: "Enter", - 19: "Pause", - 27: "Escape", - 32: "Space", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", - // MediaRewind (Tizen/WebOS) - 412: "MediaRewind", - // MediaStop (Tizen/WebOS) - 413: "MediaStop", - // MediaPlay (Tizen/WebOS) - 415: "MediaPlay", - // MediaFastForward (Tizen/WebOS) - 417: "MediaFastForward", - // Back (WebOS) - 461: "Back", - // Back (Tizen) - 10009: "Back", - // MediaTrackPrevious (Tizen) - 10232: "MediaTrackPrevious", - // MediaTrackNext (Tizen) - 10233: "MediaTrackNext", - // MediaPlayPause (Tizen) - 10252: "MediaPlayPause" - }; +/** + * Key name mapping. + */ +const KeyNames = { + 13: "Enter", + 19: "Pause", + 27: "Escape", + 32: "Space", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + // MediaRewind (Tizen/WebOS) + 412: "MediaRewind", + // MediaStop (Tizen/WebOS) + 413: "MediaStop", + // MediaPlay (Tizen/WebOS) + 415: "MediaPlay", + // MediaFastForward (Tizen/WebOS) + 417: "MediaFastForward", + // Back (WebOS) + 461: "Back", + // Back (Tizen) + 10009: "Back", + // MediaTrackPrevious (Tizen) + 10232: "MediaTrackPrevious", + // MediaTrackNext (Tizen) + 10233: "MediaTrackNext", + // MediaPlayPause (Tizen) + 10252: "MediaPlayPause" +}; - /** - * Keys used for keyboard navigation. - */ - var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; +/** + * Keys used for keyboard navigation. + */ +const NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; - var hasFieldKey = false; - try { - hasFieldKey = "key" in new KeyboardEvent("keydown"); - } catch (e) { - console.error("error checking 'key' field"); +let hasFieldKey = false; +try { + hasFieldKey = "key" in new KeyboardEvent("keydown"); +} catch (e) { + console.error("error checking 'key' field"); +} + +if (!hasFieldKey) { + // Add [a..z] + for (let i = 65; i <= 90; i++) { + KeyNames[i] = String.fromCharCode(i).toLowerCase(); } +} - if (!hasFieldKey) { - // Add [a..z] - for (var i = 65; i <= 90; i++) { - KeyNames[i] = String.fromCharCode(i).toLowerCase(); +/** + * Returns key name from event. + * + * @param {KeyboardEvent} event keyboard event + * @return {string} key name + */ +export function getKeyName(event) { + return KeyNames[event.keyCode] || event.key; +} + +/** + * Returns _true_ if key is used for navigation. + * + * @param {string} key name + * @return {boolean} _true_ if key is used for navigation + */ +export function isNavigationKey(key) { + return NavigationKeys.indexOf(key) != -1; +} + +export function enable() { + document.addEventListener("keydown", function (e) { + const key = getKeyName(e); + + // Ignore navigation keys for non-TV + if (!layoutManager.tv && isNavigationKey(key)) { + return; } - } - /** - * Returns key name from event. - * - * @param {KeyboardEvent} keyboard event - * @return {string} key name - */ - function getKeyName(event) { - return KeyNames[event.keyCode] || event.key; - } + let capture = true; - /** - * Returns _true_ if key is used for navigation. - * - * @param {string} key name - * @return {boolean} _true_ if key is used for navigation - */ - function isNavigationKey(key) { - return NavigationKeys.indexOf(key) != -1; - } + switch (key) { + case "ArrowLeft": + inputManager.handle("left"); + break; + case "ArrowUp": + inputManager.handle("up"); + break; + case "ArrowRight": + inputManager.handle("right"); + break; + case "ArrowDown": + inputManager.handle("down"); + break; - function enable() { - document.addEventListener("keydown", function (e) { - var key = getKeyName(e); + case "Back": + inputManager.handle("back"); + break; - // Ignore navigation keys for non-TV - if (!layoutManager.tv && isNavigationKey(key)) { - return; - } - - var capture = true; - - switch (key) { - case "ArrowLeft": - inputManager.handle("left"); - break; - case "ArrowUp": - inputManager.handle("up"); - break; - case "ArrowRight": - inputManager.handle("right"); - break; - case "ArrowDown": - inputManager.handle("down"); - break; - - case "Back": + case "Escape": + if (layoutManager.tv) { inputManager.handle("back"); - break; - - case "Escape": - if (layoutManager.tv) { - inputManager.handle("back"); - } else { - capture = false; - } - break; - - case "MediaPlay": - inputManager.handle("play"); - break; - case "Pause": - inputManager.handle("pause"); - break; - case "MediaPlayPause": - inputManager.handle("playpause"); - break; - case "MediaRewind": - inputManager.handle("rewind"); - break; - case "MediaFastForward": - inputManager.handle("fastforward"); - break; - case "MediaStop": - inputManager.handle("stop"); - break; - case "MediaTrackPrevious": - inputManager.handle("previoustrack"); - break; - case "MediaTrackNext": - inputManager.handle("nexttrack"); - break; - - default: + } else { capture = false; - } + } + break; - if (capture) { - console.debug("disabling default event handling"); - e.preventDefault(); - } - }); - } + case "MediaPlay": + inputManager.handle("play"); + break; + case "Pause": + inputManager.handle("pause"); + break; + case "MediaPlayPause": + inputManager.handle("playpause"); + break; + case "MediaRewind": + inputManager.handle("rewind"); + break; + case "MediaFastForward": + inputManager.handle("fastforward"); + break; + case "MediaStop": + inputManager.handle("stop"); + break; + case "MediaTrackPrevious": + inputManager.handle("previoustrack"); + break; + case "MediaTrackNext": + inputManager.handle("nexttrack"); + break; - // Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. - // Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler - function attachGamepadScript(e) { - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - window.removeEventListener("gamepadconnected", attachGamepadScript); - require(["components/input/gamepadtokey"]); - } + default: + capture = false; + } - // No need to check for gamepads manually at load time, the eventhandler will be fired for that - window.addEventListener("gamepadconnected", attachGamepadScript); + if (capture) { + console.debug("disabling default event handling"); + e.preventDefault(); + } + }); +} - return { - enable: enable, - getKeyName: getKeyName, - isNavigationKey: isNavigationKey - }; -}); +// Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. +// Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler +function attachGamepadScript(e) { + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + window.removeEventListener("gamepadconnected", attachGamepadScript); + require(["components/input/gamepadtokey"]); +} + +// No need to check for gamepads manually at load time, the eventhandler will be fired for that +window.addEventListener("gamepadconnected", attachGamepadScript); diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index f53ce613f6..adfb852e1f 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -1,96 +1,90 @@ // From https://github.com/parshap/node-sanitize-filename -define([], function () { - 'use strict'; +const illegalRe = /[\/\?<>\\:\*\|":]/g; +// eslint-disable-next-line no-control-regex +const controlRe = /[\x00-\x1f\x80-\x9f]/g; +const reservedRe = /^\.+$/; +const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; +const windowsTrailingRe = /[\. ]+$/; - var illegalRe = /[\/\?<>\\:\*\|":]/g; - // eslint-disable-next-line no-control-regex - var controlRe = /[\x00-\x1f\x80-\x9f]/g; - var reservedRe = /^\.+$/; - var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; - var windowsTrailingRe = /[\. ]+$/; +function isHighSurrogate(codePoint) { + return codePoint >= 0xd800 && codePoint <= 0xdbff; +} - function isHighSurrogate(codePoint) { - return codePoint >= 0xd800 && codePoint <= 0xdbff; +function isLowSurrogate(codePoint) { + return codePoint >= 0xdc00 && codePoint <= 0xdfff; +} + +function getByteLength(string) { + if (typeof string !== "string") { + throw new Error("Input must be string"); } - function isLowSurrogate(codePoint) { - return codePoint >= 0xdc00 && codePoint <= 0xdfff; - } - - function getByteLength(string) { - if (typeof string !== "string") { - throw new Error("Input must be string"); - } - - var charLength = string.length; - var byteLength = 0; - var codePoint = null; - var prevCodePoint = null; - for (var i = 0; i < charLength; i++) { - codePoint = string.charCodeAt(i); - // handle 4-byte non-BMP chars - // low surrogate - if (isLowSurrogate(codePoint)) { - // when parsing previous hi-surrogate, 3 is added to byteLength - if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { - byteLength += 1; - } else { - byteLength += 3; - } - } else if (codePoint <= 0x7f) { + const charLength = string.length; + let byteLength = 0; + let codePoint = null; + let prevCodePoint = null; + for (let i = 0; i < charLength; i++) { + codePoint = string.charCodeAt(i); + // handle 4-byte non-BMP chars + // low surrogate + if (isLowSurrogate(codePoint)) { + // when parsing previous hi-surrogate, 3 is added to byteLength + if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { byteLength += 1; - } else if (codePoint >= 0x80 && codePoint <= 0x7ff) { - byteLength += 2; - } else if (codePoint >= 0x800 && codePoint <= 0xffff) { + } else { byteLength += 3; } - prevCodePoint = codePoint; + } else if (codePoint <= 0x7f) { + byteLength += 1; + } else if (codePoint >= 0x80 && codePoint <= 0x7ff) { + byteLength += 2; + } else if (codePoint >= 0x800 && codePoint <= 0xffff) { + byteLength += 3; } - - return byteLength; + prevCodePoint = codePoint; } - function truncate(string, byteLength) { - if (typeof string !== "string") { - throw new Error("Input must be string"); - } + return byteLength; +} - var charLength = string.length; - var curByteLength = 0; - var codePoint; - var segment; - - for (var i = 0; i < charLength; i += 1) { - codePoint = string.charCodeAt(i); - segment = string[i]; - - if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) { - i += 1; - segment += string[i]; - } - - curByteLength += getByteLength(segment); - - if (curByteLength === byteLength) { - return string.slice(0, i + 1); - } else if (curByteLength > byteLength) { - return string.slice(0, i - segment.length + 1); - } - } - - return string; +function truncate(string, byteLength) { + if (typeof string !== "string") { + throw new Error("Input must be string"); } - return { - sanitize: function (input, replacement) { - var sanitized = input - .replace(illegalRe, replacement) - .replace(controlRe, replacement) - .replace(reservedRe, replacement) - .replace(windowsReservedRe, replacement) - .replace(windowsTrailingRe, replacement); - return truncate(sanitized, 255); + const charLength = string.length; + let curByteLength = 0; + let codePoint; + let segment; + + for (let i = 0; i < charLength; i += 1) { + codePoint = string.charCodeAt(i); + segment = string[i]; + + if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) { + i += 1; + segment += string[i]; } - }; -}); + + curByteLength += getByteLength(segment); + + if (curByteLength === byteLength) { + return string.slice(0, i + 1); + } else if (curByteLength > byteLength) { + return string.slice(0, i - segment.length + 1); + } + } + + return string; +} + +export function sanitize(input, replacement) { + const sanitized = input + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); + return truncate(sanitized, 255); +} From 9f18abb938b1207034f6a27525d43fa127ee9bce Mon Sep 17 00:00:00 2001 From: Cameron Cordes Date: Thu, 26 Mar 2020 18:53:10 -0400 Subject: [PATCH 432/449] Fix package.json formatting --- package.json | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9bf666a74e..81dd250ab5 100644 --- a/package.json +++ b/package.json @@ -70,23 +70,17 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": [ - "@babel/preset-env" - ], - "overrides": [ - { + "presets": ["@babel/preset-env"], + "overrides": [{ "test": [ - "src/components/cardbuilder/cardBuilder.js", - "src/components/filedownloader.js", - "src/components/filesystem.js", - "src/components/input/keyboardnavigation.js", - "src/components/sanatizefilename.js" + "src/components/cardbuilder/cardBuilder.js", + "src/components/filedownloader.js", + "src/components/filesystem.js", + "src/components/input/keyboardnavigation.js", + "src/components/sanatizefilename.js" ], - "plugins": [ - "@babel/plugin-transform-modules-amd" - ] - } - ] + "plugins": ["@babel/plugin-transform-modules-amd"] + }] }, "browserslist": [ "last 2 Firefox versions", From b9dbad421a4214ee70586959b9a4f76451c9e0de Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:13:50 +0000 Subject: [PATCH 433/449] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 116 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 112 insertions(+), 4 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index ecd6ccb079..8457cb9f8b 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -340,7 +340,7 @@ "LabelHttpsPort": "Número da porta HTTPS local:", "LabelHomeScreenSectionValue": "Secção {0} do Painel Principal:", "LabelHomeNetworkQuality": "Qualidade da rede interna:", - "LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.", + "LabelHardwareAccelerationTypeHelp": "A aceleração de hardware requer configuração adicional.", "LabelHardwareAccelerationType": "Aceleração por hardware:", "LabelEncoderPreset": "Predefinição para codificação H264:", "LabelH264Crf": "CRF para codificação H264:", @@ -377,7 +377,7 @@ "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)", "LabelEnableBlastAliveMessagesHelp": "Activar esta opção se o servidor não for convenientemente detectado por outros dispositivos UPnP na rede.", "LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento", - "LabelEnableAutomaticPortMapHelp": "Tenta correponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de routers.", + "LabelEnableAutomaticPortMapHelp": "Tenta corresponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de roteadores. As alterações não serão até reinicialização do servidor.", "LabelEnableAutomaticPortMap": "Activar a correspondência automática de portas", "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Outros pode não ser capazes de reproduzir com esta opção activada.", "LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL", @@ -1092,7 +1092,7 @@ "AuthProviderHelp": "Seleccione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.", "Audio": "Áudio", "AttributeNew": "Novo", - "AspectRatio": "Formato", + "AspectRatio": "Proporção da tela", "Ascending": "Crescente", "Art": "Capa", "AroundTime": "Por volta das {0}", @@ -1218,5 +1218,113 @@ "LabelUserLoginAttemptsBeforeLockout": "Número de tentativas de login falhadas antes do bloqueio do utilizador:", "LabelTrackNumber": "Número da faixa:", "LabelSportsCategories": "Categorias de Desportos:", - "Yesterday": "Ontem" + "Yesterday": "Ontem", + "MusicVideo": "Vídeo de música", + "MusicLibraryHelp": "Reveja o {0} guia de nomes de músicas {1}.", + "MusicArtist": "Artista musical", + "MusicAlbum": "Álbum de música", + "MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.", + "MoveRight": "Mover para a direita", + "MoveLeft": "Mova à esquerda", + "MoreMediaInfo": "Informações sobre mídia", + "MoreFromValue": "Mais de {0}", + "MediaInfoRefFrames": "Quadros de referência", + "MediaInfoContainer": "Container", + "MediaInfoAnamorphic": "Anamorphic", + "LabelVideoResolution": "Resolução do vídeo:", + "LabelTypeMetadataDownloaders": "{0} metadata downloaders:", + "LabelTranscodePath": "Caminho da transcodificação:", + "OnlyImageFormats": "Somente formatos de imagem (VOBSUB, PGS, SUB, etc)", + "OnlyForcedSubtitlesHelp": "Apenas as legendas marcadas como forçadas serão carregadas.", + "OnlyForcedSubtitles": "Apenas legendas forçadas", + "Off": "Desligar", + "NumLocationsValue": "{0} pastas", + "Normal": "Normal", + "None": "Nenhum", + "NoSubtitlesHelp": "As legendas não serão carregadas por padrão. Eles ainda podem ser ativados manualmente durante a reprodução.", + "NoSubtitles": "Sem legendas", + "NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.", + "NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.", + "NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}", + "No": "Não", + "Mobile": "Celular", + "MetadataSettingChangeHelp": "A alteração das configurações de metadados afetará o novo conteúdo adicionado a partir de agora. Para atualizar o conteúdo existente, abra a tela de detalhes e clique no botão Atualizar ou execute atualizações em massa usando o gerenciador de metadados.", + "MetadataManager": "Gestor de metadados", + "Metadata": "Metadados", + "MessageYouHaveVersionInstalled": "Você possui a versão {0} atualmente instalada.", + "MessageUnsetContentHelp": "O conteúdo será exibido como pastas simples. Para obter melhores resultados, use o gerenciador de metadados para definir os tipos de conteúdo das subpastas.", + "MessageSettingsSaved": "Configurações salvas.", + "MessagePleaseWait": "Por favor, espere. Isso pode levar um minuto.", + "MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.", + "MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.", + "MessageNoCollectionsAvailable": "As coleções permitem que você desfrute de agrupamentos personalizados de filmes, séries e álbuns. Clique no botão + para começar a criar coleções.", + "MessageConfirmAppExit": "Você quer sair?", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Língua", + "MediaInfoInterlaced": "Entrelaçada", + "MediaInfoFramerate": "Taxa de quadros", + "MediaInfoForced": "Forçar", + "MediaInfoExternal": "Externo", + "MediaInfoDefault": "Padrão", + "MediaInfoCodecTag": "Codec tag", + "MediaInfoCodec": "Codec", + "MediaInfoBitrate": "Taxa de bits", + "MediaInfoBitDepth": "Profundidade de bits", + "MediaInfoAspectRatio": "Proporção da tela", + "ManageRecording": "Gerenciar gravações", + "Logo": "Logo", + "List": "Lista", + "LinksValue": "Links: {0}", + "Like": "Gostei", + "LeaveBlankToNotSetAPassword": "Você pode deixar esse campo em branco para definir nenhuma senha.", + "LearnHowYouCanContribute": "Aprenda como você pode contribuir.", + "LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.", + "LaunchWebAppOnStartup": "Inicie a interface da web ao iniciar o servidor", + "Large": "Amplo", + "LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.", + "LabelffmpegPathHelp": "O caminho para o arquivo do aplicativo ffmpeg ou pasta que contém o ffmpeg.", + "LabelffmpegPath": "FFmpeg caminho:", + "LabelYear": "Ano:", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelWeb": "Web:", + "LabelVideoCodec": "Vídeo: codec:", + "LabelVideoBitrate": "Vídeo taxa de bits:", + "LabelVideo": "Vídeo:", + "DashboardArchitecture": "Arquitetura: {0}", + "DashboardServerName": "Servidor: {0}", + "DashboardVersionNumber": "Versão: {0}", + "LabelVersion": "Versão:", + "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", + "LabelVaapiDevice": "VA API Dispositivo:", + "LabelUserAgent": "Agente de usuário", + "LabelTranscodes": "Transcodificação:", + "LabelTranscodingFramerate": "Transcodificação frame por segundo:", + "LabelTranscodingProgress": "Progresso da transcodificação:", + "LabelTitle": "Título:", + "LabelTheme": "Tema:", + "LabelTextColor": "Cor do texto:", + "LabelTextBackgroundColor": "Cor do plano de fundo do texto:", + "LabelTag": "Tag:", + "LabelTVHomeScreen": "Tela inicial do modo TV:", + "LabelSubtitles": "Legendas:", + "LabelSubtitleDownloaders": "Downloaders de legendas:", + "LabelStreamType": "Tipo de fluxo:", + "LabelSpecialSeasonsDisplayName": "Nome de exibição da temporada especial:", + "LabelSoundEffects": "Efeitos sonoros:", + "LabelSortTitle": "Classificar título:", + "LabelSortOrder": "Ordem da Ordenação", + "LabelSortBy": "Ordenar por:", + "LabelSkin": "Skin:", + "EnableFastImageFadeInHelp": "Habilite uma animação mais rápida para imagens carregadas", + "EnableFastImageFadeIn": "Efeito de imagem fade-in rápido", + "LabelRemoteClientBitrateLimitHelp": "Um limite opcional de taxa de bits por fluxo para todos os dispositivos fora da rede. Isso é útil para impedir que os dispositivos solicitem uma taxa de bits mais alta do que a sua conexão à Internet pode suportar. Isso pode resultar no aumento da carga da CPU no servidor para transcodificar vídeos em tempo real para uma taxa de bits mais baixa.", + "LabelPlayerDimensions": "Dimensões do reprodutor:", + "LabelParentNumber": "Número pai:", + "LabelMetadataSavers": "Economizadores de metadados:", + "LabelDroppedFrames": "Quadros caídos:", + "LabelCorruptedFrames": "Quadros corrompidos:", + "LabelAudioBitDepth": "Profundidade do bit de áudio:", + "ClientSettings": "Configurações do Cliente", + "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução." } From a02fe56a871b3ad43df44e5bb6c74e8d5ce5c085 Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:34:22 +0000 Subject: [PATCH 434/449] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index 8457cb9f8b..a66f98916b 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1326,5 +1326,6 @@ "LabelCorruptedFrames": "Quadros corrompidos:", "LabelAudioBitDepth": "Profundidade do bit de áudio:", "ClientSettings": "Configurações do Cliente", - "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução." + "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução.", + "MySubtitles": "Minhas legendas" } From 63a05df3a8dd9a192819b5fede49d51e500bff64 Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:34:29 +0000 Subject: [PATCH 435/449] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index a66f98916b..e9a0f2dd05 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1327,5 +1327,6 @@ "LabelAudioBitDepth": "Profundidade do bit de áudio:", "ClientSettings": "Configurações do Cliente", "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução.", - "MySubtitles": "Minhas legendas" + "MySubtitles": "Minhas legendas", + "Name": "Nome" } From 000f6e776d481b9af69a674f6a965c0b40958ee2 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 27 Mar 2020 15:52:50 +0300 Subject: [PATCH 436/449] Fix dom addEventListener/removeEventListener for case of undefined options --- src/components/dom.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/dom.js b/src/components/dom.js index cc37e2fc5b..b91e5b1687 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -74,17 +74,17 @@ define([], function () { } function addEventListenerWithOptions(target, type, handler, options) { - var optionsOrCapture = options; + var optionsOrCapture = options || {}; if (!supportsCaptureOption) { - optionsOrCapture = options.capture; + optionsOrCapture = optionsOrCapture.capture; } target.addEventListener(type, handler, optionsOrCapture); } function removeEventListenerWithOptions(target, type, handler, options) { - var optionsOrCapture = options; + var optionsOrCapture = options || {}; if (!supportsCaptureOption) { - optionsOrCapture = options.capture; + optionsOrCapture = optionsOrCapture.capture; } target.removeEventListener(type, handler, optionsOrCapture); } From 8f1e1075c249e2e858f6626673e5c9f9118bf7c2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 28 Mar 2020 11:36:58 +0100 Subject: [PATCH 437/449] Update CI to use NodeJS 12 --- .ci/azure-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 48f042d729..7c7801b866 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -33,7 +33,7 @@ jobs: - task: NodeTool@0 displayName: 'Install Node' inputs: - versionSpec: '10.x' + versionSpec: '12.x' - task: Cache@2 displayName: 'Check Cache' @@ -82,7 +82,7 @@ jobs: - task: NodeTool@0 displayName: 'Install Node' inputs: - versionSpec: '10.x' + versionSpec: '12.x' - task: Cache@2 displayName: 'Check Cache' From 8743edf0273b7aa75e90452518105f829c00327a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 28 Mar 2020 12:11:46 +0100 Subject: [PATCH 438/449] Update dependencies --- package.json | 32 +++++----- yarn.lock | 162 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 124 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 81dd250ab5..721520d1be 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.8.6", - "@babel/polyfill": "^7.8.7", "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.8.6", "autoprefixer": "^9.7.4", "babel-loader": "^8.0.6", @@ -18,7 +18,7 @@ "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^6.8.0", - "file-loader": "^5.0.2", + "file-loader": "^6.0.0", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", "gulp-cli": "^2.2.0", @@ -31,7 +31,7 @@ "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", - "html-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^4.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", @@ -63,24 +63,30 @@ "page": "^1.11.5", "query-string": "^6.11.1", "resize-observer-polyfill": "^1.5.1", - "shaka-player": "^2.5.9", + "shaka-player": "^2.5.10", "sortablejs": "^1.10.2", "swiper": "^5.3.1", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": ["@babel/preset-env"], - "overrides": [{ + "presets": [ + "@babel/preset-env" + ], + "overrides": [ + { "test": [ - "src/components/cardbuilder/cardBuilder.js", - "src/components/filedownloader.js", - "src/components/filesystem.js", - "src/components/input/keyboardnavigation.js", - "src/components/sanatizefilename.js" + "src/components/cardbuilder/cardBuilder.js", + "src/components/filedownloader.js", + "src/components/filesystem.js", + "src/components/input/keyboardnavigation.js", + "src/components/sanatizefilename.js" ], - "plugins": ["@babel/plugin-transform-modules-amd"] - }] + "plugins": [ + "@babel/plugin-transform-modules-amd" + ] + } + ] }, "browserslist": [ "last 2 Firefox versions", diff --git a/yarn.lock b/yarn.lock index 8b7697cef4..546fbf639c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1649,11 +1649,6 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2129,6 +2124,14 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -2317,7 +2320,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.2.x: +clean-css@4.2.x, clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -2530,6 +2533,11 @@ commander@^2.2.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -3463,6 +3471,14 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -3580,7 +3596,7 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -eme-encryption-scheme-polyfill@^2.0.0: +eme-encryption-scheme-polyfill@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.1.tgz#b080b01bffd74c75c9cf8044c1cabedf3b83954f" integrity sha512-Wz+Ro1c0/2Wsx2RLFvTOO0m4LvYn+7cSnq3XOvRvLLBq8jbvUACH/zpU9s0/5+mQa5oaelkU69x+q0z/iWYrFA== @@ -4271,13 +4287,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-5.1.0.tgz#cb56c070efc0e40666424309bd0d9e45ac6f2bb8" - integrity sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg== +file-loader@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== dependencies: - loader-utils "^1.4.0" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^2.6.5" file-type@5.2.0, file-type@^5.2.0: version "5.2.0" @@ -5336,7 +5352,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x: +he@1.2.x, 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== @@ -5410,7 +5426,20 @@ html-entities@^1.2.1: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.2.3, html-minifier@^3.5.20: +html-minifier-terser@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz#8f12f639789f04faa9f5cf2ff9b9f65607f21f8b" + integrity sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-minifier@^3.5.20: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== @@ -5433,17 +5462,16 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= +html-webpack-plugin@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.2.tgz#c96a48d0ee53d33dcc909d6b65ad28f3d627efd4" + integrity sha512-dCyjg2dEBf0Azni2byDcwfk5l5XKNEnA3OU4cejovqkKGc4ZixC6Aw6+U2sAG/ellHIjoiQhyU4oKMO6fQFaYA== dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" util.promisify "1.0.0" htmlparser2@^3.10.0, htmlparser2@^3.3.0: @@ -6373,11 +6401,6 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -6535,7 +6558,7 @@ levn@^0.3.0, levn@~0.3.0: "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": version "4.0.0" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#1d12af0b04fb2337570b57d706dd97db2f904b9d" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#3269ee2b5442a495cc814164e1d70d87dc3cf2f9" liftoff@^3.1.0: version "3.1.0" @@ -6601,16 +6624,6 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -6620,6 +6633,15 @@ loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + localtunnel@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" @@ -6797,7 +6819,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@~4.17.12: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6866,6 +6888,13 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + lowercase-keys@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" @@ -7415,6 +7444,14 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" @@ -8014,6 +8051,14 @@ param-case@2.1.x: dependencies: no-case "^2.2.0" +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -8108,6 +8153,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.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -9087,7 +9140,7 @@ pretty-bytes@^5.3.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== -pretty-error@^2.0.2: +pretty-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= @@ -9510,7 +9563,7 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -relateurl@0.2.x: +relateurl@0.2.x, relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -9903,7 +9956,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4, schema-utils@^2.6.5: +schema-utils@^2.6.0, schema-utils@^2.6.4, schema-utils@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== @@ -10103,12 +10156,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shaka-player@^2.5.9: - version "2.5.9" - resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.9.tgz#007dc19df2bb5d3d959d278b2d894af05adffe38" - integrity sha512-XavLBqxvIbvLOPfk7VKZu5fbMJyVko9bBfzxmMWdX5bvQwUSjU7ZhV8v2tHqXQYafpHml1hlGHzKkLs7idouNQ== +shaka-player@^2.5.10: + version "2.5.10" + resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.10.tgz#6f4e72e2433002d11824a223b02edd5004e30e2b" + integrity sha512-kS9TQL6bWODo4XNnozERZWsEiWlLZ6huspPx4ZjmMjeOBL9gwqlULLfLyO+5gA3CYV/dk9LaAi1WAEaLWckGpA== dependencies: - eme-encryption-scheme-polyfill "^2.0.0" + eme-encryption-scheme-polyfill "^2.0.1" shebang-command@^1.2.0: version "1.2.0" @@ -11077,7 +11130,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.0.0, terser@^4.1.2: +terser@^4.0.0, terser@^4.1.2, terser@^4.6.3: version "4.6.7" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== @@ -11248,11 +11301,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -11305,7 +11353,7 @@ trough@^1.0.0: dependencies: glob "^7.1.2" -tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== From 5dfc5d6c2be8cc7957af11dae6dc0951691be033 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 29 Mar 2020 12:48:55 +0200 Subject: [PATCH 439/449] Fix admin drawer logo showing up everywhere --- src/assets/css/dashboard.css | 6 +++++- src/assets/css/librarybrowser.css | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 8c8a9ca7f1..894d7332f4 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -63,6 +63,10 @@ progress[aria-valuenow]::before { } .adminDrawerLogo { + display: none; +} + +.layout-mobile .adminDrawerLogo { padding: 1.5em 1em 1.2em; border-bottom: 1px solid #e0e0e0; margin-bottom: 1em; @@ -161,7 +165,7 @@ div[data-role=controlgroup] a.ui-btn-active { @media all and (min-width: 40em) { .content-primary { - padding-top: 7em; + padding-top: 4.6em; } .withTabs .content-primary { diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 13265e40d1..1b0fab8d14 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -313,7 +313,7 @@ } .dashboardDocument .mainDrawer-scrollContainer { - margin-top: 6em !important; + margin-top: 4.6em !important; } } From 0afe5f62ef5f709db5710174aa5b68f6e7f5888b Mon Sep 17 00:00:00 2001 From: bg56530 Date: Sun, 29 Mar 2020 15:58:21 +0000 Subject: [PATCH 440/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index aab47271c0..234f8dace7 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1470,5 +1470,6 @@ "NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}", "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible.", "PreferEmbeddedEpisodeInfosOverFileNames": "Préférer les informations intégrées aux noms de fichiers", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible." + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible.", + "ClientSettings": "Paramètres Client" } From ace822a8af8441874ab997fb10d2524259ea73a6 Mon Sep 17 00:00:00 2001 From: Vasily Date: Sun, 29 Mar 2020 22:04:36 +0300 Subject: [PATCH 441/449] Switch to new version of JavascriptSubtitlesOctopus, enable new options --- package.json | 2 +- src/components/htmlvideoplayer/plugin.js | 14 +++++++++++++- yarn.lock | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2df8c1a637..602f20c092 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.4.1", "jstree": "^3.3.7", - "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus", + "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.5", diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 995df6607b..97056f80ff 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1058,7 +1058,19 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa legacyWorkerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker-legacy.js", onError: function() { htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); - } + }, + + // new octopus options; override all, even defaults + renderMode: 'blend', + dropAllAnimations: false, + libassMemoryLimit: 40, + libassGlyphLimit: 40, + targetFps: 24, + prescaleTradeoff: 0.8, + softHeightLimit: 1080, + hardHeightLimit: 2160, + resizeVariation: 0.2, + renderAhead: 90 }; require(['JavascriptSubtitlesOctopus'], function(SubtitlesOctopus) { currentSubtitlesOctopus = new SubtitlesOctopus(options); diff --git a/yarn.lock b/yarn.lock index 5641ad41a5..d356ba6086 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6576,9 +6576,9 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": +"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf": version "4.0.0" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#1d12af0b04fb2337570b57d706dd97db2f904b9d" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7e6b75dcab9f7dad12719983510d05242803707c" liftoff@^3.1.0: version "3.1.0" From 41896e126ae0e29383408d0aa159fce0aaf5126f Mon Sep 17 00:00:00 2001 From: NoFrosty Date: Mon, 30 Mar 2020 07:28:46 +0000 Subject: [PATCH 442/449] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 234f8dace7..ced0674031 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1446,7 +1446,7 @@ "LabelAudioChannels": "Canaux audio :", "HeaderFavoriteBooks": "Livres préférés", "FetchingData": "Récuperer des données suplémentaires", - "CopyStreamURLSuccess": "URL copiée.", + "CopyStreamURLSuccess": "URL copiée avec succès", "CopyStreamURL": "Copier l'URL du flux", "LabelBaseUrlHelp": "Vous pouvez ajouter un sous-répertoire personalisé ici pour accéder au serveur depuis une URL plus exclusive.", "HeaderFavoritePeople": "Personnes préférées", @@ -1460,9 +1460,9 @@ "LabelStreamType": "Type de flux :", "EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées", "EnableFastImageFadeIn": "Transition d'image rapide", - "LabelPlayerDimensions": "Dimension du lecteur:", - "LabelDroppedFrames": "Images perdues:", - "LabelCorruptedFrames": "Images corrompues:", + "LabelPlayerDimensions": "Dimension du lecteur :", + "LabelDroppedFrames": "Images perdues :", + "LabelCorruptedFrames": "Images corrompues :", "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL.", "AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.", "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", From d8fb547035b6cea7d23bc5e56957db1596dbbed0 Mon Sep 17 00:00:00 2001 From: AdmiralAnimE Date: Mon, 30 Mar 2020 14:12:03 +0000 Subject: [PATCH 443/449] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index e6aaa30fb1..bf264bbcfb 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -303,9 +303,9 @@ "LabelCriticRating": "Оценка на критиците:", "LabelCurrentPassword": "Текуща парола:", "LabelCustomCertificatePath": "Път към потребителския сертификат:", - "LabelCustomCertificatePathHelp": "Път до файл с шифровъчен стандарт №12, съдържащ сертификат и частен ключ за поддръжка на протокол TLS на собствен домейн.", + "LabelCustomCertificatePathHelp": "Път до файл с шифровъчен стандарт №12 (PKCS #12), съдържащ сертификат и частен ключ за поддръжка на протокол TLS на собствен домейн.", "LabelCustomCss": "CSS по избор:", - "LabelCustomCssHelp": "Използвайте собствен CSS към уеб интерфейса.", + "LabelCustomCssHelp": "Използвайте собствен CSS към мрежовия интерфейс.", "LabelCustomDeviceDisplayName": "Показвано име:", "LabelCustomRating": "Оценка по избор:", "LabelDashboardTheme": "Облик на сървърното табло:", @@ -834,5 +834,10 @@ "AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи", "AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.", "AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.", - "Absolute": "Aбсолютен" + "Absolute": "Aбсолютен", + "LabelLanNetworks": "Локални мрежи:", + "LabelKodiMetadataSaveImagePathsHelp": "Препоръчително е ако имате изображения, пътят към които не е съобразен с изискванията на Коди.", + "LabelKodiMetadataSaveImagePaths": "Записване на пътеките към изображенията в nfo файловете", + "LabelChannels": "Канали:", + "DropShadow": "Сянка" } From 86c2201718ef9df8b30a05adae7e8da88a8e8caf Mon Sep 17 00:00:00 2001 From: abdulaziz Date: Mon, 30 Mar 2020 22:18:06 +0000 Subject: [PATCH 444/449] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 18ceb61dea..7fae30a084 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -918,7 +918,7 @@ "HeaderFavoriteEpisodes": "الحلقات المفضلة", "HeaderFavoriteArtists": "الفنانون المفضلون", "Shows": "الحلقات", - "Books": "كتب", + "Books": "الكتب", "ValueSpecialEpisodeName": "مميز - {0}", "HeaderFavoriteAlbums": "الألبومات المفضلة", "HeaderAlbumArtists": "فناني الألبومات", From 4f0dd18e59f60ff15ce697efb73d226f2e107be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Rodr=C3=ADguez?= Date: Mon, 30 Mar 2020 19:37:01 +0000 Subject: [PATCH 445/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 10eb8655e1..df8ecf483f 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1474,5 +1474,6 @@ "LabelDroppedFrames": "Frames perdidos:", "LabelCorruptedFrames": "Frames corruptos:", "AskAdminToCreateLibrary": "Solo un administrador puede crear librerías.", - "AllowFfmpegThrottling": "Acelerar transcodificación" + "AllowFfmpegThrottling": "Acelerar transcodificación", + "ClientSettings": "Ajustes de cliente" } From 35acc83b234a56559c8675ac5332c11b823189b9 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Tue, 31 Mar 2020 03:19:32 +0000 Subject: [PATCH 446/449] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 1a3aa1e4de..ccd90e05b5 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -217,7 +217,7 @@ "EveryNDays": "每 {0} 天", "ExitFullscreen": "退出全屏", "ExtraLarge": "特大", - "ExtractChapterImagesHelp": "提取章节图像将允许客户端显示一个图像形式的场景选择菜单。这个提取的过程可能会非常缓慢、占用大量 CPU 资源,并且可能需要几个GB的硬盘空间。提取将会在视频被发现时启动,同时也作为一个夜间计划任务运行。这个任务可以在“计划任务”选项中进行设置。不建议在高峰使用时间运行这个任务。", + "ExtractChapterImagesHelp": "提取剧集图片将允许客户端显示一个图像形式的场景选择菜单。这个提取的过程可能会非常缓慢、占用大量 CPU 资源,并且可能需要几个GB的硬盘空间。提取将会在视频被发现时启动,同时也作为一个夜间计划任务运行。这个任务可以在“计划任务”选项中进行设置。不建议在高峰使用时间运行这个任务。", "Extras": "额外", "FFmpegSavePathNotFound": "我们无法通过你输入的路径定位 FFmpeg。FFprobe 同样也是必要的并且应该被放在同一个文件夹中。他们通常会被打包在一起以供下载。请检查这个路径然后再试一次。", "FastForward": "快进", @@ -277,7 +277,7 @@ "HeaderCastCrew": "演职人员", "HeaderChannelAccess": "频道访问", "HeaderChannels": "频道", - "HeaderChapterImages": "章节图片", + "HeaderChapterImages": "剧集图片", "HeaderCodecProfile": "编解码器配置", "HeaderCodecProfileHelp": "编解码器的配置文件标明了设备播放特定编码时的限制。如果在限制之内则媒体将被转码,否则编解码器将被配置为直接播放。", "HeaderConfigureRemoteAccess": "配置远程访问", @@ -568,8 +568,8 @@ "LabelEpisodeNumber": "集号:", "LabelEvent": "事件:", "LabelEveryXMinutes": "每:", - "LabelExtractChaptersDuringLibraryScan": "媒体库扫描过程中解压章节图像", - "LabelExtractChaptersDuringLibraryScanHelp": "当媒体库导入视频并扫描时,将提取章节图像。否则,章节图像将在之后的计划任务提取,而媒体库会更快完成扫描。", + "LabelExtractChaptersDuringLibraryScan": "媒体库扫描过程中解压剧集图片", + "LabelExtractChaptersDuringLibraryScanHelp": "当媒体库导入视频并扫描时,将提取剧集图片。否则,剧集图片将在之后的计划任务提取,而媒体库会更快完成扫描。", "LabelFailed": "失败", "LabelFileOrUrl": "文件或网址:", "LabelFinish": "完成", @@ -998,7 +998,7 @@ "OptionEstimateContentLength": "转码时,估计内容长度", "OptionEveryday": "每天", "OptionExternallyDownloaded": "外部下载", - "OptionExtractChapterImage": "开启章节图像提取", + "OptionExtractChapterImage": "开启剧集图片提取", "OptionFavorite": "我的最爱", "OptionFriday": "星期五", "OptionHasSpecialFeatures": "特殊功能", From be60f23264f0b8f7efe13063f8a159be464f1ba4 Mon Sep 17 00:00:00 2001 From: pucherot Date: Tue, 31 Mar 2020 10:52:02 +0000 Subject: [PATCH 447/449] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index df8ecf483f..06318c22d3 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -183,7 +183,7 @@ "ErrorAddingListingsToSchedulesDirect": "Ha habido un error añadiendo la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y quitar otras listas de tu cuenta antes de proceder.", "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los medios. Por favor, asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a esa ubicación.", "ErrorAddingTunerDevice": "Ha habido un error añadiendo el dispositivo sintonizador. Por favor, asegúrate de que es accesible e inténtalo otra vez.", - "ErrorAddingXmlTvFile": "Hubo un un error accediendo el archivo XML. Por favor, asegurese que el archivo existe e inténtalo de nuevo.", + "ErrorAddingXmlTvFile": "Ha sucedido un error accediendo al archivo XML. Por favor, asegúrate que el archivo existe e inténtalo de nuevo.", "ErrorGettingTvLineups": "Ha habido un error descargando la programación de TV. Por favor, asegúrese que la información es correcta e inténtalo de nuevo.", "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización tiene que ser mayor que la de inicio.", "ErrorPleaseSelectLineup": "Por favor selecciona una alineación e inténtalo otra vez. Si no hay alineaciones disponibles, revisa que tu nombre de usuario, contraseña y código postal son correctos.", @@ -420,7 +420,7 @@ "Help": "Ayuda", "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios más recientes", - "HttpsRequiresCert": "Para activar la conexión segura, necesitas un certificado SSL de confianza, como Let's Encrypt. De lo contrario, desactive las conexiones seguras", + "HttpsRequiresCert": "Para activar la conexión segura, necesitas un certificado SSL de confianza, como Let's Encrypt. De lo contrario, desactive las conexiones seguras.", "Identify": "Identificar", "Images": "Imágenes", "ImportFavoriteChannelsHelp": "Si está activado, sólo los canales guardados como favoritos en el sintonizador se importarán.", @@ -1248,14 +1248,14 @@ "Descending": "Descendiente", "DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin ninguna pérdida de calidad en el vídeo.", - "Director": "Director", + "Director": "Dirección", "Directors": "Directores", "Display": "Mostrar", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio al igual que \"últimos\" y \"continuar viendo\"", "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios ausentes en las temporadas", "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.", - "DropShadow": "Sombra", + "DropShadow": "Eliminar sombra", "EditMetadata": "Editar etiquetas", "EnableBackdrops": "Imágenes de fondo", "EnableBackdropsHelp": "Mostrar imágenes de fondo en algunas páginas mientras se explora la biblioteca.", @@ -1404,7 +1404,7 @@ "RunAtStartup": "Ejecutar al iniciar", "Series": "Series", "SeriesDisplayOrderHelp": "Ordena los episodios por fecha de emisión, orden de DVD o número absoluto.", - "ShowTitle": "Mostrar título", + "ShowTitle": "Título del show", "ShowYear": "Año del show", "SmallCaps": "Letras minúsculas", "Smaller": "Más pequeño", @@ -1455,9 +1455,9 @@ "MusicLibraryHelp": "Revisar la {0}guía de nombres de música{1}.", "FetchingData": "Obteniendo datos adicionales", "ButtonAddImage": "Añadir imagen", - "HeaderFavoritePeople": "Gente Favorita", + "HeaderFavoritePeople": "Gente favorita", "OptionRandom": "Aleatorio", - "SelectAdminUsername": "Por favor seleccione un nombre de usuario para la cuenta de administrador.", + "SelectAdminUsername": "Por favor seleccione un nombre de usuario para la cuenta administrador.", "ButtonSplit": "Dividir", "HeaderNavigation": "Navegación", "MessageConfirmAppExit": "¿Quieres salir?", @@ -1475,5 +1475,7 @@ "LabelCorruptedFrames": "Frames corruptos:", "AskAdminToCreateLibrary": "Solo un administrador puede crear librerías.", "AllowFfmpegThrottling": "Acelerar transcodificación", - "ClientSettings": "Ajustes de cliente" + "ClientSettings": "Ajustes de cliente", + "PreferEmbeddedEpisodeInfosOverFileNames": "Priorizar la información embebida sobre los nombres de archivos", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Usar la información de episodio de los metadatos embebidos si está disponible." } From f6543d01795d072f9633191c7de01c3cb5d3cae0 Mon Sep 17 00:00:00 2001 From: amirmasoud Date: Tue, 31 Mar 2020 08:08:37 +0000 Subject: [PATCH 448/449] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 122 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 20 deletions(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index d4b60fe7c6..d9afcd66cc 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -35,7 +35,7 @@ "HeaderInstantMix": "درهم کردن فوری", "HeaderKodiMetadataHelp": "برای فعال یا غیرفعال سازی متاداده های Nfo ، یک کتابخانه را در صفحه تنظیم کتابخانه Jellyfin ویرایش کرده و قسمت سرورهای متاداده را مسیردهی کنید.", "HeaderLatestEpisodes": "آخرین قسمت ها", - "HeaderNextUp": "بعدی", + "HeaderNextUp": "قسمت بعدی", "HeaderPaths": "مسیرها", "HeaderPlayAll": "پخش همه", "HeaderPreferredMetadataLanguage": "زبان مدنظر اطلاعات محتوی", @@ -113,34 +113,116 @@ "UserProfilesIntro": "Jellyfin دارای پشتیبانی داخلی از پروفایل کاربران می باشد. با فعال سازی هر کاربر، او می تواند تنظیمات ، وضعیت پخش و کنترل والدین خاص خودش را داشته باشد.", "WelcomeToProject": "به Jellyfin خوش آمدید!", "WizardCompleted": "همه چیزی که فعلا می خواهیم همین است.جمع آوری اطلاعات کتابخانه های شما هم اکنون توسط Jellyfin آغاز شده است. اپلیکیشن های ما را امتحان کنید و سپس بر روی پایان کلیک کنید تا پیشخوان سرور را مشاهده نمایید.", - "Albums": "آلبوم ها", + "Albums": "آلبوم‌ها", "Artists": "هنرمندان", - "Books": "کتاب ها", - "Channels": "کانال ها", - "Collections": "کلکسیون ها", - "Favorites": "مورد علاقه ها", - "Folders": "پوشه ها", + "Books": "کتاب‌ها", + "Channels": "کانال‌ها", + "Collections": "مجموعه‌ها", + "Favorites": "مورد علاقه‌ها", + "Folders": "پوشه‌ها", "Genres": "ژانرها", "HeaderAlbumArtists": "هنرمندان آلبوم", - "HeaderFavoriteShows": "سریال های مورد علاقه", - "HeaderFavoriteEpisodes": "قسمت های مورد علاقه", - "HeaderFavoriteAlbums": "آلبوم های مورد علاقه", + "HeaderFavoriteShows": "سریال‌های مورد علاقه", + "HeaderFavoriteEpisodes": "قسمت‌های مورد علاقه", + "HeaderFavoriteAlbums": "آلبوم‌های مورد علاقه", "HeaderFavoriteArtists": "هنرمندان مورد علاقه", - "HeaderFavoriteSongs": "آهنگ های مورد علاقه", + "HeaderFavoriteSongs": "آهنگ‌های مورد علاقه", "HeaderLiveTV": "پخش زنده تلویزیون", - "Movies": "فیلم های سینمایی", - "Photos": "عکس ها", - "Playlists": "لیست های پخش", - "Shows": "سریال ها", - "Songs": "آهنگ ها", - "Sync": "همگامسازی", - "ValueSpecialEpisodeName": "ویژه- {0}", + "Movies": "فیلم‌ها", + "Photos": "عکس‌ها", + "Playlists": "لیست‌های پخش", + "Shows": "سریال‌ها", + "Songs": "موسیقی‌ها", + "Sync": "همگام‌سازی", + "ValueSpecialEpisodeName": "ویژه - {0}", "AllEpisodes": "تمام قسمت ها", "AllLanguages": "تمام زبان ها", "AllLibraries": "تمام کتابخانه ها", - "AllowHWTranscodingHelp": "اگر فعال شود, اجازه میدهید تبدیل ( کم و زیاد کردن کیفیت ) درلحظه و توسط کارت دریافت سیگنال صورت گیرد. این کمک میکند به اینکه سرور جلیفین کمتر عمل تبدیل را انجام دهد.", + "AllowHWTranscodingHelp": "اگر فعال شود, اجازه می‌دهید تبدیل کیفیت در لحظه انجام شود. این ممکن است به کاهش کدگذاری لازم برای Jellyfin منجر بشود.", "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود", "Add": "افزودن", "Actor": "بازیگر", - "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید." + "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید.", + "ButtonShuffle": "مخلوط کردن", + "ButtonSettings": "تنظیمات", + "ButtonSend": "ارسال", + "ButtonSelectView": "انتخاب نما", + "ButtonSelectServer": "انتخاب سرور", + "ButtonSearch": "جستجو", + "ButtonScanAllLibraries": "پویش تمام کتابخانه‌ها", + "ButtonRevoke": "ابطال", + "ButtonResume": "ادامه", + "ButtonRestart": "راه اندازی مجدد", + "ButtonResetEasyPassword": "بازنشانی کد پین آسان", + "ButtonRepeat": "تکرار", + "ButtonRename": "تغییر نام", + "ButtonRemove": "حذف", + "ButtonRefreshGuideData": "به‌روز‌رسانی داده‌ی راهنما", + "ButtonRefresh": "به‌روز‌رسانی", + "ButtonProfile": "نمایه", + "ButtonNextTrack": "ترانه پسین", + "ButtonPreviousTrack": "ترانه پیشین", + "ButtonPause": "مکث", + "ButtonParentalControl": "کنترل والدین", + "ButtonOpen": "باز", + "ButtonOff": "خاموش", + "ButtonNetwork": "شبکه", + "ButtonMore": "بیشتر", + "ButtonManualLogin": "ورود دستی", + "ButtonLibraryAccess": "دسترسی به کتابخانه", + "ButtonLearnMore": "بیشتر بدانید", + "ButtonInfo": "اطلاعات", + "ButtonHome": "خانه", + "ButtonHelp": "کمک", + "ButtonGuide": "راهنما", + "ButtonGotIt": "متوجه شدم", + "ButtonFullscreen": "تمام صفحه", + "ButtonForgotPassword": "فراموشی گذرواژه", + "ButtonEditImages": "ویرایش عکس‌ها", + "ButtonEdit": "ویرایش", + "ButtonDownload": "بارگیری", + "ButtonDown": "پایین", + "ButtonDelete": "حذف", + "ButtonConnect": "اتصال", + "ButtonChangeServer": "تغییر سرور", + "ButtonBack": "بازگشت", + "ButtonArrowUp": "بالا", + "ButtonArrowRight": "راست", + "ButtonArrowLeft": "چپ", + "ButtonArrowDown": "پایین", + "ButtonAddServer": "افزودن سرور", + "ButtonAddScheduledTaskTrigger": "افزودن راه انداز", + "ButtonAddMediaLibrary": "افزودن کتابخانه رسانه", + "ButtonAddImage": "افزودن تصویر", + "ButtonAdd": "افزودن", + "BoxRear": "جعبه (پشت)", + "Box": "جعبه", + "Blacklist": "لیست سیاه", + "BirthPlaceValue": "محل تولد: {0}", + "BirthLocation": "محل تولد", + "BirthDateValue": "متولد: {0}", + "Banner": "سرصفحه", + "Backdrops": "پس زمینه‌ها", + "Backdrop": "پس زمینه", + "AutoBasedOnLanguageSetting": "خودکار (بر اساس تنظیمات زبانی)", + "Auto": "خودکار", + "Audio": "صدا", + "AttributeNew": "جدید", + "AspectRatio": "نسبت ابعاد", + "AskAdminToCreateLibrary": "از کاربر مدیر بخواهید که یک کتابخانه ایجاد کند.", + "Ascending": "بالا رونده", + "AsManyAsPossible": "تا حدی که ممکن است", + "AroundTime": "حدود {0}", + "Anytime": "هر زمانی", + "AnyLanguage": "هر زبانی", + "AlwaysPlaySubtitles": "همیشه زیرنویس را نمایش بده", + "AllowFfmpegThrottling": "گلوگاه تبدیل کیفیت", + "AllChannels": "همه‌ی کانال‌ها", + "Alerts": "هشدارها", + "Aired": "پخش شده", + "AirDate": "تاریخ پخش", + "AddedOnValue": "{0} افزوده شد", + "AddToPlaylist": "افزودن به لیست پخش", + "AddToPlayQueue": "افزودن به صف پخش", + "AddToCollection": "افزودن به مجموعه" } From c202339b9a60f87d78f2693fefa680e672e1a269 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 31 Mar 2020 15:11:31 +0000 Subject: [PATCH 449/449] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index e0bebec52f..c90853c5f2 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1468,5 +1468,8 @@ "AskAdminToCreateLibrary": "Pokiaľ chcete vytvoriť knižnicu, musíte sa spýtať administrátora.", "PlaybackErrorNoCompatibleStream": "Nastal problém s profilom klienta a server preto neposiela kompatibilný mediálny formát.", "AllowFfmpegThrottlingHelp": "Keď sa transkódovanie alebo remuxovanie dostane do bodu, kedy je dostatočne vopred voči súčasnej polohe prehrávania, pozastaví proces aby spotrebovával menej zdrojov. Toto je najviac užitočné, keď sa pozerá obsah bez pretáčania. Vypnite túto možnosť, pokiaľ má vaše prehrávanie problémy.", - "AllowFfmpegThrottling": "Obmedzenie transkódovania" + "AllowFfmpegThrottling": "Obmedzenie transkódovania", + "PreferEmbeddedEpisodeInfosOverFileNames": "Preferovať vložené informácie o epizóde pred názvom súboru", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Toto využíva informácie o epizóde z vložených metadát, pokiaľ sú dostupne.", + "ClientSettings": "Nastavenie klienta" }