diff --git a/frontEndSrc/js/anime.js b/frontEndSrc/js/anime.js index 9f531bc3..231f9cab 100644 --- a/frontEndSrc/js/anime.js +++ b/frontEndSrc/js/anime.js @@ -94,11 +94,18 @@ _.on('body.anime.list', 'click', '.plus-one', (e) => { _.hide('#loading-shadow'); _.showMessage('error', `Failed to update ${title}. `); _.scrollToTop(); + return; } + // We've completed the series if (resData.data.libraryEntry.update.libraryEntry.status === 'COMPLETED') { _.hide(parentSel); + _.hide('#loading-shadow'); + _.showMessage('success', `Successfully completed ${title}`); + _.scrollToTop(); + + return; } _.hide('#loading-shadow'); diff --git a/frontEndSrc/js/manga.js b/frontEndSrc/js/manga.js index d07907bb..b35df7d3 100644 --- a/frontEndSrc/js/manga.js +++ b/frontEndSrc/js/manga.js @@ -83,6 +83,11 @@ _.on('.manga.list', 'click', '.edit-buttons button', (e) => { if (String(data.data.status).toUpperCase() === 'COMPLETED') { _.hide(parentSel); + _.hide('#loading-shadow'); + _.showMessage('success', `Successfully completed ${mangaName}`); + _.scrollToTop(); + + return; } _.hide('#loading-shadow'); diff --git a/frontEndSrc/yarn.lock b/frontEndSrc/yarn.lock index ca561ecd..eae85bdf 100644 --- a/frontEndSrc/yarn.lock +++ b/frontEndSrc/yarn.lock @@ -7,18 +7,6 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@napi-rs/triples@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" - integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== - -"@node-rs/helper@^1.0.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c" - integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg== - dependencies: - "@napi-rs/triples" "^1.0.3" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -41,99 +29,104 @@ fastq "^1.6.0" "@swc/cli@^0.1.39": - version "0.1.51" - resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.51.tgz#720f2d966446558011085c2a40a65fd9079d06a1" - integrity sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw== + version "0.1.56" + resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.56.tgz#797f3bf4f7dc9f4a175598db9d50d2355b31943d" + integrity sha512-CFQzS271l9LfLg8JwtN4l/ZNDbdcoS4xbgiRwh7Oxx2sRxWxE/6fJRTzXHw7Z2TDuyYtx+D0vwjyjulbePmTeg== dependencies: commander "^7.1.0" fast-glob "^3.2.5" slash "3.0.0" source-map "^0.7.3" -"@swc/core-android-arm64@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.96.tgz#9ea9871d3719f5dfcdc06fdfdf237797ab4dc0d0" - integrity sha512-Go7x+sHEErc/CzfF9QRkN+Bk6HUYI/RuSGkBaD+4cR8gbnu5F0NzzWQkbGS+QX25QbCaoWAI5ZGMRZ/2on619w== +"@swc/core-android-arm-eabi@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.160.tgz#f5aaf852e9d104b4ad58d34851bac3bd41a64a60" + integrity sha512-VzFP7tYgvpkUhd8wgyNtERqvoPBBDretyMFxAxPe2SxClaBs9Ka95PdiPPZalRq+vFCb/dFxD8Vhz+XO16Kpjg== -"@swc/core-darwin-arm64@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.96.tgz#213f58db1721186a69ce91741485d4676ddb7afd" - integrity sha512-zJu25O8qdV8Qpk84C5C4BxbGr3N9QIyQSjSeb04zMFmdCX0xYGrgpFsuZ/DQjem2ehWXFrgeGSqAH3vj3Lk6xQ== +"@swc/core-android-arm64@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.160.tgz#458f7e6aff52958e0764c34500528c18bbb31894" + integrity sha512-m+xqQaa7TqW3Vm9MUvITtdU8OlAc/9yT+TgOS4l8WlfFI87IDnLLfinKKEp+xfKwzYDdIsh+sC+jdGdIBTMB+Q== -"@swc/core-darwin-x64@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.96.tgz#b60628d9e9343f8cf494ac3b4a24ca5540ecba30" - integrity sha512-MNMFfwBbTL8z8idsdW2NudvLnXoH9sLsc56ZmWt5fkUVbkfquDiip/GB0b/EM+Xr5q4yYTGgjlVlSfllt3ZbOg== +"@swc/core-darwin-arm64@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.160.tgz#34d48b449de0eae9fddd71b064d36aa5353f22cc" + integrity sha512-9bG70KYKvjNf7tZtjOu1h4kDZPtoidZptIXPGSHuUgJ1BbSJYpfRR5xAmq4k37+GqOjIPJp4+lSGQPa2HfejpA== -"@swc/core-linux-arm-gnueabihf@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.96.tgz#18e39ff0de633ab093f9a91b99f18b99278a16e6" - integrity sha512-VYQTGS6X85jxAzaOXPBmikEPh0aq9fGFrNr1sSi1YdKJ9Iwpw/vVbD67FBLja8Jzo+d5Sh0cHqFByCK4XWHExg== +"@swc/core-darwin-x64@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.160.tgz#109d92457df928717c73055f01c99ca88815000d" + integrity sha512-+b4HdKAVf/XPZ9DjgG2axGLbquPEuYwEP3zeWgbWn0s0FYQ7WTFxznf3YrTJE9MYadJeCOs3U80E2xVAtRRS9Q== -"@swc/core-linux-arm64-gnu@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.96.tgz#fb22ca514fabd9e3463958930eeb1dd14ea87c52" - integrity sha512-BWrpXFI4AG97upawPkQHdvdu+AtPY87Gb4yia09ea8T5srt37wwrYomIx/nUf7f+DFE2p2ULiaTuhs+m1x6lPw== +"@swc/core-freebsd-x64@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.160.tgz#debdccce0129aa856e496f06981cc8e8271fcb41" + integrity sha512-E5agJwv+RVMoZ8FQIPSO5wLPDQx6jqcMpV207EB3pPaxPWGe4n3DH3vcibHp80RACDNdiaqo5lBeBnGJI4ithw== -"@swc/core-linux-arm64-musl@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.96.tgz#8cf08954f299ee70d1155f5dbb39da04b3677fb1" - integrity sha512-W8APv+1G62/nwnEPMDbtbVDwjG1mh479oBI3ZvBnOFmMh1rprDVfI9eekP2y29EeHWAVoqzTdHzzwvqSRS/2mw== +"@swc/core-linux-arm-gnueabihf@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.160.tgz#27669f1084c152153c017fc320b6a92cd6b71244" + integrity sha512-uCttZRNx+lWVhCYGC6/pGUej08g1SQc5am6R9NVFh111goytcdlPnC4jV8oWzq2QhDWkkKxLoP2CZOytzI4+0w== -"@swc/core-linux-x64-gnu@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.96.tgz#fedeca9d00ebec7e4c7a4c20a5d0b989f1162fcf" - integrity sha512-vURG3l5gCipo84kWLZAPpY18yq1n13KtxjTxxEiXvqTWkBjPoUWM00hpEpDeHoL1yAipb8v4jeRk8KauEf5X4w== +"@swc/core-linux-arm64-gnu@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.160.tgz#a8ecadee30639c298e9c2175099d55c1c82f912e" + integrity sha512-sB18roiv8m/zsY6tXLSrbUls0eKkSkxOEF0ennXVEtz97rMJ+WWnkOc8gI+rUpj3MHbVAIxyDNyyZU4cH5g1jQ== -"@swc/core-linux-x64-musl@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.96.tgz#eec99b0157a09910be129430b96104c3762dc886" - integrity sha512-v7MMGum9/WRX8hMWP+6g4FxMmJzb7eSLpLuZ5vGeqZGctHMUVPkwF65zac/Z0iH5P2fe9c1bFCYe3igKIRfCww== +"@swc/core-linux-arm64-musl@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.160.tgz#1a2cf738c8a394fcb21fe91f13b1fb9c775cca0b" + integrity sha512-PJ7Ukb+BRR3pGYcUag8qRWOB11eByc5YLx/xAMSc3bRmaYW/oj6s8k+1DYiR//BAuNQdf14MpMFzDuWiDEUh7A== -"@swc/core-win32-arm64-msvc@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.96.tgz#bfc985240095bc8f56c21974a779c8c41aa8a295" - integrity sha512-ykit1GohcKMd9cDgMmVrYLIHEQYSOOlHrDUfHbc/JLvhTv7JP7Th2PzKaujer8cLVm+HuXbYCvzJGltVWUy2dw== +"@swc/core-linux-x64-gnu@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.160.tgz#f54c4e0510b69d68f56e681050b717991627ad68" + integrity sha512-wVh8Q86xz3t0y5zoUryWQ64bFG/YxdcykBgaog8lU9xkFb1KSqVRE9ia7aKA12/ZtAfpJZLRBleZxBAcaCg9FQ== -"@swc/core-win32-ia32-msvc@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.96.tgz#306d1241827150988570d40d5b3f3f14334790a8" - integrity sha512-aEvFh06nlhFHqcwkV/3B0SolGS2kFOGa7CdyJNRf502rbNTYUqwjnNcZBgBimeyguoZ8Fax0DUoFs4kKzmdokA== +"@swc/core-linux-x64-musl@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.160.tgz#6f8ec092d8b65a9750faf0a2323b52f39c5bd540" + integrity sha512-AnWdarl9WWuDdbc2AX1w76W1jaekSCokxRrWdSGUgQytaZRtybKZEgThvJCQDrSlYQD4XDOhhVRCurTvy4JsfQ== -"@swc/core-win32-x64-msvc@1.2.96": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.96.tgz#54c063f6b5f1e7589fedab7d9fd7ec0acb331a47" - integrity sha512-s5eExaaZQ2GPCPjy9aropzkLXaR0P5Zk8EpwH3OqMTZrU6I8Hzt6i9mnkfdX89iaWES+z93svaIIxKA6Bn9NFg== +"@swc/core-win32-arm64-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.160.tgz#b4f226ab86e550762b5cc83d0ebe4cf43f1a3624" + integrity sha512-ScL27mZRTwEIqBIv9RY34nQvyBvhosiM5Lus4dCFmS71flPcAEv7hJgy4GE3YUQV0ryGNK9NaO43H8sAyNwKVQ== + +"@swc/core-win32-ia32-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.160.tgz#243bb5b15eab76f4c8f004381d63c6d72a8cef68" + integrity sha512-e75zbWlhlyrd5HdrYzELa6OlZxgyaVpJj+c9xMD95HcdklVbmsyt1vuqRxMyqaZUDLyehwwCDRX/ZeDme//M/A== + +"@swc/core-win32-x64-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.160.tgz#8708986433e891687bb4a836a683f90bc95e1fce" + integrity sha512-GAYT+WzYQY4sr17S21yJh4flJp/sQ62mAs6RfN89p7jIWgm0Bl/SooRl6ocsftTlnZm7K7QC8zmQVeNCWDCLPw== "@swc/core@^1.2.54": - version "1.2.96" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.96.tgz#4cb4619176af4779ac3c7800c1e0fa6f3969de78" - integrity sha512-On+Ex9MDFwmJjY2filiNnvJ+9mENkc7QoNdj0Ijy8dEWCWol1bUb/lurSBtc9F6hKDlSygTMJEa+S0WsHq9TsQ== - dependencies: - "@node-rs/helper" "^1.0.0" + version "1.2.160" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.160.tgz#d91730a5021d4c8aef87855dde11fc8931496176" + integrity sha512-nXoC7HA+aY7AtBPsiqGXocoRLAzzA7MV+InWQtILN7Uru4hB9+rLnLCPc3zSdg7pgnxJLa1tHup1Rz7Vv6TcIQ== optionalDependencies: - "@swc/core-android-arm64" "1.2.96" - "@swc/core-darwin-arm64" "1.2.96" - "@swc/core-darwin-x64" "1.2.96" - "@swc/core-linux-arm-gnueabihf" "1.2.96" - "@swc/core-linux-arm64-gnu" "1.2.96" - "@swc/core-linux-arm64-musl" "1.2.96" - "@swc/core-linux-x64-gnu" "1.2.96" - "@swc/core-linux-x64-musl" "1.2.96" - "@swc/core-win32-arm64-msvc" "1.2.96" - "@swc/core-win32-ia32-msvc" "1.2.96" - "@swc/core-win32-x64-msvc" "1.2.96" + "@swc/core-android-arm-eabi" "1.2.160" + "@swc/core-android-arm64" "1.2.160" + "@swc/core-darwin-arm64" "1.2.160" + "@swc/core-darwin-x64" "1.2.160" + "@swc/core-freebsd-x64" "1.2.160" + "@swc/core-linux-arm-gnueabihf" "1.2.160" + "@swc/core-linux-arm64-gnu" "1.2.160" + "@swc/core-linux-arm64-musl" "1.2.160" + "@swc/core-linux-x64-gnu" "1.2.160" + "@swc/core-linux-x64-musl" "1.2.160" + "@swc/core-win32-arm64-msvc" "1.2.160" + "@swc/core-win32-ia32-msvc" "1.2.160" + "@swc/core-win32-x64-msvc" "1.2.160" "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -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-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -176,15 +169,15 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.6.4: - version "4.17.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.4.tgz#72e2508af2a403aec0a49847ef31bd823c57ead4" - integrity sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.6.4: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== dependencies: - caniuse-lite "^1.0.30001265" - electron-to-chromium "^1.3.867" + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" escalade "^3.1.1" - node-releases "^2.0.0" + node-releases "^2.0.2" picocolors "^1.0.0" caniuse-api@^3.0.0: @@ -197,10 +190,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001265: - version "1.0.30001267" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30" - integrity sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001317: + version "1.0.30001319" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f" + integrity sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw== chalk@^4.1.0: version "4.1.2" @@ -231,10 +224,10 @@ 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== -colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== commander@^7.1.0, commander@^7.2.0: version "7.2.0" @@ -242,9 +235,9 @@ commander@^7.1.0, commander@^7.2.0: integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== concurrently@^6.0.2: - version "6.3.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.3.0.tgz#63128cb4a6ed54d3c0ed8528728590a5fe54582a" - integrity sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw== + version "6.5.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.5.1.tgz#4518c67f7ac680cf5c34d5adf399a2a2047edc8c" + integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== dependencies: chalk "^4.1.0" date-fns "^2.16.1" @@ -262,15 +255,10 @@ css-blank-pseudo@^0.1.4: dependencies: postcss "^7.0.5" -css-color-names@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" - integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== - css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== + version "6.1.4" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== dependencies: timsort "^0.3.0" @@ -290,15 +278,15 @@ css-prefers-color-scheme@^3.1.1: postcss "^7.0.5" css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" @@ -308,7 +296,7 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-what@^5.0.0: +css-what@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== @@ -328,53 +316,52 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz#359943bf00c5c8e05489f12dd25f3006f2c1cbd2" - integrity sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ== +cssnano-preset-default@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" + integrity sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.0" - postcss-convert-values "^5.0.1" - postcss-discard-comments "^5.0.1" - postcss-discard-duplicates "^5.0.1" - postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" - postcss-merge-longhand "^5.0.2" - postcss-merge-rules "^5.0.2" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.2" - postcss-minify-params "^5.0.1" - postcss-minify-selectors "^5.1.0" - postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" - postcss-normalize-url "^5.0.2" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" - postcss-reduce-initial "^5.0.1" - postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.2" - postcss-unique-selectors "^5.0.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.0" + postcss-discard-comments "^5.1.1" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.3" + postcss-merge-rules "^5.1.1" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" + postcss-minify-selectors "^5.2.0" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.0" + postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.0.1: - version "5.0.8" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.8.tgz#39ad166256980fcc64faa08c9bb18bb5789ecfa9" - integrity sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg== + version "5.1.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.5.tgz#5f3f519538c7f1c182c527096892243db3e17397" + integrity sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg== dependencies: - cssnano-preset-default "^5.1.4" - is-resolvable "^1.1.0" + cssnano-preset-default "^5.2.5" lilconfig "^2.0.3" yaml "^1.10.2" @@ -386,9 +373,9 @@ csso@^4.2.0: css-tree "^1.1.2" date-fns@^2.16.1: - version "2.25.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.25.0.tgz#8c5c8f1d958be3809a9a03f4b742eba894fc5680" - integrity sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w== + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== dom-serializer@^1.0.1: version "1.3.2" @@ -404,14 +391,14 @@ domelementtype@^2.0.1, domelementtype@^2.2.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== +domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" -domutils@^2.6.0: +domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -420,10 +407,10 @@ domutils@^2.6.0: domelementtype "^2.2.0" domhandler "^4.2.0" -electron-to-chromium@^1.3.867: - version "1.3.869" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.869.tgz#c319171803d796639b1af3ddbf07a5a087037ccb" - integrity sha512-mcoyZ2jd691yAx0OHqqGw+aPCcRYVDw/bqPy660aBfcQkUcWcfAVsbL4M9WeevflKH4MfpKCtnOngVLM7HzSzA== +electron-to-chromium@^1.4.84: + version "1.4.89" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz#33c06592812a17a7131873f4596579084ce33ff8" + integrity sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw== emoji-regex@^8.0.0: version "8.0.0" @@ -448,9 +435,9 @@ exec-sh@^0.2.0: merge "^1.2.0" fast-glob@^3.2.5: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -511,15 +498,10 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -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-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" @@ -545,15 +527,10 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - lilconfig@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" - integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lodash.memoize@^4.1.2: version "4.1.2" @@ -594,24 +571,19 @@ micromatch@^4.0.4: picomatch "^2.2.3" minimist@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -nanocolors@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" - integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== +nanoid@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -nanoid@^3.1.28: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -node-releases@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" - integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA== +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== normalize-range@^0.1.2: version "0.1.2" @@ -623,7 +595,7 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -nth-check@^2.0.0: +nth-check@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== @@ -635,7 +607,7 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -path-parse@^1.0.6: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -651,9 +623,9 @@ picocolors@^1.0.0: integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.3.0: version "2.3.0" @@ -668,13 +640,13 @@ postcss-attribute-case-insensitive@^4.0.1: postcss "^7.0.2" postcss-selector-parser "^6.0.2" -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" postcss-color-functional-notation@^2.0.1: version "2.0.1" @@ -718,22 +690,22 @@ postcss-color-rebeccapurple@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-colormin@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" - integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - colord "^2.0.1" - postcss-value-parser "^4.1.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -postcss-convert-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" - integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== +postcss-convert-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" + integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" postcss-custom-media@^7.0.8: version "7.0.8" @@ -766,25 +738,25 @@ postcss-dir-pseudo-class@^5.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" -postcss-discard-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" - integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== -postcss-discard-duplicates@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" - integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" - integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== postcss-double-position-gradients@^1.0.0: version "1.0.0" @@ -877,59 +849,54 @@ postcss-media-minmax@^4.0.0: dependencies: postcss "^7.0.2" -postcss-merge-longhand@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" - integrity sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw== +postcss-merge-longhand@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" + integrity sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w== dependencies: - css-color-names "^1.0.1" - postcss-value-parser "^4.1.0" - stylehacks "^5.0.1" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" -postcss-merge-rules@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" - integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" + cssnano-utils "^3.1.0" postcss-selector-parser "^6.0.5" - vendors "^1.0.3" -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-minify-gradients@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz#7c175c108f06a5629925d698b3c4cf7bd3864ee5" - integrity sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ== - dependencies: - colord "^2.6" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-minify-params@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" - integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== - dependencies: - alphanum-sort "^1.0.2" - browserslist "^4.16.0" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^5.1.0: +postcss-minify-font-values@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" + integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-nesting@^7.0.0: @@ -939,80 +906,76 @@ postcss-nesting@^7.0.0: dependencies: postcss "^7.0.2" -postcss-normalize-charset@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" - integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== +postcss-normalize-positions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" + integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== +postcss-normalize-repeat-style@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" + integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" -postcss-normalize-url@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" - integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ== +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - is-absolute-url "^3.0.3" normalize-url "^6.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" postcss-overflow-shorthand@^2.0.0: version "2.0.0" @@ -1037,9 +1000,9 @@ postcss-place@^4.0.1: 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== + version "6.7.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.1.tgz#26563d2e9395d626a45a836450844540694bfcef" + integrity sha512-rlRkgX9t0v2On33n7TK8pnkcYOATGQSv48J2RS8GsXhqtg+xk6AummHP88Y5mJo0TLJelBjePvSjScTNkj3+qw== dependencies: autoprefixer "^9.6.1" browserslist "^4.6.4" @@ -1087,21 +1050,20 @@ postcss-pseudo-class-any-link@^6.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" -postcss-reduce-initial@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" - integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" @@ -1135,35 +1097,33 @@ 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@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" - integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - postcss-value-parser "^4.1.0" - svgo "^2.3.0" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -postcss-unique-selectors@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" - integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" - uniqs "^2.0.0" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" @@ -1183,13 +1143,13 @@ postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0. source-map "^0.6.1" postcss@^8.2.6: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== + version "8.4.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" + integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" - source-map-js "^0.6.2" + nanoid "^3.3.1" + picocolors "^1.0.0" + source-map-js "^1.0.2" queue-microtask@^1.2.2: version "1.2.3" @@ -1209,12 +1169,13 @@ require-directory@^2.1.1: integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= resolve@^1.1.7: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" reusify@^1.0.4: version "1.0.4" @@ -1240,10 +1201,10 @@ slash@3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map@^0.6.1: version "0.6.1" @@ -1281,12 +1242,12 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -stylehacks@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" - integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" postcss-selector-parser "^6.0.4" supports-color@^7.1.0: @@ -1303,17 +1264,22 @@ supports-color@^8.1.0: dependencies: has-flag "^4.0.0" -svgo@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.7.0.tgz#e164cded22f4408fe4978f082be80159caea1e2d" - integrity sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^4.1.3" css-tree "^1.1.3" csso "^4.2.0" - nanocolors "^0.1.12" + picocolors "^1.0.0" stable "^0.1.8" timsort@^0.3.0: @@ -1343,21 +1309,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= - util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -vendors@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - watch@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/watch/-/watch-1.0.2.tgz#340a717bde765726fa0aa07d721e0147a551df0c" diff --git a/public/js/scripts.min.js b/public/js/scripts.min.js index f6402629..3e9320d7 100644 --- a/public/js/scripts.min.js +++ b/public/js/scripts.min.js @@ -1 +1 @@ -function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _objectSpread(target){for(var i=1;i=0&&m.item(i)!==elm);return i> -1};var AnimeClient={noop:function(){},$:function(selector,param){var context=param===void 0?null:param;if(typeof selector!=='string')return selector;context=context!==null&&context.nodeType===1?context:document;var elements=[];if(selector.match(/^#([\w]+$)/))elements.push(document.getElementById(selector.split('#')[1]));else elements=[].slice.apply(context.querySelectorAll(selector));return elements},hasElement:function(selector){return AnimeClient["$"](selector).length>0},scrollToTop:function(){var el=AnimeClient["$"]('header')[0];el.scrollIntoView(true)},hide:function(sel){if(typeof sel==='string')sel=AnimeClient["$"](sel);if(Array.isArray(sel))sel.forEach(function(el){return el.setAttribute('hidden','hidden')});else sel.setAttribute('hidden','hidden')},show:function(sel){if(typeof sel==='string')sel=AnimeClient["$"](sel);if(Array.isArray(sel))sel.forEach(function(el){return el.removeAttribute('hidden')});else sel.removeAttribute('hidden')},showMessage:function(type,message){var template="
\n\t\t\t\t\n\t\t\t\t").concat(message,"\n\t\t\t\t\n\t\t\t
");var sel=AnimeClient["$"]('.message');if(sel[0]!==undefined)sel[0].remove();AnimeClient["$"]('header')[0].insertAdjacentHTML('beforeend',template)},closestParent:function(current,parentSelector){if(Element.prototype.closest!==undefined)return current.closest(parentSelector);while(current!==document.documentElement){if(matches(current,parentSelector))return current;current=current.parentElement}return null},url:function(path){var uri="//".concat(document.location.host);uri+=path.charAt(0)==='/'?path:"/".concat(path);return uri},throttle:function(interval,fn,scope){var wait=false;return function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var context=scope||this;if(!wait){fn.apply(context,args);wait=true;setTimeout(function(){wait=false},interval)}}}};function addEvent(sel,event,listener){if(!event.match(/^([\w\-]+)$/))event.split(' ').forEach(function(evt){addEvent(sel,evt,listener)});sel.addEventListener(event,listener,false)}function delegateEvent(sel,target,event,listener){addEvent(sel,event,function(e){AnimeClient["$"](target,sel).forEach(function(element){if(e.target==element){listener.call(element,e);e.stopPropagation()}})})}AnimeClient.on=function(sel,event,target,listener){if(listener===undefined){listener=target;AnimeClient["$"](sel).forEach(function(el){addEvent(el,event,listener)})}else AnimeClient["$"](sel).forEach(function(el){delegateEvent(el,target,event,listener)})};function ajaxSerialize(data){var pairs=[];Object.keys(data).forEach(function(name){var value=data[name].toString();name=encodeURIComponent(name);value=encodeURIComponent(value);pairs.push("".concat(name,"=").concat(value))});return pairs.join('&')}AnimeClient.ajax=function(url,config){var defaultConfig={data:{},type:'GET',dataType:'',success:AnimeClient.noop,mimeType:'application/x-www-form-urlencoded',error:AnimeClient.noop};config=_objectSpread({},defaultConfig,config);var request=new XMLHttpRequest();var method=String(config.type).toUpperCase();if(method==='GET')url+=url.match(/\?/)?ajaxSerialize(config.data):"?".concat(ajaxSerialize(config.data));request.open(method,url);request.onreadystatechange=function(){if(request.readyState===4){var responseText='';if(request.responseType==='json')responseText=JSON.parse(request.responseText);else responseText=request.responseText;if(request.status>299)config.error.call(null,request.status,responseText,request.response);else config.success.call(null,responseText,request.status)}};if(config.dataType==='json'){config.data=JSON.stringify(config.data);config.mimeType='application/json'}else config.data=ajaxSerialize(config.data);request.setRequestHeader('Content-Type',config.mimeType);if(method==='GET')request.send(null);else request.send(config.data);return request};AnimeClient.get=function(url,data,param){var callback=param===void 0?null:param;if(callback===null){callback=data;data={}}return AnimeClient.ajax(url,{data:data,success:callback})};AnimeClient.on('header','click','.message',hide);AnimeClient.on('form.js-delete','submit',confirmDelete);AnimeClient.on('.js-clear-cache','click',clearAPICache);AnimeClient.on('.vertical-tabs input','change',scrollToSection);AnimeClient.on('.media-filter','input',filterMedia);function hide(event){AnimeClient.hide(event.target)}function confirmDelete(event){var proceed=confirm('Are you ABSOLUTELY SURE you want to delete this item?');if(proceed===false){event.preventDefault();event.stopPropagation()}}function clearAPICache(){AnimeClient.get('/cache_purge',function(){AnimeClient.showMessage('success','Successfully purged api cache')})}function scrollToSection(event){var el=event.currentTarget.parentElement;var rect=el.getBoundingClientRect();var top=rect.top+window.pageYOffset;window.scrollTo({top:top,behavior:'smooth'})}function filterMedia(event){var rawFilter=event.target.value;var filter=new RegExp(rawFilter,'i');if(rawFilter!==''){AnimeClient["$"]('article.media').forEach(function(article){var titleLink=AnimeClient["$"]('.name a',article)[0];var title=String(titleLink.textContent).trim();if(!filter.test(title))AnimeClient.hide(article);else AnimeClient.show(article)});AnimeClient["$"]('table.media-wrap tbody tr').forEach(function(tr){var titleCell=AnimeClient["$"]('td.align-left',tr)[0];var titleLink=AnimeClient["$"]('a',titleCell)[0];var linkTitle=String(titleLink.textContent).trim();var textTitle=String(titleCell.textContent).trim();if(!(filter.test(linkTitle)||filter.test(textTitle)))AnimeClient.hide(tr);else AnimeClient.show(tr)})}else{AnimeClient.show('article.media');AnimeClient.show('table.media-wrap tbody tr')}}(function(){var hidden=null;var visibilityChange=null;if(typeof document.hidden!=="undefined"){hidden="hidden";visibilityChange="visibilitychange"}else if(typeof document.msHidden!=="undefined"){hidden="msHidden";visibilityChange="msvisibilitychange"}else if(typeof document.webkitHidden!=="undefined"){hidden="webkitHidden";visibilityChange="webkitvisibilitychange"}function handleVisibilityChange(){if(!document[hidden])AnimeClient.get('/heartbeat',function(beat){var status=JSON.parse(beat);if(status.hasAuth!==true){document.removeEventListener(visibilityChange,handleVisibilityChange,false);location.reload()}})}if(hidden===null)console.info('Page visibility API not supported, JS session check will not work');else document.addEventListener(visibilityChange,handleVisibilityChange,false)})();AnimeClient.on('main','change','.big-check',function(e){var id=e.target.id;document.getElementById("mal_".concat(id)).checked=true});function renderEditLink(type,item,param){var isCollection=param===void 0?false:param;if(isCollection||item.libraryEntry===null)return'';return"\n\t\t
\n\t\t\t[ Already in List ]\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\tEdit\n\t\t\t\n\t\t
\n\t\t
 
\n\t")}function renderSearchResults(type,data,param){var isCollection=param===void 0?false:param;return data.map(function(item){var titles=item.titles.join('
');var disabled=item.libraryEntry!==null?'disabled':'';var editLink=renderEditLink(type,item,isCollection);if(isCollection)disabled='';return"\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t").concat(editLink,"\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInfo Page\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t")}).join('')}var search=function(query,param){var isCollection=param===void 0?false:param;AnimeClient.show('.cssload-loader');return AnimeClient.get(AnimeClient.url('/anime-collection/search'),{query:query},function(searchResults,status){searchResults=JSON.parse(searchResults);AnimeClient.hide('.cssload-loader');AnimeClient["$"]('#series-list')[0].innerHTML=renderSearchResults('anime',searchResults,isCollection)})};if(AnimeClient.hasElement('.anime #search')){var prevRequest=null;AnimeClient.on('#search','input',AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==='')return;if(prevRequest!==null)prevRequest.abort();prevRequest=search(query)}))}if(AnimeClient.hasElement('#search-anime-collection')){var prevRequest=null;AnimeClient.on('#search-anime-collection','input',AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==='')return;if(prevRequest!==null)prevRequest.abort();prevRequest=search(query,true)}))}AnimeClient.on('body.anime.list','click','.plus-one',function(e){var parentSel=AnimeClient.closestParent(e.target,'article');var watchedCount=parseInt(AnimeClient["$"]('.completed_number',parentSel)[0].textContent,10)||0;var totalCount=parseInt(AnimeClient["$"]('.total_number',parentSel)[0].textContent,10);var title=AnimeClient["$"]('.name a',parentSel)[0].textContent;var data={id:parentSel.dataset.kitsuId,mal_id:parentSel.dataset.malId,data:{progress:watchedCount+1}};if(isNaN(watchedCount)||watchedCount===0)data.data.status='CURRENT';if(!isNaN(watchedCount)&&watchedCount+1===totalCount)data.data.status='COMPLETED';AnimeClient.show('#loading-shadow');AnimeClient.ajax(AnimeClient.url('/anime/increment'),{data:data,dataType:'json',type:'POST',success:function(res){var resData=JSON.parse(res);if(resData.error){AnimeClient.hide('#loading-shadow');AnimeClient.showMessage('error',"Failed to update ".concat(title,". "));AnimeClient.scrollToTop();return}if(resData.data.libraryEntry.update.libraryEntry.status==='COMPLETED')AnimeClient.hide(parentSel);AnimeClient.hide('#loading-shadow');AnimeClient.showMessage('success',"Successfully updated ".concat(title));AnimeClient["$"]('.completed_number',parentSel)[0].textContent=++watchedCount;AnimeClient.scrollToTop()},error:function(){AnimeClient.hide('#loading-shadow');AnimeClient.showMessage('error',"Failed to update ".concat(title,". "));AnimeClient.scrollToTop()}})});var search1=function(query){AnimeClient.show('.cssload-loader');return AnimeClient.get(AnimeClient.url('/manga/search'),{query:query},function(searchResults,status){searchResults=JSON.parse(searchResults);AnimeClient.hide('.cssload-loader');AnimeClient["$"]('#series-list')[0].innerHTML=renderSearchResults('manga',searchResults)})};if(AnimeClient.hasElement('.manga #search')){var prevRequest=null;AnimeClient.on('#search','input',AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==='')return;if(prevRequest!==null)prevRequest.abort();prevRequest=search1(query)}))}AnimeClient.on('.manga.list','click','.edit-buttons button',function(e){var thisSel=e.target;var parentSel=AnimeClient.closestParent(e.target,'article');var type=thisSel.classList.contains('plus-one-chapter')?'chapter':'volume';var completed=parseInt(AnimeClient["$"](".".concat(type,"s_read"),parentSel)[0].textContent,10)||0;var total=parseInt(AnimeClient["$"](".".concat(type,"_count"),parentSel)[0].textContent,10);var mangaName=AnimeClient["$"]('.name',parentSel)[0].textContent;if(isNaN(completed))completed=0;var data={id:parentSel.dataset.kitsuId,mal_id:parentSel.dataset.malId,data:{progress:completed}};if(isNaN(completed)||completed===0)data.data.status='CURRENT';if(!isNaN(completed)&&completed+1===total)data.data.status='COMPLETED';data.data.progress=++completed;AnimeClient.show('#loading-shadow');AnimeClient.ajax(AnimeClient.url('/manga/increment'),{data:data,dataType:'json',type:'POST',mimeType:'application/json',success:function(res){var resData=JSON.parse(res);if(resData.error){AnimeClient.hide('#loading-shadow');AnimeClient.showMessage('error',"Failed to update ".concat(mangaName,". "));AnimeClient.scrollToTop();return}if(String(data.data.status).toUpperCase()==='COMPLETED')AnimeClient.hide(parentSel);AnimeClient.hide('#loading-shadow');AnimeClient["$"](".".concat(type,"s_read"),parentSel)[0].textContent=String(completed);AnimeClient.showMessage('success',"Successfully updated ".concat(mangaName));AnimeClient.scrollToTop()},error:function(){AnimeClient.hide('#loading-shadow');AnimeClient.showMessage('error',"Failed to update ".concat(mangaName));AnimeClient.scrollToTop()}})}) \ No newline at end of file +function _extends(){_extends=Object.assign||function(target){for(var i=1;i=0&&m.item(i)!==elm);return i> -1};var AnimeClient={noop:function(){},$:function $(selector,context){if(context===void 0)context=null;if(typeof selector!=="string")return selector;context=context!==null&&context.nodeType===1?context:document;var elements=[];if(selector.match(/^#([\w]+$)/))elements.push(document.getElementById(selector.split("#")[1]));else elements=[].slice.apply(context.querySelectorAll(selector));return elements},hasElement:function hasElement(selector){return AnimeClient.$(selector).length>0},scrollToTop:function scrollToTop(){var el=AnimeClient.$("header")[0];el.scrollIntoView(true)},hide:function hide(sel){if(typeof sel==="string")sel=AnimeClient.$(sel);if(Array.isArray(sel))sel.forEach(function(el){return el.setAttribute("hidden","hidden")});else sel.setAttribute("hidden","hidden")},show:function show(sel){if(typeof sel==="string")sel=AnimeClient.$(sel);if(Array.isArray(sel))sel.forEach(function(el){return el.removeAttribute("hidden")});else sel.removeAttribute("hidden")},showMessage:function showMessage(type,message){var template="
\n\t\t\t\t\n\t\t\t\t"+message+"\n\t\t\t\t\n\t\t\t
";var sel=AnimeClient.$(".message");if(sel[0]!==undefined)sel[0].remove();AnimeClient.$("header")[0].insertAdjacentHTML("beforeend",template)},closestParent:function closestParent(current,parentSelector){if(Element.prototype.closest!==undefined)return current.closest(parentSelector);while(current!==document.documentElement){if(matches(current,parentSelector))return current;current=current.parentElement}return null},url:function url(path){var uri="//"+document.location.host;uri+=path.charAt(0)==="/"?path:"/"+path;return uri},throttle:function throttle(interval,fn,scope){var wait=false;return function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var context=scope||this;if(!wait){fn.apply(context,args);wait=true;setTimeout(function(){wait=false},interval)}}}};function addEvent(sel,event,listener){if(!event.match(/^([\w\-]+)$/))event.split(" ").forEach(function(evt){addEvent(sel,evt,listener)});sel.addEventListener(event,listener,false)}function delegateEvent(sel,target,event,listener){addEvent(sel,event,function(e){AnimeClient.$(target,sel).forEach(function(element){if(e.target==element){listener.call(element,e);e.stopPropagation()}})})}AnimeClient.on=function(sel,event,target,listener){if(listener===undefined){listener=target;AnimeClient.$(sel).forEach(function(el){addEvent(el,event,listener)})}else AnimeClient.$(sel).forEach(function(el){delegateEvent(el,target,event,listener)})};function ajaxSerialize(data){var pairs=[];Object.keys(data).forEach(function(name){var value=data[name].toString();name=encodeURIComponent(name);value=encodeURIComponent(value);pairs.push(name+"="+value)});return pairs.join("&")}AnimeClient.ajax=function(url,config){var defaultConfig={data:{},type:"GET",dataType:"",success:AnimeClient.noop,mimeType:"application/x-www-form-urlencoded",error:AnimeClient.noop};config=_extends({},defaultConfig,config);var request=new XMLHttpRequest;var method=String(config.type).toUpperCase();if(method==="GET")url+=url.match(/\?/)?ajaxSerialize(config.data):"?"+ajaxSerialize(config.data);request.open(method,url);request.onreadystatechange=function(){if(request.readyState===4){var responseText="";if(request.responseType==="json")responseText=JSON.parse(request.responseText);else responseText=request.responseText;if(request.status>299)config.error.call(null,request.status,responseText,request.response);else config.success.call(null,responseText,request.status)}};if(config.dataType==="json"){config.data=JSON.stringify(config.data);config.mimeType="application/json"}else config.data=ajaxSerialize(config.data);request.setRequestHeader("Content-Type",config.mimeType);if(method==="GET")request.send(null);else request.send(config.data);return request};AnimeClient.get=function(url,data,callback){if(callback===void 0)callback=null;if(callback===null){callback=data;data={}}return AnimeClient.ajax(url,{data:data,success:callback})};AnimeClient.on("header","click",".message",hide);AnimeClient.on("form.js-delete","submit",confirmDelete);AnimeClient.on(".js-clear-cache","click",clearAPICache);AnimeClient.on(".vertical-tabs input","change",scrollToSection);AnimeClient.on(".media-filter","input",filterMedia);function hide(event){AnimeClient.hide(event.target)}function confirmDelete(event){var proceed=confirm("Are you ABSOLUTELY SURE you want to delete this item?");if(proceed===false){event.preventDefault();event.stopPropagation()}}function clearAPICache(){AnimeClient.get("/cache_purge",function(){AnimeClient.showMessage("success","Successfully purged api cache")})}function scrollToSection(event){var el=event.currentTarget.parentElement;var rect=el.getBoundingClientRect();var top=rect.top+window.pageYOffset;window.scrollTo({top:top,behavior:"smooth"})}function filterMedia(event){var rawFilter=event.target.value;var filter=new RegExp(rawFilter,"i");if(rawFilter!==""){AnimeClient.$("article.media").forEach(function(article){var titleLink=AnimeClient.$(".name a",article)[0];var title=String(titleLink.textContent).trim();if(!filter.test(title))AnimeClient.hide(article);else AnimeClient.show(article)});AnimeClient.$("table.media-wrap tbody tr").forEach(function(tr){var titleCell=AnimeClient.$("td.align-left",tr)[0];var titleLink=AnimeClient.$("a",titleCell)[0];var linkTitle=String(titleLink.textContent).trim();var textTitle=String(titleCell.textContent).trim();if(!(filter.test(linkTitle)||filter.test(textTitle)))AnimeClient.hide(tr);else AnimeClient.show(tr)})}else{AnimeClient.show("article.media");AnimeClient.show("table.media-wrap tbody tr")}}(function(){var hidden=null;var visibilityChange=null;if(typeof document.hidden!=="undefined"){hidden="hidden";visibilityChange="visibilitychange"}else if(typeof document.msHidden!=="undefined"){hidden="msHidden";visibilityChange="msvisibilitychange"}else if(typeof document.webkitHidden!=="undefined"){hidden="webkitHidden";visibilityChange="webkitvisibilitychange"}function handleVisibilityChange(){if(!document[hidden])AnimeClient.get("/heartbeat",function(beat){var status=JSON.parse(beat);if(status.hasAuth!==true){document.removeEventListener(visibilityChange,handleVisibilityChange,false);location.reload()}})}if(hidden===null)console.info("Page visibility API not supported, JS session check will not work");else document.addEventListener(visibilityChange,handleVisibilityChange,false)})();AnimeClient.on("main","change",".big-check",function(e){var id=e.target.id;document.getElementById("mal_"+id).checked=true});function renderEditLink(type,item,isCollection){if(isCollection===void 0)isCollection=false;if(isCollection||item.libraryEntry===null)return"";return'\n\t\t
\n\t\t\t[ Already in List ]\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\tEdit\n\t\t\t\n\t\t
\n\t\t
 
\n\t'}function renderSearchResults(type,data,isCollection){if(isCollection===void 0)isCollection=false;return data.map(function(item){var titles=item.titles.join("
");var disabled=item.libraryEntry!==null?"disabled":"";var editLink=renderEditLink(type,item,isCollection);if(isCollection)disabled="";return'\n\t\t\t\n\t\t'}).join("")}var search=function(query,isCollection){if(isCollection===void 0)isCollection=false;AnimeClient.show(".cssload-loader");return AnimeClient.get(AnimeClient.url("/anime-collection/search"),{query:query},function(searchResults,status){searchResults=JSON.parse(searchResults);AnimeClient.hide(".cssload-loader");AnimeClient.$("#series-list")[0].innerHTML=renderSearchResults("anime",searchResults,isCollection)})};if(AnimeClient.hasElement(".anime #search")){var prevRequest=null;AnimeClient.on("#search","input",AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==="")return;if(prevRequest!==null)prevRequest.abort();prevRequest=search(query)}))}if(AnimeClient.hasElement("#search-anime-collection")){var prevRequest1=null;AnimeClient.on("#search-anime-collection","input",AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==="")return;if(prevRequest1!==null)prevRequest1.abort();prevRequest1=search(query,true)}))}AnimeClient.on("body.anime.list","click",".plus-one",function(e){var parentSel=AnimeClient.closestParent(e.target,"article");var watchedCount=parseInt(AnimeClient.$(".completed_number",parentSel)[0].textContent,10)||0;var totalCount=parseInt(AnimeClient.$(".total_number",parentSel)[0].textContent,10);var title=AnimeClient.$(".name a",parentSel)[0].textContent;var data={id:parentSel.dataset.kitsuId,mal_id:parentSel.dataset.malId,data:{progress:watchedCount+1}};if(isNaN(watchedCount)||watchedCount===0)data.data.status="CURRENT";if(!isNaN(watchedCount)&&watchedCount+1===totalCount)data.data.status="COMPLETED";AnimeClient.show("#loading-shadow");AnimeClient.ajax(AnimeClient.url("/anime/increment"),{data:data,dataType:"json",type:"POST",success:function(res){var resData=JSON.parse(res);if(resData.error){AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("error","Failed to update "+title+". ");AnimeClient.scrollToTop();return}if(resData.data.libraryEntry.update.libraryEntry.status==="COMPLETED"){AnimeClient.hide(parentSel);AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("success","Successfully completed "+title);AnimeClient.scrollToTop();return}AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("success","Successfully updated "+title);AnimeClient.$(".completed_number",parentSel)[0].textContent=++watchedCount;AnimeClient.scrollToTop()},error:function(){AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("error","Failed to update "+title+". ");AnimeClient.scrollToTop()}})});var search1=function(query){AnimeClient.show(".cssload-loader");return AnimeClient.get(AnimeClient.url("/manga/search"),{query:query},function(searchResults,status){searchResults=JSON.parse(searchResults);AnimeClient.hide(".cssload-loader");AnimeClient.$("#series-list")[0].innerHTML=renderSearchResults("manga",searchResults)})};if(AnimeClient.hasElement(".manga #search")){var prevRequest2=null;AnimeClient.on("#search","input",AnimeClient.throttle(250,function(e){var query=encodeURIComponent(e.target.value);if(query==="")return;if(prevRequest2!==null)prevRequest2.abort();prevRequest2=search1(query)}))}AnimeClient.on(".manga.list","click",".edit-buttons button",function(e){var thisSel=e.target;var parentSel=AnimeClient.closestParent(e.target,"article");var type=thisSel.classList.contains("plus-one-chapter")?"chapter":"volume";var completed=parseInt(AnimeClient.$("."+type+"s_read",parentSel)[0].textContent,10)||0;var total=parseInt(AnimeClient.$("."+type+"_count",parentSel)[0].textContent,10);var mangaName=AnimeClient.$(".name",parentSel)[0].textContent;if(isNaN(completed))completed=0;var data={id:parentSel.dataset.kitsuId,mal_id:parentSel.dataset.malId,data:{progress:completed}};if(isNaN(completed)||completed===0)data.data.status="CURRENT";if(!isNaN(completed)&&completed+1===total)data.data.status="COMPLETED";data.data.progress=++completed;AnimeClient.show("#loading-shadow");AnimeClient.ajax(AnimeClient.url("/manga/increment"),{data:data,dataType:"json",type:"POST",mimeType:"application/json",success:function(res){var resData=JSON.parse(res);if(resData.error){AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("error","Failed to update "+mangaName+". ");AnimeClient.scrollToTop();return}if(String(data.data.status).toUpperCase()==="COMPLETED"){AnimeClient.hide(parentSel);AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("success","Successfully completed "+mangaName);AnimeClient.scrollToTop();return}AnimeClient.hide("#loading-shadow");AnimeClient.$("."+type+"s_read",parentSel)[0].textContent=String(completed);AnimeClient.showMessage("success","Successfully updated "+mangaName);AnimeClient.scrollToTop()},error:function(){AnimeClient.hide("#loading-shadow");AnimeClient.showMessage("error","Failed to update "+mangaName);AnimeClient.scrollToTop()}})}) \ No newline at end of file diff --git a/public/js/scripts.min.js.map b/public/js/scripts.min.js.map index 0dfa1275..3f1f80ce 100644 --- a/public/js/scripts.min.js.map +++ b/public/js/scripts.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/sw.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/anime-client.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/events.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/session-check.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/template-helpers.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/anime.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/manga.js"],"sourcesContent":["// Start the service worker, if you can\nif ('serviceWorker' in navigator) {\n\tnavigator.serviceWorker.register('/sw.js').then(reg => {\n\t\tconsole.log('Service worker registered', reg.scope);\n\t}).catch(error => {\n\t\tconsole.error('Failed to register service worker', error);\n\t});\n}","// -------------------------------------------------------------------------\n// ! Base\n// -------------------------------------------------------------------------\n\nconst matches = (elm, selector) => {\n\tlet m = (elm.document || elm.ownerDocument).querySelectorAll(selector);\n\tlet i = matches.length;\n\twhile (--i >= 0 && m.item(i) !== elm) {};\n\treturn i > -1;\n}\n\nconst AnimeClient = {\n\t/**\n\t * Placeholder function\n\t */\n\tnoop: () => {},\n\t/**\n\t * DOM selector\n\t *\n\t * @param {string} selector - The dom selector string\n\t * @param {Element} [context]\n\t * @return array of dom elements\n\t */\n\t$(selector, context = null) {\n\t\tif (typeof selector !== 'string') {\n\t\t\treturn selector;\n\t\t}\n\n\t\tcontext = (context !== null && context.nodeType === 1)\n\t\t\t? context\n\t\t\t: document;\n\n\t\tlet elements = [];\n\t\tif (selector.match(/^#([\\w]+$)/)) {\n\t\t\telements.push(document.getElementById(selector.split('#')[1]));\n\t\t} else {\n\t\t\telements = [].slice.apply(context.querySelectorAll(selector));\n\t\t}\n\n\t\treturn elements;\n\t},\n\t/**\n\t * Does the selector exist on the current page?\n\t *\n\t * @param {string} selector\n\t * @returns {boolean}\n\t */\n\thasElement (selector) {\n\t\treturn AnimeClient.$(selector).length > 0;\n\t},\n\t/**\n\t * Scroll to the top of the Page\n\t *\n\t * @return {void}\n\t */\n\tscrollToTop () {\n\t\tconst el = AnimeClient.$('header')[0];\n\t\tel.scrollIntoView(true);\n\t},\n\t/**\n\t * Hide the selected element\n\t *\n\t * @param {string|Element|Element[]} sel - the selector of the element to hide\n\t * @return {void}\n\t */\n\thide (sel) {\n\t\tif (typeof sel === 'string') {\n\t\t\tsel = AnimeClient.$(sel);\n\t\t}\n\n\t\tif (Array.isArray(sel)) {\n\t\t\tsel.forEach(el => el.setAttribute('hidden', 'hidden'));\n\t\t} else {\n\t\t\tsel.setAttribute('hidden', 'hidden');\n\t\t}\n\t},\n\t/**\n\t * UnHide the selected element\n\t *\n\t * @param {string|Element|Element[]} sel - the selector of the element to hide\n\t * @return {void}\n\t */\n\tshow (sel) {\n\t\tif (typeof sel === 'string') {\n\t\t\tsel = AnimeClient.$(sel);\n\t\t}\n\n\t\tif (Array.isArray(sel)) {\n\t\t\tsel.forEach(el => el.removeAttribute('hidden'));\n\t\t} else {\n\t\t\tsel.removeAttribute('hidden');\n\t\t}\n\t},\n\t/**\n\t * Display a message box\n\t *\n\t * @param {string} type - message type: info, error, success\n\t * @param {string} message - the message itself\n\t * @return {void}\n\t */\n\tshowMessage (type, message) {\n\t\tlet template =\n\t\t\t`
\n\t\t\t\t\n\t\t\t\t${message}\n\t\t\t\t\n\t\t\t
`;\n\n\t\tlet sel = AnimeClient.$('.message');\n\t\tif (sel[0] !== undefined) {\n\t\t\tsel[0].remove();\n\t\t}\n\n\t\tAnimeClient.$('header')[0].insertAdjacentHTML('beforeend', template);\n\t},\n\t/**\n\t * Finds the closest parent element matching the passed selector\n\t *\n\t * @param {Element} current - the current Element\n\t * @param {string} parentSelector - selector for the parent element\n\t * @return {Element|null} - the parent element\n\t */\n\tclosestParent (current, parentSelector) {\n\t\tif (Element.prototype.closest !== undefined) {\n\t\t\treturn current.closest(parentSelector);\n\t\t}\n\n\t\twhile (current !== document.documentElement) {\n\t\t\tif (matches(current, parentSelector)) {\n\t\t\t\treturn current;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\n\t\treturn null;\n\t},\n\t/**\n\t * Generate a full url from a relative path\n\t *\n\t * @param {string} path - url path\n\t * @return {string} - full url\n\t */\n\turl (path) {\n\t\tlet uri = `//${document.location.host}`;\n\t\turi += (path.charAt(0) === '/') ? path : `/${path}`;\n\n\t\treturn uri;\n\t},\n\t/**\n\t * Throttle execution of a function\n\t *\n\t * @see https://remysharp.com/2010/07/21/throttling-function-calls\n\t * @see https://jsfiddle.net/jonathansampson/m7G64/\n\t * @param {Number} interval - the minimum throttle time in ms\n\t * @param {Function} fn - the function to throttle\n\t * @param {Object} [scope] - the 'this' object for the function\n\t * @return {Function}\n\t */\n\tthrottle (interval, fn, scope) {\n\t\tlet wait = false;\n\t\treturn function (...args) {\n\t\t\tconst context = scope || this;\n\n\t\t\tif ( ! wait) {\n\t\t\t\tfn.apply(context, args);\n\t\t\t\twait = true;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\twait = false;\n\t\t\t\t}, interval);\n\t\t\t}\n\t\t};\n\t},\n};\n\n// -------------------------------------------------------------------------\n// ! Events\n// -------------------------------------------------------------------------\n\nfunction addEvent(sel, event, listener) {\n\t// Recurse!\n\tif (! event.match(/^([\\w\\-]+)$/)) {\n\t\tevent.split(' ').forEach((evt) => {\n\t\t\taddEvent(sel, evt, listener);\n\t\t});\n\t}\n\n\tsel.addEventListener(event, listener, false);\n}\n\nfunction delegateEvent(sel, target, event, listener) {\n\t// Attach the listener to the parent\n\taddEvent(sel, event, (e) => {\n\t\t// Get live version of the target selector\n\t\tAnimeClient.$(target, sel).forEach((element) => {\n\t\t\tif(e.target == element) {\n\t\t\t\tlistener.call(element, e);\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Add an event listener\n *\n * @param {string|Element} sel - the parent selector to bind to\n * @param {string} event - event name(s) to bind\n * @param {string|Element|function} target - the element to directly bind the event to\n * @param {function} [listener] - event listener callback\n * @return {void}\n */\nAnimeClient.on = (sel, event, target, listener) => {\n\tif (listener === undefined) {\n\t\tlistener = target;\n\t\tAnimeClient.$(sel).forEach((el) => {\n\t\t\taddEvent(el, event, listener);\n\t\t});\n\t} else {\n\t\tAnimeClient.$(sel).forEach((el) => {\n\t\t\tdelegateEvent(el, target, event, listener);\n\t\t});\n\t}\n};\n\n// -------------------------------------------------------------------------\n// ! Ajax\n// -------------------------------------------------------------------------\n\n/**\n * Url encoding for non-get requests\n *\n * @param data\n * @returns {string}\n * @private\n */\nfunction ajaxSerialize(data) {\n\tlet pairs = [];\n\n\tObject.keys(data).forEach((name) => {\n\t\tlet value = data[name].toString();\n\n\t\tname = encodeURIComponent(name);\n\t\tvalue = encodeURIComponent(value);\n\n\t\tpairs.push(`${name}=${value}`);\n\t});\n\n\treturn pairs.join('&');\n}\n\n/**\n * Make an ajax request\n *\n * Config:{\n * \tdata: // data to send with the request\n * \ttype: // http verb of the request, defaults to GET\n * \tsuccess: // success callback\n * \terror: // error callback\n * }\n *\n * @param {string} url - the url to request\n * @param {Object} config - the configuration object\n * @return {XMLHttpRequest}\n */\nAnimeClient.ajax = (url, config) => {\n\t// Set some sane defaults\n\tconst defaultConfig = {\n\t\tdata: {},\n\t\ttype: 'GET',\n\t\tdataType: '',\n\t\tsuccess: AnimeClient.noop,\n\t\tmimeType: 'application/x-www-form-urlencoded',\n\t\terror: AnimeClient.noop\n\t}\n\n\tconfig = {\n\t\t...defaultConfig,\n\t\t...config,\n\t}\n\n\tlet request = new XMLHttpRequest();\n\tlet method = String(config.type).toUpperCase();\n\n\tif (method === 'GET') {\n\t\turl += (url.match(/\\?/))\n\t\t\t? ajaxSerialize(config.data)\n\t\t\t: `?${ajaxSerialize(config.data)}`;\n\t}\n\n\trequest.open(method, url);\n\n\trequest.onreadystatechange = () => {\n\t\tif (request.readyState === 4) {\n\t\t\tlet responseText = '';\n\n\t\t\tif (request.responseType === 'json') {\n\t\t\t\tresponseText = JSON.parse(request.responseText);\n\t\t\t} else {\n\t\t\t\tresponseText = request.responseText;\n\t\t\t}\n\n\t\t\tif (request.status > 299) {\n\t\t\t\tconfig.error.call(null, request.status, responseText, request.response);\n\t\t\t} else {\n\t\t\t\tconfig.success.call(null, responseText, request.status);\n\t\t\t}\n\t\t}\n\t};\n\n\tif (config.dataType === 'json') {\n\t\tconfig.data = JSON.stringify(config.data);\n\t\tconfig.mimeType = 'application/json';\n\t} else {\n\t\tconfig.data = ajaxSerialize(config.data);\n\t}\n\n\trequest.setRequestHeader('Content-Type', config.mimeType);\n\n\tif (method === 'GET') {\n\t\trequest.send(null);\n\t} else {\n\t\trequest.send(config.data);\n\t}\n\n\treturn request\n};\n\n/**\n * Do a get request\n *\n * @param {string} url\n * @param {object|function} data\n * @param {function} [callback]\n * @return {XMLHttpRequest}\n */\nAnimeClient.get = (url, data, callback = null) => {\n\tif (callback === null) {\n\t\tcallback = data;\n\t\tdata = {};\n\t}\n\n\treturn AnimeClient.ajax(url, {\n\t\tdata,\n\t\tsuccess: callback\n\t});\n};\n\n// -------------------------------------------------------------------------\n// Export\n// -------------------------------------------------------------------------\n\nexport default AnimeClient;","import _ from './anime-client.js';\n\n// ----------------------------------------------------------------------------\n// Event subscriptions\n// ----------------------------------------------------------------------------\n_.on('header', 'click', '.message', hide);\n_.on('form.js-delete', 'submit', confirmDelete);\n_.on('.js-clear-cache', 'click', clearAPICache);\n_.on('.vertical-tabs input', 'change', scrollToSection);\n_.on('.media-filter', 'input', filterMedia);\n\n// ----------------------------------------------------------------------------\n// Handler functions\n// ----------------------------------------------------------------------------\n\n/**\n * Hide the html element attached to the event\n *\n * @param {MouseEvent} event\n * @return void\n */\nfunction hide (event) {\n\t_.hide(event.target)\n}\n\n/**\n * Confirm deletion of an item\n *\n * @param {MouseEvent} event\n * @return void\n */\nfunction confirmDelete (event) {\n\tconst proceed = confirm('Are you ABSOLUTELY SURE you want to delete this item?');\n\n\tif (proceed === false) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n}\n\n/**\n * Clear the API cache, and show a message if the cache is cleared\n *\n * @return void\n */\nfunction clearAPICache () {\n\t_.get('/cache_purge', () => {\n\t\t_.showMessage('success', 'Successfully purged api cache');\n\t});\n}\n\n/**\n * Scroll to the accordion/vertical tab section just opened\n *\n * @param {InputEvent} event\n * @return void\n */\nfunction scrollToSection (event) {\n\tconst el = event.currentTarget.parentElement;\n\tconst rect = el.getBoundingClientRect();\n\n\tconst top = rect.top + window.pageYOffset;\n\n\twindow.scrollTo({\n\t\ttop,\n\t\tbehavior: 'smooth',\n\t});\n}\n\n/**\n * Filter an anime or manga list\n *\n * @param {InputEvent} event\n * @return void\n */\nfunction filterMedia (event) {\n\tconst rawFilter = event.target.value;\n\tconst filter = new RegExp(rawFilter, 'i');\n\n\t// console.log('Filtering items by: ', filter);\n\n\tif (rawFilter !== '') {\n\t\t// Filter the cover view\n\t\t_.$('article.media').forEach(article => {\n\t\t\tconst titleLink = _.$('.name a', article)[0];\n\t\t\tconst title = String(titleLink.textContent).trim();\n\t\t\tif ( ! filter.test(title)) {\n\t\t\t\t_.hide(article);\n\t\t\t} else {\n\t\t\t\t_.show(article);\n\t\t\t}\n\t\t});\n\n\t\t// Filter the list view\n\t\t_.$('table.media-wrap tbody tr').forEach(tr => {\n\t\t\tconst titleCell = _.$('td.align-left', tr)[0];\n\t\t\tconst titleLink = _.$('a', titleCell)[0];\n\t\t\tconst linkTitle = String(titleLink.textContent).trim();\n\t\t\tconst textTitle = String(titleCell.textContent).trim();\n\t\t\tif ( ! (filter.test(linkTitle) || filter.test(textTitle))) {\n\t\t\t\t_.hide(tr);\n\t\t\t} else {\n\t\t\t\t_.show(tr);\n\t\t\t}\n\t\t});\n\t} else {\n\t\t_.show('article.media');\n\t\t_.show('table.media-wrap tbody tr');\n\t}\n}\n","import _ from './anime-client.js';\n\n(() => {\n\tlet hidden = null;\n\tlet visibilityChange = null;\n\n\tif (typeof document.hidden !== \"undefined\") {\n\t\thidden = \"hidden\";\n\t\tvisibilityChange = \"visibilitychange\";\n\t} else if (typeof document.msHidden !== \"undefined\") {\n\t\thidden = \"msHidden\";\n\t\tvisibilityChange = \"msvisibilitychange\";\n\t} else if (typeof document.webkitHidden !== \"undefined\") {\n\t\thidden = \"webkitHidden\";\n\t\tvisibilityChange = \"webkitvisibilitychange\";\n\t}\n\n\tfunction handleVisibilityChange() {\n\t\t// Check the user's session to see if they are currently logged-in\n\t\t// when the page becomes visible\n\t\tif ( ! document[hidden]) {\n\t\t\t_.get('/heartbeat', (beat) => {\n\t\t\t\tconst status = JSON.parse(beat)\n\n\t\t\t\t// If the session is expired, immediately reload so that\n\t\t\t\t// you can't attempt to do an action that requires authentication\n\t\t\t\tif (status.hasAuth !== true) {\n\t\t\t\t\tdocument.removeEventListener(visibilityChange, handleVisibilityChange, false);\n\t\t\t\t\tlocation.reload();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tif (hidden === null) {\n\t\tconsole.info('Page visibility API not supported, JS session check will not work');\n\t} else {\n\t\tdocument.addEventListener(visibilityChange, handleVisibilityChange, false);\n\t}\n})();","import _ from './anime-client.js';\n\n// Click on hidden MAL checkbox so\n// that MAL id is passed\n_.on('main', 'change', '.big-check', (e) => {\n\tconst id = e.target.id;\n\tdocument.getElementById(`mal_${id}`).checked = true;\n});\n\n/**\n * On search results with an existing library entry, this shows that fact, with an edit link for the existing\n * library entry\n *\n * @param {'anime'|'manga'} type\n * @param {Object} item\n * @param isCollection\n * @returns {String}\n */\nfunction renderEditLink (type, item, isCollection = false) {\n\tif (isCollection || item.libraryEntry === null) {\n\t\treturn '';\n\t}\n\n\treturn `\n\t\t
\n\t\t\t[ Already in List ]\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\tEdit\n\t\t\t\n\t\t
\n\t\t
 
\n\t`\n}\n\n/**\n * Show the search results for a media item\n *\n * @param {'anime'|'manga'} type\n * @param {Object} data\n * @param {boolean} isCollection\n * @returns {String}\n */\nexport function renderSearchResults (type, data, isCollection = false) {\n\treturn data.map(item => {\n\t\tconst titles = item.titles.join('
');\n\t\tlet disabled = item.libraryEntry !== null ? 'disabled' : '';\n\t\tconst editLink = renderEditLink(type, item, isCollection);\n\n\t\tif (isCollection) {\n\t\t\tdisabled = '';\n\t\t}\n\n\t\treturn `\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t${editLink}\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInfo Page\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t`;\n\t}).join('');\n}","import _ from './anime-client.js'\nimport { renderSearchResults } from './template-helpers.js'\n\nconst search = (query, isCollection = false) => {\n\t// Show the loader\n\t_.show('.cssload-loader');\n\n\t// Do the api search\n\treturn _.get(_.url('/anime-collection/search'), { query }, (searchResults, status) => {\n\t\tsearchResults = JSON.parse(searchResults);\n\n\t\t// Hide the loader\n\t\t_.hide('.cssload-loader');\n\n\t\t// Show the results\n\t\t_.$('#series-list')[ 0 ].innerHTML = renderSearchResults('anime', searchResults, isCollection);\n\t});\n};\n\n// Anime list search\nif (_.hasElement('.anime #search')) {\n\tlet prevRequest = null;\n\n\t_.on('#search', 'input', _.throttle(250, (e) => {\n\t\tconst query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query);\n\t}));\n}\n\n// Anime collection search\nif (_.hasElement('#search-anime-collection')) {\n\tlet prevRequest = null;\n\n\t_.on('#search-anime-collection', 'input', _.throttle(250, (e) => {\n\t\tconst query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query, true);\n\t}));\n}\n\n// Action to increment episode count\n_.on('body.anime.list', 'click', '.plus-one', (e) => {\n\tlet parentSel = _.closestParent(e.target, 'article');\n\tlet watchedCount = parseInt(_.$('.completed_number', parentSel)[ 0 ].textContent, 10) || 0;\n\tlet totalCount = parseInt(_.$('.total_number', parentSel)[ 0 ].textContent, 10);\n\tlet title = _.$('.name a', parentSel)[ 0 ].textContent;\n\n\t// Setup the update data\n\tlet data = {\n\t\tid: parentSel.dataset.kitsuId,\n\t\tmal_id: parentSel.dataset.malId,\n\t\tdata: {\n\t\t\tprogress: watchedCount + 1\n\t\t}\n\t};\n\n\t// If the episode count is 0, and incremented,\n\t// change status to currently watching\n\tif (isNaN(watchedCount) || watchedCount === 0) {\n\t\tdata.data.status = 'CURRENT';\n\t}\n\n\t// If you increment at the last episode, mark as completed\n\tif ((!isNaN(watchedCount)) && (watchedCount + 1) === totalCount) {\n\t\tdata.data.status = 'COMPLETED';\n\t}\n\n\t_.show('#loading-shadow');\n\n\t// okay, lets actually make some changes!\n\t_.ajax(_.url('/anime/increment'), {\n\t\tdata,\n\t\tdataType: 'json',\n\t\ttype: 'POST',\n\t\tsuccess: (res) => {\n\t\t\tconst resData = JSON.parse(res);\n\n\t\t\tif (resData.error) {\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('error', `Failed to update ${title}. `);\n\t\t\t\t_.scrollToTop();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (resData.data.libraryEntry.update.libraryEntry.status === 'COMPLETED') {\n\t\t\t\t_.hide(parentSel);\n\t\t\t}\n\n\t\t\t_.hide('#loading-shadow');\n\n\t\t\t_.showMessage('success', `Successfully updated ${title}`);\n\t\t\t_.$('.completed_number', parentSel)[ 0 ].textContent = ++watchedCount;\n\t\t\t_.scrollToTop();\n\t\t},\n\t\terror: () => {\n\t\t\t_.hide('#loading-shadow');\n\t\t\t_.showMessage('error', `Failed to update ${title}. `);\n\t\t\t_.scrollToTop();\n\t\t}\n\t});\n});","import _ from './anime-client.js'\nimport { renderSearchResults } from './template-helpers.js'\n\nconst search = (query) => {\n\t_.show('.cssload-loader');\n\treturn _.get(_.url('/manga/search'), { query }, (searchResults, status) => {\n\t\tsearchResults = JSON.parse(searchResults);\n\t\t_.hide('.cssload-loader');\n\t\t_.$('#series-list')[ 0 ].innerHTML = renderSearchResults('manga', searchResults);\n\t});\n};\n\nif (_.hasElement('.manga #search')) {\n\tlet prevRequest = null\n\n\t_.on('#search', 'input', _.throttle(250, (e) => {\n\t\tlet query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query);\n\t}));\n}\n\n/**\n * Javascript for editing manga, if logged in\n */\n_.on('.manga.list', 'click', '.edit-buttons button', (e) => {\n\tlet thisSel = e.target;\n\tlet parentSel = _.closestParent(e.target, 'article');\n\tlet type = thisSel.classList.contains('plus-one-chapter') ? 'chapter' : 'volume';\n\tlet completed = parseInt(_.$(`.${type}s_read`, parentSel)[ 0 ].textContent, 10) || 0;\n\tlet total = parseInt(_.$(`.${type}_count`, parentSel)[ 0 ].textContent, 10);\n\tlet mangaName = _.$('.name', parentSel)[ 0 ].textContent;\n\n\tif (isNaN(completed)) {\n\t\tcompleted = 0;\n\t}\n\n\t// Setup the update data\n\tlet data = {\n\t\tid: parentSel.dataset.kitsuId,\n\t\tmal_id: parentSel.dataset.malId,\n\t\tdata: {\n\t\t\tprogress: completed\n\t\t}\n\t};\n\n\t// If the episode count is 0, and incremented,\n\t// change status to currently reading\n\tif (isNaN(completed) || completed === 0) {\n\t\tdata.data.status = 'CURRENT';\n\t}\n\n\t// If you increment at the last chapter, mark as completed\n\tif ((!isNaN(completed)) && (completed + 1) === total) {\n\t\tdata.data.status = 'COMPLETED';\n\t}\n\n\t// Update the total count\n\tdata.data.progress = ++completed;\n\n\t_.show('#loading-shadow');\n\n\t_.ajax(_.url('/manga/increment'), {\n\t\tdata,\n\t\tdataType: 'json',\n\t\ttype: 'POST',\n\t\tmimeType: 'application/json',\n\t\tsuccess: (res) => {\n\t\t\tconst resData = JSON.parse(res)\n\t\t\tif (resData.error) {\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('error', `Failed to update ${mangaName}. `);\n\t\t\t\t_.scrollToTop();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (String(data.data.status).toUpperCase() === 'COMPLETED') {\n\t\t\t\t_.hide(parentSel);\n\t\t\t}\n\n\t\t\t_.hide('#loading-shadow');\n\n\t\t\t_.$(`.${type}s_read`, parentSel)[ 0 ].textContent = String(completed);\n\t\t\t_.showMessage('success', `Successfully updated ${mangaName}`);\n\t\t\t_.scrollToTop();\n\t\t},\n\t\terror: () => {\n\t\t\t_.hide('#loading-shadow');\n\t\t\t_.showMessage('error', `Failed to update ${mangaName}`);\n\t\t\t_.scrollToTop();\n\t\t}\n\t});\n});"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/sw.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/anime-client.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/events.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/session-check.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/template-helpers.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/anime.js","/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/manga.js"],"sourcesContent":["// Start the service worker, if you can\nif ('serviceWorker' in navigator) {\n\tnavigator.serviceWorker.register('/sw.js').then(reg => {\n\t\tconsole.log('Service worker registered', reg.scope);\n\t}).catch(error => {\n\t\tconsole.error('Failed to register service worker', error);\n\t});\n}","// -------------------------------------------------------------------------\n// ! Base\n// -------------------------------------------------------------------------\n\nconst matches = (elm, selector) => {\n\tlet m = (elm.document || elm.ownerDocument).querySelectorAll(selector);\n\tlet i = matches.length;\n\twhile (--i >= 0 && m.item(i) !== elm) {};\n\treturn i > -1;\n}\n\nconst AnimeClient = {\n\t/**\n\t * Placeholder function\n\t */\n\tnoop: () => {},\n\t/**\n\t * DOM selector\n\t *\n\t * @param {string} selector - The dom selector string\n\t * @param {Element} [context]\n\t * @return array of dom elements\n\t */\n\t$(selector, context = null) {\n\t\tif (typeof selector !== 'string') {\n\t\t\treturn selector;\n\t\t}\n\n\t\tcontext = (context !== null && context.nodeType === 1)\n\t\t\t? context\n\t\t\t: document;\n\n\t\tlet elements = [];\n\t\tif (selector.match(/^#([\\w]+$)/)) {\n\t\t\telements.push(document.getElementById(selector.split('#')[1]));\n\t\t} else {\n\t\t\telements = [].slice.apply(context.querySelectorAll(selector));\n\t\t}\n\n\t\treturn elements;\n\t},\n\t/**\n\t * Does the selector exist on the current page?\n\t *\n\t * @param {string} selector\n\t * @returns {boolean}\n\t */\n\thasElement (selector) {\n\t\treturn AnimeClient.$(selector).length > 0;\n\t},\n\t/**\n\t * Scroll to the top of the Page\n\t *\n\t * @return {void}\n\t */\n\tscrollToTop () {\n\t\tconst el = AnimeClient.$('header')[0];\n\t\tel.scrollIntoView(true);\n\t},\n\t/**\n\t * Hide the selected element\n\t *\n\t * @param {string|Element|Element[]} sel - the selector of the element to hide\n\t * @return {void}\n\t */\n\thide (sel) {\n\t\tif (typeof sel === 'string') {\n\t\t\tsel = AnimeClient.$(sel);\n\t\t}\n\n\t\tif (Array.isArray(sel)) {\n\t\t\tsel.forEach(el => el.setAttribute('hidden', 'hidden'));\n\t\t} else {\n\t\t\tsel.setAttribute('hidden', 'hidden');\n\t\t}\n\t},\n\t/**\n\t * UnHide the selected element\n\t *\n\t * @param {string|Element|Element[]} sel - the selector of the element to hide\n\t * @return {void}\n\t */\n\tshow (sel) {\n\t\tif (typeof sel === 'string') {\n\t\t\tsel = AnimeClient.$(sel);\n\t\t}\n\n\t\tif (Array.isArray(sel)) {\n\t\t\tsel.forEach(el => el.removeAttribute('hidden'));\n\t\t} else {\n\t\t\tsel.removeAttribute('hidden');\n\t\t}\n\t},\n\t/**\n\t * Display a message box\n\t *\n\t * @param {string} type - message type: info, error, success\n\t * @param {string} message - the message itself\n\t * @return {void}\n\t */\n\tshowMessage (type, message) {\n\t\tlet template =\n\t\t\t`
\n\t\t\t\t\n\t\t\t\t${message}\n\t\t\t\t\n\t\t\t
`;\n\n\t\tlet sel = AnimeClient.$('.message');\n\t\tif (sel[0] !== undefined) {\n\t\t\tsel[0].remove();\n\t\t}\n\n\t\tAnimeClient.$('header')[0].insertAdjacentHTML('beforeend', template);\n\t},\n\t/**\n\t * Finds the closest parent element matching the passed selector\n\t *\n\t * @param {Element} current - the current Element\n\t * @param {string} parentSelector - selector for the parent element\n\t * @return {Element|null} - the parent element\n\t */\n\tclosestParent (current, parentSelector) {\n\t\tif (Element.prototype.closest !== undefined) {\n\t\t\treturn current.closest(parentSelector);\n\t\t}\n\n\t\twhile (current !== document.documentElement) {\n\t\t\tif (matches(current, parentSelector)) {\n\t\t\t\treturn current;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\n\t\treturn null;\n\t},\n\t/**\n\t * Generate a full url from a relative path\n\t *\n\t * @param {string} path - url path\n\t * @return {string} - full url\n\t */\n\turl (path) {\n\t\tlet uri = `//${document.location.host}`;\n\t\turi += (path.charAt(0) === '/') ? path : `/${path}`;\n\n\t\treturn uri;\n\t},\n\t/**\n\t * Throttle execution of a function\n\t *\n\t * @see https://remysharp.com/2010/07/21/throttling-function-calls\n\t * @see https://jsfiddle.net/jonathansampson/m7G64/\n\t * @param {Number} interval - the minimum throttle time in ms\n\t * @param {Function} fn - the function to throttle\n\t * @param {Object} [scope] - the 'this' object for the function\n\t * @return {Function}\n\t */\n\tthrottle (interval, fn, scope) {\n\t\tlet wait = false;\n\t\treturn function (...args) {\n\t\t\tconst context = scope || this;\n\n\t\t\tif ( ! wait) {\n\t\t\t\tfn.apply(context, args);\n\t\t\t\twait = true;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\twait = false;\n\t\t\t\t}, interval);\n\t\t\t}\n\t\t};\n\t},\n};\n\n// -------------------------------------------------------------------------\n// ! Events\n// -------------------------------------------------------------------------\n\nfunction addEvent(sel, event, listener) {\n\t// Recurse!\n\tif (! event.match(/^([\\w\\-]+)$/)) {\n\t\tevent.split(' ').forEach((evt) => {\n\t\t\taddEvent(sel, evt, listener);\n\t\t});\n\t}\n\n\tsel.addEventListener(event, listener, false);\n}\n\nfunction delegateEvent(sel, target, event, listener) {\n\t// Attach the listener to the parent\n\taddEvent(sel, event, (e) => {\n\t\t// Get live version of the target selector\n\t\tAnimeClient.$(target, sel).forEach((element) => {\n\t\t\tif(e.target == element) {\n\t\t\t\tlistener.call(element, e);\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Add an event listener\n *\n * @param {string|Element} sel - the parent selector to bind to\n * @param {string} event - event name(s) to bind\n * @param {string|Element|function} target - the element to directly bind the event to\n * @param {function} [listener] - event listener callback\n * @return {void}\n */\nAnimeClient.on = (sel, event, target, listener) => {\n\tif (listener === undefined) {\n\t\tlistener = target;\n\t\tAnimeClient.$(sel).forEach((el) => {\n\t\t\taddEvent(el, event, listener);\n\t\t});\n\t} else {\n\t\tAnimeClient.$(sel).forEach((el) => {\n\t\t\tdelegateEvent(el, target, event, listener);\n\t\t});\n\t}\n};\n\n// -------------------------------------------------------------------------\n// ! Ajax\n// -------------------------------------------------------------------------\n\n/**\n * Url encoding for non-get requests\n *\n * @param data\n * @returns {string}\n * @private\n */\nfunction ajaxSerialize(data) {\n\tlet pairs = [];\n\n\tObject.keys(data).forEach((name) => {\n\t\tlet value = data[name].toString();\n\n\t\tname = encodeURIComponent(name);\n\t\tvalue = encodeURIComponent(value);\n\n\t\tpairs.push(`${name}=${value}`);\n\t});\n\n\treturn pairs.join('&');\n}\n\n/**\n * Make an ajax request\n *\n * Config:{\n * \tdata: // data to send with the request\n * \ttype: // http verb of the request, defaults to GET\n * \tsuccess: // success callback\n * \terror: // error callback\n * }\n *\n * @param {string} url - the url to request\n * @param {Object} config - the configuration object\n * @return {XMLHttpRequest}\n */\nAnimeClient.ajax = (url, config) => {\n\t// Set some sane defaults\n\tconst defaultConfig = {\n\t\tdata: {},\n\t\ttype: 'GET',\n\t\tdataType: '',\n\t\tsuccess: AnimeClient.noop,\n\t\tmimeType: 'application/x-www-form-urlencoded',\n\t\terror: AnimeClient.noop\n\t}\n\n\tconfig = {\n\t\t...defaultConfig,\n\t\t...config,\n\t}\n\n\tlet request = new XMLHttpRequest();\n\tlet method = String(config.type).toUpperCase();\n\n\tif (method === 'GET') {\n\t\turl += (url.match(/\\?/))\n\t\t\t? ajaxSerialize(config.data)\n\t\t\t: `?${ajaxSerialize(config.data)}`;\n\t}\n\n\trequest.open(method, url);\n\n\trequest.onreadystatechange = () => {\n\t\tif (request.readyState === 4) {\n\t\t\tlet responseText = '';\n\n\t\t\tif (request.responseType === 'json') {\n\t\t\t\tresponseText = JSON.parse(request.responseText);\n\t\t\t} else {\n\t\t\t\tresponseText = request.responseText;\n\t\t\t}\n\n\t\t\tif (request.status > 299) {\n\t\t\t\tconfig.error.call(null, request.status, responseText, request.response);\n\t\t\t} else {\n\t\t\t\tconfig.success.call(null, responseText, request.status);\n\t\t\t}\n\t\t}\n\t};\n\n\tif (config.dataType === 'json') {\n\t\tconfig.data = JSON.stringify(config.data);\n\t\tconfig.mimeType = 'application/json';\n\t} else {\n\t\tconfig.data = ajaxSerialize(config.data);\n\t}\n\n\trequest.setRequestHeader('Content-Type', config.mimeType);\n\n\tif (method === 'GET') {\n\t\trequest.send(null);\n\t} else {\n\t\trequest.send(config.data);\n\t}\n\n\treturn request\n};\n\n/**\n * Do a get request\n *\n * @param {string} url\n * @param {object|function} data\n * @param {function} [callback]\n * @return {XMLHttpRequest}\n */\nAnimeClient.get = (url, data, callback = null) => {\n\tif (callback === null) {\n\t\tcallback = data;\n\t\tdata = {};\n\t}\n\n\treturn AnimeClient.ajax(url, {\n\t\tdata,\n\t\tsuccess: callback\n\t});\n};\n\n// -------------------------------------------------------------------------\n// Export\n// -------------------------------------------------------------------------\n\nexport default AnimeClient;","import _ from './anime-client.js';\n\n// ----------------------------------------------------------------------------\n// Event subscriptions\n// ----------------------------------------------------------------------------\n_.on('header', 'click', '.message', hide);\n_.on('form.js-delete', 'submit', confirmDelete);\n_.on('.js-clear-cache', 'click', clearAPICache);\n_.on('.vertical-tabs input', 'change', scrollToSection);\n_.on('.media-filter', 'input', filterMedia);\n\n// ----------------------------------------------------------------------------\n// Handler functions\n// ----------------------------------------------------------------------------\n\n/**\n * Hide the html element attached to the event\n *\n * @param {MouseEvent} event\n * @return void\n */\nfunction hide (event) {\n\t_.hide(event.target)\n}\n\n/**\n * Confirm deletion of an item\n *\n * @param {MouseEvent} event\n * @return void\n */\nfunction confirmDelete (event) {\n\tconst proceed = confirm('Are you ABSOLUTELY SURE you want to delete this item?');\n\n\tif (proceed === false) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n}\n\n/**\n * Clear the API cache, and show a message if the cache is cleared\n *\n * @return void\n */\nfunction clearAPICache () {\n\t_.get('/cache_purge', () => {\n\t\t_.showMessage('success', 'Successfully purged api cache');\n\t});\n}\n\n/**\n * Scroll to the accordion/vertical tab section just opened\n *\n * @param {InputEvent} event\n * @return void\n */\nfunction scrollToSection (event) {\n\tconst el = event.currentTarget.parentElement;\n\tconst rect = el.getBoundingClientRect();\n\n\tconst top = rect.top + window.pageYOffset;\n\n\twindow.scrollTo({\n\t\ttop,\n\t\tbehavior: 'smooth',\n\t});\n}\n\n/**\n * Filter an anime or manga list\n *\n * @param {InputEvent} event\n * @return void\n */\nfunction filterMedia (event) {\n\tconst rawFilter = event.target.value;\n\tconst filter = new RegExp(rawFilter, 'i');\n\n\t// console.log('Filtering items by: ', filter);\n\n\tif (rawFilter !== '') {\n\t\t// Filter the cover view\n\t\t_.$('article.media').forEach(article => {\n\t\t\tconst titleLink = _.$('.name a', article)[0];\n\t\t\tconst title = String(titleLink.textContent).trim();\n\t\t\tif ( ! filter.test(title)) {\n\t\t\t\t_.hide(article);\n\t\t\t} else {\n\t\t\t\t_.show(article);\n\t\t\t}\n\t\t});\n\n\t\t// Filter the list view\n\t\t_.$('table.media-wrap tbody tr').forEach(tr => {\n\t\t\tconst titleCell = _.$('td.align-left', tr)[0];\n\t\t\tconst titleLink = _.$('a', titleCell)[0];\n\t\t\tconst linkTitle = String(titleLink.textContent).trim();\n\t\t\tconst textTitle = String(titleCell.textContent).trim();\n\t\t\tif ( ! (filter.test(linkTitle) || filter.test(textTitle))) {\n\t\t\t\t_.hide(tr);\n\t\t\t} else {\n\t\t\t\t_.show(tr);\n\t\t\t}\n\t\t});\n\t} else {\n\t\t_.show('article.media');\n\t\t_.show('table.media-wrap tbody tr');\n\t}\n}\n","import _ from './anime-client.js';\n\n(() => {\n\tlet hidden = null;\n\tlet visibilityChange = null;\n\n\tif (typeof document.hidden !== \"undefined\") {\n\t\thidden = \"hidden\";\n\t\tvisibilityChange = \"visibilitychange\";\n\t} else if (typeof document.msHidden !== \"undefined\") {\n\t\thidden = \"msHidden\";\n\t\tvisibilityChange = \"msvisibilitychange\";\n\t} else if (typeof document.webkitHidden !== \"undefined\") {\n\t\thidden = \"webkitHidden\";\n\t\tvisibilityChange = \"webkitvisibilitychange\";\n\t}\n\n\tfunction handleVisibilityChange() {\n\t\t// Check the user's session to see if they are currently logged-in\n\t\t// when the page becomes visible\n\t\tif ( ! document[hidden]) {\n\t\t\t_.get('/heartbeat', (beat) => {\n\t\t\t\tconst status = JSON.parse(beat)\n\n\t\t\t\t// If the session is expired, immediately reload so that\n\t\t\t\t// you can't attempt to do an action that requires authentication\n\t\t\t\tif (status.hasAuth !== true) {\n\t\t\t\t\tdocument.removeEventListener(visibilityChange, handleVisibilityChange, false);\n\t\t\t\t\tlocation.reload();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tif (hidden === null) {\n\t\tconsole.info('Page visibility API not supported, JS session check will not work');\n\t} else {\n\t\tdocument.addEventListener(visibilityChange, handleVisibilityChange, false);\n\t}\n})();","import _ from './anime-client.js';\n\n// Click on hidden MAL checkbox so\n// that MAL id is passed\n_.on('main', 'change', '.big-check', (e) => {\n\tconst id = e.target.id;\n\tdocument.getElementById(`mal_${id}`).checked = true;\n});\n\n/**\n * On search results with an existing library entry, this shows that fact, with an edit link for the existing\n * library entry\n *\n * @param {'anime'|'manga'} type\n * @param {Object} item\n * @param isCollection\n * @returns {String}\n */\nfunction renderEditLink (type, item, isCollection = false) {\n\tif (isCollection || item.libraryEntry === null) {\n\t\treturn '';\n\t}\n\n\treturn `\n\t\t
\n\t\t\t[ Already in List ]\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\tEdit\n\t\t\t\n\t\t
\n\t\t
 
\n\t`\n}\n\n/**\n * Show the search results for a media item\n *\n * @param {'anime'|'manga'} type\n * @param {Object} data\n * @param {boolean} isCollection\n * @returns {String}\n */\nexport function renderSearchResults (type, data, isCollection = false) {\n\treturn data.map(item => {\n\t\tconst titles = item.titles.join('
');\n\t\tlet disabled = item.libraryEntry !== null ? 'disabled' : '';\n\t\tconst editLink = renderEditLink(type, item, isCollection);\n\n\t\tif (isCollection) {\n\t\t\tdisabled = '';\n\t\t}\n\n\t\treturn `\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t${editLink}\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInfo Page\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t`;\n\t}).join('');\n}","import _ from './anime-client.js'\nimport { renderSearchResults } from './template-helpers.js'\n\nconst search = (query, isCollection = false) => {\n\t// Show the loader\n\t_.show('.cssload-loader');\n\n\t// Do the api search\n\treturn _.get(_.url('/anime-collection/search'), { query }, (searchResults, status) => {\n\t\tsearchResults = JSON.parse(searchResults);\n\n\t\t// Hide the loader\n\t\t_.hide('.cssload-loader');\n\n\t\t// Show the results\n\t\t_.$('#series-list')[ 0 ].innerHTML = renderSearchResults('anime', searchResults, isCollection);\n\t});\n};\n\n// Anime list search\nif (_.hasElement('.anime #search')) {\n\tlet prevRequest = null;\n\n\t_.on('#search', 'input', _.throttle(250, (e) => {\n\t\tconst query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query);\n\t}));\n}\n\n// Anime collection search\nif (_.hasElement('#search-anime-collection')) {\n\tlet prevRequest = null;\n\n\t_.on('#search-anime-collection', 'input', _.throttle(250, (e) => {\n\t\tconst query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query, true);\n\t}));\n}\n\n// Action to increment episode count\n_.on('body.anime.list', 'click', '.plus-one', (e) => {\n\tlet parentSel = _.closestParent(e.target, 'article');\n\tlet watchedCount = parseInt(_.$('.completed_number', parentSel)[ 0 ].textContent, 10) || 0;\n\tlet totalCount = parseInt(_.$('.total_number', parentSel)[ 0 ].textContent, 10);\n\tlet title = _.$('.name a', parentSel)[ 0 ].textContent;\n\n\t// Setup the update data\n\tlet data = {\n\t\tid: parentSel.dataset.kitsuId,\n\t\tmal_id: parentSel.dataset.malId,\n\t\tdata: {\n\t\t\tprogress: watchedCount + 1\n\t\t}\n\t};\n\n\t// If the episode count is 0, and incremented,\n\t// change status to currently watching\n\tif (isNaN(watchedCount) || watchedCount === 0) {\n\t\tdata.data.status = 'CURRENT';\n\t}\n\n\t// If you increment at the last episode, mark as completed\n\tif ((!isNaN(watchedCount)) && (watchedCount + 1) === totalCount) {\n\t\tdata.data.status = 'COMPLETED';\n\t}\n\n\t_.show('#loading-shadow');\n\n\t// okay, lets actually make some changes!\n\t_.ajax(_.url('/anime/increment'), {\n\t\tdata,\n\t\tdataType: 'json',\n\t\ttype: 'POST',\n\t\tsuccess: (res) => {\n\t\t\tconst resData = JSON.parse(res);\n\n\t\t\tif (resData.error) {\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('error', `Failed to update ${title}. `);\n\t\t\t\t_.scrollToTop();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We've completed the series\n\t\t\tif (resData.data.libraryEntry.update.libraryEntry.status === 'COMPLETED') {\n\t\t\t\t_.hide(parentSel);\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('success', `Successfully completed ${title}`);\n\t\t\t\t_.scrollToTop();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hide('#loading-shadow');\n\n\t\t\t_.showMessage('success', `Successfully updated ${title}`);\n\t\t\t_.$('.completed_number', parentSel)[ 0 ].textContent = ++watchedCount;\n\t\t\t_.scrollToTop();\n\t\t},\n\t\terror: () => {\n\t\t\t_.hide('#loading-shadow');\n\t\t\t_.showMessage('error', `Failed to update ${title}. `);\n\t\t\t_.scrollToTop();\n\t\t}\n\t});\n});","import _ from './anime-client.js'\nimport { renderSearchResults } from './template-helpers.js'\n\nconst search = (query) => {\n\t_.show('.cssload-loader');\n\treturn _.get(_.url('/manga/search'), { query }, (searchResults, status) => {\n\t\tsearchResults = JSON.parse(searchResults);\n\t\t_.hide('.cssload-loader');\n\t\t_.$('#series-list')[ 0 ].innerHTML = renderSearchResults('manga', searchResults);\n\t});\n};\n\nif (_.hasElement('.manga #search')) {\n\tlet prevRequest = null\n\n\t_.on('#search', 'input', _.throttle(250, (e) => {\n\t\tlet query = encodeURIComponent(e.target.value);\n\t\tif (query === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (prevRequest !== null) {\n\t\t\tprevRequest.abort();\n\t\t}\n\n\t\tprevRequest = search(query);\n\t}));\n}\n\n/**\n * Javascript for editing manga, if logged in\n */\n_.on('.manga.list', 'click', '.edit-buttons button', (e) => {\n\tlet thisSel = e.target;\n\tlet parentSel = _.closestParent(e.target, 'article');\n\tlet type = thisSel.classList.contains('plus-one-chapter') ? 'chapter' : 'volume';\n\tlet completed = parseInt(_.$(`.${type}s_read`, parentSel)[ 0 ].textContent, 10) || 0;\n\tlet total = parseInt(_.$(`.${type}_count`, parentSel)[ 0 ].textContent, 10);\n\tlet mangaName = _.$('.name', parentSel)[ 0 ].textContent;\n\n\tif (isNaN(completed)) {\n\t\tcompleted = 0;\n\t}\n\n\t// Setup the update data\n\tlet data = {\n\t\tid: parentSel.dataset.kitsuId,\n\t\tmal_id: parentSel.dataset.malId,\n\t\tdata: {\n\t\t\tprogress: completed\n\t\t}\n\t};\n\n\t// If the episode count is 0, and incremented,\n\t// change status to currently reading\n\tif (isNaN(completed) || completed === 0) {\n\t\tdata.data.status = 'CURRENT';\n\t}\n\n\t// If you increment at the last chapter, mark as completed\n\tif ((!isNaN(completed)) && (completed + 1) === total) {\n\t\tdata.data.status = 'COMPLETED';\n\t}\n\n\t// Update the total count\n\tdata.data.progress = ++completed;\n\n\t_.show('#loading-shadow');\n\n\t_.ajax(_.url('/manga/increment'), {\n\t\tdata,\n\t\tdataType: 'json',\n\t\ttype: 'POST',\n\t\tmimeType: 'application/json',\n\t\tsuccess: (res) => {\n\t\t\tconst resData = JSON.parse(res)\n\t\t\tif (resData.error) {\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('error', `Failed to update ${mangaName}. `);\n\t\t\t\t_.scrollToTop();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (String(data.data.status).toUpperCase() === 'COMPLETED') {\n\t\t\t\t_.hide(parentSel);\n\t\t\t\t_.hide('#loading-shadow');\n\t\t\t\t_.showMessage('success', `Successfully completed ${mangaName}`);\n\t\t\t\t_.scrollToTop();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hide('#loading-shadow');\n\n\t\t\t_.$(`.${type}s_read`, parentSel)[ 0 ].textContent = String(completed);\n\t\t\t_.showMessage('success', `Successfully updated ${mangaName}`);\n\t\t\t_.scrollToTop();\n\t\t},\n\t\terror: () => {\n\t\t\t_.hide('#loading-shadow');\n\t\t\t_.showMessage('error', `Failed to update ${mangaName}`);\n\t\t\t_.scrollToTop();\n\t\t}\n\t});\n});"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/public/js/tables.min.js b/public/js/tables.min.js index b7c979de..be0a78e4 100644 --- a/public/js/tables.min.js +++ b/public/js/tables.min.js @@ -1 +1 @@ -var LightTableSorter=function(){var th=null;var cellIndex=null;var order='';var text=function(row){return row.cells.item(cellIndex).textContent.toLowerCase()};var sort=function(a,b){var textA=text(a);var textB=text(b);console.log("Comparing "+textA+" and "+textB);if(th.classList.contains("numeric")){var arrayA=textA.replace('episodes: ','').replace('-',0).split("/");var arrayB=textB.replace('episodes: ','').replace('-',0).split("/");if(arrayA.length>1){textA=parseInt(arrayA[0],10)/parseInt(arrayA[1],10);textB=parseInt(arrayB[0],10)/parseInt(arrayB[1],10)}else{textA=parseInt(arrayA[0],10);textB=parseInt(arrayB[0],10)}}else if(parseInt(textA,10)){textA=parseInt(textA,10);textB=parseInt(textB,10)}if(textA>textB)return 1;if(textA1){textA=parseInt(arrayA[0],10)/parseInt(arrayA[1],10);textB=parseInt(arrayB[0],10)/parseInt(arrayB[1],10)}else{textA=parseInt(arrayA[0],10);textB=parseInt(arrayB[0],10)}}else if(parseInt(textA,10)){textA=parseInt(textA,10);textB=parseInt(textB,10)}if(textA>textB)return 1;if(textA {\n\tlet th = null;\n\tlet cellIndex = null;\n\tlet order = '';\n\tconst text = (row) => row.cells.item(cellIndex).textContent.toLowerCase();\n\tconst sort = (a, b) => {\n\t\tlet textA = text(a);\n\t\tlet textB = text(b);\n\t\tconsole.log(\"Comparing \" + textA + \" and \" + textB)\n\n\t\tif(th.classList.contains(\"numeric\")){\n\t\t\tlet arrayA = textA.replace('episodes: ','').replace('-',0).split(\"/\");\n\t\t\tlet arrayB = textB.replace('episodes: ','').replace('-',0).split(\"/\");\n\t\t\tif(arrayA.length > 1) {\n\t\t\t\ttextA = parseInt(arrayA[0],10) / parseInt(arrayA[1],10);\n\t\t\t\ttextB = parseInt(arrayB[0],10) / parseInt(arrayB[1],10);\n\t\t\t}\n\t\t\telse{\n\t\t\t\ttextA = parseInt(arrayA[0],10);\n\t\t\t\ttextB = parseInt(arrayB[0],10);\n\t\t\t}\n\t\t}\n\t\telse if (parseInt(textA, 10)) {\n\t\t\ttextA = parseInt(textA, 10);\n\t\t\ttextB = parseInt(textB, 10);\n\t\t}\n\t\tif (textA > textB) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (textA < textB) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t};\n\tconst toggle = () => {\n\t\tconst c = order !== 'sorting-asc' ? 'sorting-asc' : 'sorting-desc';\n\t\tth.className = (th.className.replace(order, '') + ' ' + c).trim();\n\t\treturn order = c;\n\t};\n\tconst reset = () => {\n\t\tth.classList.remove('sorting-asc', 'sorting-desc');\n\t\tth.classList.add('sorting');\n\t\treturn order = '';\n\t};\n\tconst onClickEvent = (e) => {\n\t\tif (th && (cellIndex !== e.target.cellIndex)) {\n\t\t\treset();\n\t\t}\n\t\tth = e.target;\n\t\tif (th.nodeName.toLowerCase() === 'th') {\n\t\t\tcellIndex = th.cellIndex;\n\t\t\tconst tbody = th.offsetParent.getElementsByTagName('tbody')[0];\n\t\t\tlet rows = Array.from(tbody.rows);\n\t\t\tif (rows) {\n\t\t\t\trows.sort(sort);\n\t\t\t\tif (order === 'sorting-asc') {\n\t\t\t\t\trows.reverse();\n\t\t\t\t}\n\t\t\t\ttoggle();\n\t\t\t\ttbody.innerHtml = '';\n\n\t\t\t\trows.forEach(row => {\n\t\t\t\t\ttbody.appendChild(row);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\treturn {\n\t\tinit: () => {\n\t\t\tlet ths = document.getElementsByTagName('th');\n\t\t\tlet results = [];\n\t\t\tfor (let i = 0, len = ths.length; i < len; i++) {\n\t\t\t\tlet th = ths[i];\n\t\t\t\tth.classList.add('sorting');\n\t\t\t\tth.classList.add('testing');\n\t\t\t\tresults.push(th.onclick = onClickEvent);\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n\t};\n})();\n\nLightTableSorter.init();"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["/var/www/htdocs/github.timshomepage.net/animeclient/frontEndSrc/js/base/sort-tables.js"],"sourcesContent":["const LightTableSorter = (() => {\n\tlet th = null;\n\tlet cellIndex = null;\n\tlet order = '';\n\tconst text = (row) => row.cells.item(cellIndex).textContent.toLowerCase();\n\tconst sort = (a, b) => {\n\t\tlet textA = text(a);\n\t\tlet textB = text(b);\n\t\tconsole.log(\"Comparing \" + textA + \" and \" + textB)\n\n\t\tif(th.classList.contains(\"numeric\")){\n\t\t\tlet arrayA = textA.replace('episodes: ','').replace('-',0).split(\"/\");\n\t\t\tlet arrayB = textB.replace('episodes: ','').replace('-',0).split(\"/\");\n\t\t\tif(arrayA.length > 1) {\n\t\t\t\ttextA = parseInt(arrayA[0],10) / parseInt(arrayA[1],10);\n\t\t\t\ttextB = parseInt(arrayB[0],10) / parseInt(arrayB[1],10);\n\t\t\t}\n\t\t\telse{\n\t\t\t\ttextA = parseInt(arrayA[0],10);\n\t\t\t\ttextB = parseInt(arrayB[0],10);\n\t\t\t}\n\t\t}\n\t\telse if (parseInt(textA, 10)) {\n\t\t\ttextA = parseInt(textA, 10);\n\t\t\ttextB = parseInt(textB, 10);\n\t\t}\n\t\tif (textA > textB) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (textA < textB) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t};\n\tconst toggle = () => {\n\t\tconst c = order !== 'sorting-asc' ? 'sorting-asc' : 'sorting-desc';\n\t\tth.className = (th.className.replace(order, '') + ' ' + c).trim();\n\t\treturn order = c;\n\t};\n\tconst reset = () => {\n\t\tth.classList.remove('sorting-asc', 'sorting-desc');\n\t\tth.classList.add('sorting');\n\t\treturn order = '';\n\t};\n\tconst onClickEvent = (e) => {\n\t\tif (th && (cellIndex !== e.target.cellIndex)) {\n\t\t\treset();\n\t\t}\n\t\tth = e.target;\n\t\tif (th.nodeName.toLowerCase() === 'th') {\n\t\t\tcellIndex = th.cellIndex;\n\t\t\tconst tbody = th.offsetParent.getElementsByTagName('tbody')[0];\n\t\t\tlet rows = Array.from(tbody.rows);\n\t\t\tif (rows) {\n\t\t\t\trows.sort(sort);\n\t\t\t\tif (order === 'sorting-asc') {\n\t\t\t\t\trows.reverse();\n\t\t\t\t}\n\t\t\t\ttoggle();\n\t\t\t\ttbody.innerHtml = '';\n\n\t\t\t\trows.forEach(row => {\n\t\t\t\t\ttbody.appendChild(row);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\treturn {\n\t\tinit: () => {\n\t\t\tlet ths = document.getElementsByTagName('th');\n\t\t\tlet results = [];\n\t\t\tfor (let i = 0, len = ths.length; i < len; i++) {\n\t\t\t\tlet th = ths[i];\n\t\t\t\tth.classList.add('sorting');\n\t\t\t\tth.classList.add('testing');\n\t\t\t\tresults.push(th.onclick = onClickEvent);\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n\t};\n})();\n\nLightTableSorter.init();"],"names":[],"mappings":"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"} \ No newline at end of file