From 44eeac8e4d39b7ce6ea9faf85b26fec1fd88bad3 Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:24:12 +0300 Subject: [PATCH 01/63] Initialize new Vue project; move existing contents --- src/webui/.gitignore | 30 + src/webui/index.html | 16 + src/webui/jsconfig.json | 8 + src/webui/package-lock.json | 2374 +++++++++++++++++++++ src/webui/package.json | 21 + src/webui/postcss.config.js | 6 + src/webui/public/img/apple-touch-icon.png | Bin 0 -> 70851 bytes src/webui/public/img/favicon.png | Bin 0 -> 2948 bytes src/webui/public/manifest.json | 11 + src/webui/src/App.vue | 1270 +++++++++++ src/webui/src/assets/img/logo.png | Bin 0 -> 3103 bytes src/webui/src/assets/style.css | 3 + src/webui/src/main.js | 6 + src/webui/tailwind.config.js | 11 + src/webui/vite.config.js | 16 + 15 files changed, 3772 insertions(+) create mode 100644 src/webui/.gitignore create mode 100644 src/webui/index.html create mode 100644 src/webui/jsconfig.json create mode 100644 src/webui/package-lock.json create mode 100644 src/webui/package.json create mode 100644 src/webui/postcss.config.js create mode 100644 src/webui/public/img/apple-touch-icon.png create mode 100644 src/webui/public/img/favicon.png create mode 100644 src/webui/public/manifest.json create mode 100644 src/webui/src/App.vue create mode 100644 src/webui/src/assets/img/logo.png create mode 100644 src/webui/src/assets/style.css create mode 100644 src/webui/src/main.js create mode 100644 src/webui/tailwind.config.js create mode 100644 src/webui/vite.config.js diff --git a/src/webui/.gitignore b/src/webui/.gitignore new file mode 100644 index 00000000..8ee54e8d --- /dev/null +++ b/src/webui/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/src/webui/index.html b/src/webui/index.html new file mode 100644 index 00000000..3e43c5c6 --- /dev/null +++ b/src/webui/index.html @@ -0,0 +1,16 @@ + + + + + WireGuard + + + + + + + +
+ + + diff --git a/src/webui/jsconfig.json b/src/webui/jsconfig.json new file mode 100644 index 00000000..5a1f2d22 --- /dev/null +++ b/src/webui/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/src/webui/package-lock.json b/src/webui/package-lock.json new file mode 100644 index 00000000..60f52966 --- /dev/null +++ b/src/webui/package-lock.json @@ -0,0 +1,2374 @@ +{ + "name": "webui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "webui", + "version": "0.0.0", + "dependencies": { + "vue": "^3.3.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.5.2", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.33", + "tailwindcss": "^3.4.1", + "vite": "^5.0.10" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.4.tgz", + "integrity": "sha512-ub/SN3yWqIv5CWiAZPHVS1DloyZsJbtXmX4HxUTIpS0BHm9pW5iYBo2mIZi+hE3AeiTzHz33blwSnhdUo+9NpA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.4.tgz", + "integrity": "sha512-ehcBrOR5XTl0W0t2WxfTyHCR/3Cq2jfb+I4W+Ch8Y9b5G+vbAecVv0Fx/J1QKktOrgUYsIKxWAKgIpvw56IFNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.4.tgz", + "integrity": "sha512-1fzh1lWExwSTWy8vJPnNbNM02WZDS8AW3McEOb7wW+nPChLKf3WG2aG7fhaUmfX5FKw9zhsF5+MBwArGyNM7NA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.4.tgz", + "integrity": "sha512-Gc6cukkF38RcYQ6uPdiXi70JB0f29CwcQ7+r4QpfNpQFVHXRd0DfWFidoGxjSx1DwOETM97JPz1RXL5ISSB0pA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.4.tgz", + "integrity": "sha512-g21RTeFzoTl8GxosHbnQZ0/JkuFIB13C3T7Y0HtKzOXmoHhewLbVTFBQZu+z5m9STH6FZ7L/oPgU4Nm5ErN2fw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.4.tgz", + "integrity": "sha512-TVYVWD/SYwWzGGnbfTkrNpdE4HON46orgMNHCivlXmlsSGQOx/OHHYiQcMIOx38/GWgwr/po2LBn7wypkWw/Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.4.tgz", + "integrity": "sha512-XcKvuendwizYYhFxpvQ3xVpzje2HHImzg33wL9zvxtj77HvPStbSGI9czrdbfrf8DGMcNNReH9pVZv8qejAQ5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.4.tgz", + "integrity": "sha512-LFHS/8Q+I9YA0yVETyjonMJ3UA+DczeBd/MqNEzsGSTdNvSJa1OJZcSH8GiXLvcizgp9AlHs2walqRcqzjOi3A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.4.tgz", + "integrity": "sha512-dIYgo+j1+yfy81i0YVU5KnQrIJZE8ERomx17ReU4GREjGtDW4X+nvkBak2xAUpyqLs4eleDSj3RrV72fQos7zw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.4.tgz", + "integrity": "sha512-RoaYxjdHQ5TPjaPrLsfKqR3pakMr3JGqZ+jZM0zP2IkDtsGa4CqYaWSfQmZVgFUCgLrTnzX+cnHS3nfl+kB6ZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.4.tgz", + "integrity": "sha512-T8Q3XHV+Jjf5e49B4EAaLKV74BbX7/qYBRQ8Wop/+TyyU0k+vSjiLVSHNWdVd1goMjZcbhDmYZUYW5RFqkBNHQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.4.tgz", + "integrity": "sha512-z+JQ7JirDUHAsMecVydnBPWLwJjbppU+7LZjffGf+Jvrxq+dVjIE7By163Sc9DKc3ADSU50qPVw0KonBS+a+HQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.4.tgz", + "integrity": "sha512-LfdGXCV9rdEify1oxlN9eamvDSjv9md9ZVMAbNHA87xqIfFCxImxan9qZ8+Un54iK2nnqPlbnSi4R54ONtbWBw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.10.tgz", + "integrity": "sha512-53vxh7K9qbx+JILnGEhrFRyr7H7e4NdT8RuTNU3m6HhJKFvcAqFTNXpYMHnyuAzzRGdsbsYHBgQC3H6xEXTG6w==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.10", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.10.tgz", + "integrity": "sha512-QAALBJksIFpXGYuo74rtMgnwpVZDvd3kYbUa4gYX9s/5QiqEvZSgbKtOdUGydXcxKPt3ifC+0/bhPVHXN2694A==", + "dependencies": { + "@vue/compiler-core": "3.4.10", + "@vue/shared": "3.4.10" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.10.tgz", + "integrity": "sha512-sTOssaQySgrMjrhZxmAqdp6n+E51VteIVIDaOR537H2P63DyzMmig21U0XXFxiXmMIfrK91lAInnc+bIAYemGw==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.10", + "@vue/compiler-dom": "3.4.10", + "@vue/compiler-ssr": "3.4.10", + "@vue/shared": "3.4.10", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.10.tgz", + "integrity": "sha512-Y90TL1abretWbUiK5rv+9smS1thCHE5sSuhZgiLh6cxgZ2Pcy3BEvDd3reID0iwNcTdMbTeE6NI3Aq4Mux6hqQ==", + "dependencies": { + "@vue/compiler-dom": "3.4.10", + "@vue/shared": "3.4.10" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.10.tgz", + "integrity": "sha512-SmGGpo37LzPcAFTopHNIJRNVOQfma9YgyPkAzx9/TJ01lbCCYigS28hEcY1hjiJ1PRK8iVX62Ov5yzmUgYH/pQ==", + "dependencies": { + "@vue/shared": "3.4.10" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.10.tgz", + "integrity": "sha512-Ri2Cz9sFr66AEUewGUK8IXhIUAhshTHVUGuJR8pqMbtjIds+zPa8QPO5UZImGMQ8HTY7eEpKwztCct9V3+Iqug==", + "dependencies": { + "@vue/reactivity": "3.4.10", + "@vue/shared": "3.4.10" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.10.tgz", + "integrity": "sha512-ROsdi5M2niRDmjXJNZ8KKiGwXyG1FO8l9n6sCN0kaJEHbjWkuigu96YAI3fK/AWUZPSXXEcMEBVPC6rL3mmUuA==", + "dependencies": { + "@vue/runtime-core": "3.4.10", + "@vue/shared": "3.4.10", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.10.tgz", + "integrity": "sha512-WpCBAhesLq44JKWfdFqb+Bi4ACUW0d8x1z90GnE0spccsAlEDMXV5nm+pwXLyW0OdP2iPrO/n/QMJh4B1v9Ciw==", + "dependencies": { + "@vue/compiler-ssr": "3.4.10", + "@vue/shared": "3.4.10" + }, + "peerDependencies": { + "vue": "3.4.10" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.10.tgz", + "integrity": "sha512-C0mIVhwW1xQLMFyqMJxnhq6fWyE02lCgcE+TDdtGpg6B3H6kh/0YcqS54qYc76UJNlWegf3VgsLqgk6D9hBmzQ==" + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.628", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.628.tgz", + "integrity": "sha512-2k7t5PHvLsufpP6Zwk0nof62yLOsCf032wZx7/q0mv8gwlXjhcxI3lz6f0jBr0GrnWKcm3burXzI3t5IrcdUxw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.4.tgz", + "integrity": "sha512-2ztU7pY/lrQyXSCnnoU4ICjT/tCG9cdH3/G25ERqE3Lst6vl2BCM5hL2Nw+sslAvAf+ccKsAq1SkKQALyqhR7g==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.4", + "@rollup/rollup-android-arm64": "4.9.4", + "@rollup/rollup-darwin-arm64": "4.9.4", + "@rollup/rollup-darwin-x64": "4.9.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.4", + "@rollup/rollup-linux-arm64-gnu": "4.9.4", + "@rollup/rollup-linux-arm64-musl": "4.9.4", + "@rollup/rollup-linux-riscv64-gnu": "4.9.4", + "@rollup/rollup-linux-x64-gnu": "4.9.4", + "@rollup/rollup-linux-x64-musl": "4.9.4", + "@rollup/rollup-win32-arm64-msvc": "4.9.4", + "@rollup/rollup-win32-ia32-msvc": "4.9.4", + "@rollup/rollup-win32-x64-msvc": "4.9.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.10.tgz", + "integrity": "sha512-c+O8qGqdWPF9joTCzMGeDDedViooh6c8RY3+eW5+6GCAIY8YjChmU06LsUu0PnMZbIk1oKUoJTqKzmghYtFypw==", + "dependencies": { + "@vue/compiler-dom": "3.4.10", + "@vue/compiler-sfc": "3.4.10", + "@vue/runtime-dom": "3.4.10", + "@vue/server-renderer": "3.4.10", + "@vue/shared": "3.4.10" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/src/webui/package.json b/src/webui/package.json new file mode 100644 index 00000000..379ce505 --- /dev/null +++ b/src/webui/package.json @@ -0,0 +1,21 @@ +{ + "name": "webui", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "vue": "^3.3.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.5.2", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.33", + "tailwindcss": "^3.4.1", + "vite": "^5.0.10" + } +} diff --git a/src/webui/postcss.config.js b/src/webui/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/src/webui/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/webui/public/img/apple-touch-icon.png b/src/webui/public/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2ebeee55c62b7f3a820b11463d8582dc93282470 GIT binary patch literal 70851 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 literal 0 HcmV?d00001 diff --git a/src/webui/public/img/favicon.png b/src/webui/public/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..470e2e9b367b168733e6b51f7d0d59d3d5036154 GIT binary patch literal 2948 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 +import { ref, reactive } from "vue"; + +class API { + async call({ method, path, body }) { + const res = await fetch(`./api${path}`, { + method, + headers: { + "Content-Type": "application/json", + }, + body: body ? JSON.stringify(body) : undefined, + }); + + if (res.status === 204) { + return undefined; + } + + const json = await res.json(); + + if (!res.ok) { + throw new Error(json.error || res.statusText); + } + + return json; + } + + async getRelease() { + return this.call({ + method: "get", + path: "/release", + }); + } + + async getSession() { + return this.call({ + method: "get", + path: "/session", + }); + } + + async createSession({ password }) { + return this.call({ + method: "post", + path: "/session", + body: { password }, + }); + } + + async deleteSession() { + return this.call({ + method: "delete", + path: "/session", + }); + } + + async getClients() { + return this.call({ + method: "get", + path: "/wireguard/client", + }).then((clients) => + clients.map((client) => ({ + ...client, + createdAt: new Date(client.createdAt), + updatedAt: new Date(client.updatedAt), + latestHandshakeAt: client.latestHandshakeAt !== null ? new Date(client.latestHandshakeAt) : null, + })) + ); + } + + async createClient({ name }) { + return this.call({ + method: "post", + path: "/wireguard/client", + body: { name }, + }); + } + + async deleteClient({ clientId }) { + return this.call({ + method: "delete", + path: `/wireguard/client/${clientId}`, + }); + } + + async enableClient({ clientId }) { + return this.call({ + method: "post", + path: `/wireguard/client/${clientId}/enable`, + }); + } + + async disableClient({ clientId }) { + return this.call({ + method: "post", + path: `/wireguard/client/${clientId}/disable`, + }); + } + + async updateClientName({ clientId, name }) { + return this.call({ + method: "put", + path: `/wireguard/client/${clientId}/name/`, + body: { name }, + }); + } + + async updateClientAddress({ clientId, address }) { + return this.call({ + method: "put", + path: `/wireguard/client/${clientId}/address/`, + body: { address }, + }); + } +} + +export default { + setup() { + const authenticated = ref(null); + const authenticating = ref(false); + const password = ref(null); + const requiresPassword = ref(null); + + const clients = ref(null); + const clientsPersist = reactive({}); + const clientDelete = ref(null); + const clientCreate = ref(null); + const clientCreateName = ref(""); + const clientEditName = ref(null); + const clientEditNameId = ref(null); + const clientEditAddress = ref(null); + const clientEditAddressId = ref(null); + const qrcode = ref(null); + + const currentRelease = ref(null); + const latestRelease = ref(null); + + const isDark = ref(null); + + const chartOptions = reactive({ + chart: { + background: "transparent", + type: "bar", + stacked: false, + toolbar: { + show: false, + }, + animations: { + enabled: false, + }, + }, + colors: [ + "#DDDDDD", // rx + "#EEEEEE", // tx + ], + dataLabels: { + enabled: false, + }, + plotOptions: { + bar: { + horizontal: false, + }, + }, + xaxis: { + labels: { + show: false, + }, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + }, + }, + yaxis: { + labels: { + show: false, + }, + min: 0, + }, + tooltip: { + enabled: false, + }, + legend: { + show: false, + }, + grid: { + show: false, + padding: { + left: -10, + right: 0, + bottom: -15, + top: -15, + }, + column: { + opacity: 0, + }, + xaxis: { + lines: { + show: false, + }, + }, + }, + }); + + const api = new API(); + + const dateTime = (value) => { + return new Intl.DateTimeFormat(undefined, { + year: "numeric", + month: "short", + day: "numeric", + hour: "numeric", + minute: "numeric", + }).format(value); + }; + + const refresh = async ({ updateCharts = false } = {}) => { + if (!authenticated.value) return; + + const clientsData = await api.getClients(); + clients.value = clientsData.map((client) => { + if (client.name.includes("@") && client.name.includes(".")) { + // FIXME: add "sha512" + client.avatar = `https://www.gravatar.com/avatar/${sha512(client.name)}?d=blank`; + } + + if (!clientsPersist[client.id]) { + clientsPersist[client.id] = {}; + clientsPersist[client.id].transferRxHistory = Array(50).fill(0); + clientsPersist[client.id].transferRxPrevious = client.transferRx; + clientsPersist[client.id].transferTxHistory = Array(50).fill(0); + clientsPersist[client.id].transferTxPrevious = client.transferTx; + } + + // Debug + // client.transferRx = clientsPersist[client.id].transferRxPrevious + Math.random() * 1000; + // client.transferTx = clientsPersist[client.id].transferTxPrevious + Math.random() * 1000; + + if (updateCharts) { + clientsPersist[client.id].transferRxCurrent = + client.transferRx - clientsPersist[client.id].transferRxPrevious; + clientsPersist[client.id].transferRxPrevious = client.transferRx; + clientsPersist[client.id].transferTxCurrent = + client.transferTx - clientsPersist[client.id].transferTxPrevious; + clientsPersist[client.id].transferTxPrevious = client.transferTx; + + clientsPersist[client.id].transferRxHistory.push(clientsPersist[client.id].transferRxCurrent); + clientsPersist[client.id].transferRxHistory.shift(); + + clientsPersist[client.id].transferTxHistory.push(clientsPersist[client.id].transferTxCurrent); + clientsPersist[client.id].transferTxHistory.shift(); + } + + client.transferTxCurrent = clientsPersist[client.id].transferTxCurrent; + client.transferRxCurrent = clientsPersist[client.id].transferRxCurrent; + + client.transferTxHistory = clientsPersist[client.id].transferTxHistory; + client.transferRxHistory = clientsPersist[client.id].transferRxHistory; + client.transferMax = Math.max(...client.transferTxHistory, ...client.transferRxHistory); + + client.hoverTx = clientsPersist[client.id].hoverTx; + client.hoverRx = clientsPersist[client.id].hoverRx; + + return client; + }); + }; + + const login = (e) => { + e.preventDefault(); + + if (!password.value) return; + if (authenticating.value) return; + + authenticating.value = true; + api.createSession({ + password: password.value, + }) + .then(async () => { + const session = await api.getSession(); + authenticated.value = session.authenticated; + requiresPassword.value = session.requiresPassword; + return refresh(); + }) + .catch((err) => { + alert(err.message || err.toString()); + }) + .finally(() => { + authenticating.value = false; + password.value = null; + }); + }; + + const logout = (e) => { + e.preventDefault(); + + api.deleteSession() + .then(() => { + authenticated.value = false; + clients.value = null; + }) + .catch((err) => { + alert(err.message || err.toString()); + }); + }; + + const createClient = () => { + const name = clientCreateName.value; + if (!name) return; + + api.createClient({ name }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const deleteClient = (client) => { + api.deleteClient({ clientId: client.id }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const enableClient = (client) => { + api.enableClient({ clientId: client.id }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const disableClient = (client) => { + api.disableClient({ clientId: client.id }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const updateClientName = (client, name) => { + api.updateClientName({ clientId: client.id, name }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const updateClientAddress = (client, address) => { + api.updateClientAddress({ clientId: client.id, address }) + .catch((err) => alert(err.message || err.toString())) + .finally(() => refresh().catch(console.error)); + }; + + const toggleTheme = () => { + if (isDark.value) { + localStorage.theme = "light"; + document.documentElement.classList.remove("dark"); + } else { + localStorage.theme = "dark"; + document.documentElement.classList.add("dark"); + } + isDark.value = !isDark.value; + }; + + return { + authenticated, + authenticating, + password, + requiresPassword, + + clients, + clientsPersist, + clientDelete, + clientCreate, + clientCreateName, + clientEditName, + clientEditNameId, + clientEditAddress, + clientEditAddressId, + qrcode, + + currentRelease, + latestRelease, + + isDark, + + chartOptions, + + dateTime, + refresh, + login, + logout, + createClient, + deleteClient, + enableClient, + disableClient, + updateClientName, + updateClientAddress, + toggleTheme, + + api, + }; + }, + mounted() { + this.isDark = false; + if (localStorage.theme === "dark") { + this.isDark = true; + } + + this.api + .getSession() + .then((session) => { + console.log(session); + this.authenticated = session.authenticated; + this.requiresPassword = session.requiresPassword; + this.refresh({ + updateCharts: true, + }).catch((err) => { + alert(err.message || err.toString()); + }); + }) + .catch((err) => { + alert(err.message || err.toString()); + }); + + setInterval(() => { + this.refresh({ + updateCharts: true, + }).catch(console.error); + }, 1000); + + Promise.resolve() + .then(async () => { + const currentReleaseData = await this.api.getRelease(); + const latestReleaseData = await fetch("https://wg-easy.github.io/wg-easy/changelog.json") + .then((res) => res.json()) + .then((releases) => { + const releasesArray = Object.entries(releases).map(([version, changelog]) => ({ + version: parseInt(version, 10), + changelog, + })); + releasesArray.sort((a, b) => { + return b.version - a.version; + }); + + return releasesArray[0]; + }); + + console.log(`Current Release: ${currentReleaseData}`); + console.log(`Latest Release: ${latestReleaseData.version}`); + + if (currentReleaseData >= latestReleaseData.version) return; + + currentRelease.value = currentReleaseData; + latestRelease.value = latestReleaseData; + }) + .catch(console.error); + }, +}; + + + diff --git a/src/webui/src/assets/img/logo.png b/src/webui/src/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..582b13123487710f11484a40b6ec6d581e22b114 GIT binary patch literal 3103 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 literal 0 HcmV?d00001 diff --git a/src/webui/src/assets/style.css b/src/webui/src/assets/style.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/src/webui/src/assets/style.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/webui/src/main.js b/src/webui/src/main.js new file mode 100644 index 00000000..48a9274b --- /dev/null +++ b/src/webui/src/main.js @@ -0,0 +1,6 @@ +import './assets/style.css' + +import { createApp } from 'vue' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/src/webui/tailwind.config.js b/src/webui/tailwind.config.js new file mode 100644 index 00000000..ff48818c --- /dev/null +++ b/src/webui/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{vue,js,ts,jsx,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} \ No newline at end of file diff --git a/src/webui/vite.config.js b/src/webui/vite.config.js new file mode 100644 index 00000000..5c45e1d9 --- /dev/null +++ b/src/webui/vite.config.js @@ -0,0 +1,16 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +}) From 525531ec6d61ea7e74ee5179a40988992ce4c591 Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:24:46 +0300 Subject: [PATCH 02/63] Remove old "www" --- src/www/css/app.css | 1905 ----------------------- src/www/img/apple-touch-icon.png | Bin 70851 -> 0 bytes src/www/img/favicon.png | Bin 2948 -> 0 bytes src/www/img/logo.png | Bin 3103 -> 0 bytes src/www/index.html | 596 ------- src/www/js/api.js | 141 -- src/www/js/app.js | 431 ----- src/www/js/vendor/apexcharts.min.js | 14 - src/www/js/vendor/vue-apexcharts.min.js | 7 - src/www/js/vendor/vue.min.js | 6 - src/www/manifest.json | 11 - src/www/src/css/app.css | 3 - 12 files changed, 3114 deletions(-) delete mode 100644 src/www/css/app.css delete mode 100644 src/www/img/apple-touch-icon.png delete mode 100644 src/www/img/favicon.png delete mode 100644 src/www/img/logo.png delete mode 100644 src/www/index.html delete mode 100644 src/www/js/api.js delete mode 100644 src/www/js/app.js delete mode 100644 src/www/js/vendor/apexcharts.min.js delete mode 100644 src/www/js/vendor/vue-apexcharts.min.js delete mode 100644 src/www/js/vendor/vue.min.js delete mode 100644 src/www/manifest.json delete mode 100644 src/www/src/css/app.css diff --git a/src/www/css/app.css b/src/www/css/app.css deleted file mode 100644 index 84270471..00000000 --- a/src/www/css/app.css +++ /dev/null @@ -1,1905 +0,0 @@ -/* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS -*/ - -html, -:host { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ - font-size: 1em; - /* 4 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - letter-spacing: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden] { - display: none; -} - -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -.container { - width: 100%; -} - -@media (min-width: 450px) { - .container { - max-width: 450px; - } -} - -@media (min-width: 576px) { - .container { - max-width: 576px; - } -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.visible { - visibility: visible; -} - -.static { - position: static; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.inset-0 { - inset: 0px; -} - -.-bottom-1 { - bottom: -0.25rem; -} - -.-right-1 { - right: -0.25rem; -} - -.bottom-0 { - bottom: 0px; -} - -.left-0 { - left: 0px; -} - -.right-0 { - right: 0px; -} - -.right-4 { - right: 1rem; -} - -.top-0 { - top: 0px; -} - -.top-4 { - top: 1rem; -} - -.z-0 { - z-index: 0; -} - -.z-10 { - z-index: 10; -} - -.z-20 { - z-index: 20; -} - -.float-right { - float: right; -} - -.m-1 { - margin: 0.25rem; -} - -.m-10 { - margin: 2.5rem; -} - -.m-2 { - margin: 0.5rem; -} - -.m-5 { - margin: 1.25rem; -} - -.mx-auto { - margin-left: auto; - margin-right: auto; -} - -.my-16 { - margin-top: 4rem; - margin-bottom: 4rem; -} - -.mb-10 { - margin-bottom: 2.5rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-5 { - margin-bottom: 1.25rem; -} - -.ml-5 { - margin-left: 1.25rem; -} - -.mr-1 { - margin-right: 0.25rem; -} - -.mr-2 { - margin-right: 0.5rem; -} - -.mt-0 { - margin-top: 0px; -} - -.mt-0\.5 { - margin-top: 0.125rem; -} - -.mt-10 { - margin-top: 2.5rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mt-3 { - margin-top: 0.75rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mt-5 { - margin-top: 1.25rem; -} - -.mt-px { - margin-top: 1px; -} - -.block { - display: block; -} - -.inline-block { - display: inline-block; -} - -.inline { - display: inline; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.grid { - display: grid; -} - -.contents { - display: contents; -} - -.hidden { - display: none; -} - -.h-1 { - height: 0.25rem; -} - -.h-10 { - height: 2.5rem; -} - -.h-12 { - height: 3rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-20 { - height: 5rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-4 { - height: 1rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-8 { - height: 2rem; -} - -.min-h-screen { - min-height: 100vh; -} - -.w-10 { - width: 2.5rem; -} - -.w-12 { - width: 3rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-20 { - width: 5rem; -} - -.w-4 { - width: 1rem; -} - -.w-5 { - width: 1.25rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-64 { - width: 16rem; -} - -.w-8 { - width: 2rem; -} - -.w-full { - width: 100%; -} - -.min-w-20 { - min-width: 5rem; -} - -.max-w-3xl { - max-width: 48rem; -} - -.flex-auto { - flex: 1 1 auto; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.grow-0 { - flex-grow: 0; -} - -.transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -@keyframes ping { - 75%, 100% { - transform: scale(2); - opacity: 0; - } -} - -.animate-ping { - animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; -} - -@keyframes spin { - to { - transform: rotate(360deg); - } -} - -.animate-spin { - animation: spin 1s linear infinite; -} - -.cursor-not-allowed { - cursor: not-allowed; -} - -.cursor-pointer { - cursor: pointer; -} - -.resize { - resize: both; -} - -.flex-row { - flex-direction: row; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.gap-1 { - gap: 0.25rem; -} - -.gap-2 { - gap: 0.5rem; -} - -.gap-3 { - gap: 0.75rem; -} - -.self-start { - align-self: flex-start; -} - -.self-end { - align-self: flex-end; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-lg { - border-radius: 0.5rem; -} - -.rounded-md { - border-radius: 0.375rem; -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-b-2 { - border-bottom-width: 2px; -} - -.border-t-2 { - border-top-width: 2px; -} - -.border-solid { - border-style: solid; -} - -.border-none { - border-style: none; -} - -.border-gray-100 { - --tw-border-opacity: 1; - border-color: rgb(243 244 246 / var(--tw-border-opacity)); -} - -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - -.border-red-800 { - --tw-border-opacity: 1; - border-color: rgb(153 27 27 / var(--tw-border-opacity)); -} - -.border-transparent { - border-color: transparent; -} - -.bg-black { - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); -} - -.bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.bg-gray-500 { - --tw-bg-opacity: 1; - background-color: rgb(107 114 128 / var(--tw-bg-opacity)); -} - -.bg-red-100 { - --tw-bg-opacity: 1; - background-color: rgb(254 226 226 / var(--tw-bg-opacity)); -} - -.bg-red-600 { - --tw-bg-opacity: 1; - background-color: rgb(220 38 38 / var(--tw-bg-opacity)); -} - -.bg-red-800 { - --tw-bg-opacity: 1; - background-color: rgb(153 27 27 / var(--tw-bg-opacity)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-opacity-50 { - --tw-bg-opacity: 0.5; -} - -.fill-gray-400 { - fill: #9ca3af; -} - -.fill-gray-600 { - fill: #4b5563; -} - -.p-1 { - padding: 0.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-4 { - padding: 1rem; -} - -.p-5 { - padding: 1.25rem; -} - -.p-8 { - padding: 2rem; -} - -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.pb-1 { - padding-bottom: 0.25rem; -} - -.pb-12 { - padding-bottom: 3rem; -} - -.pb-20 { - padding-bottom: 5rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pt-24 { - padding-top: 6rem; -} - -.pt-4 { - padding-top: 1rem; -} - -.pt-5 { - padding-top: 1.25rem; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.align-middle { - vertical-align: middle; -} - -.align-bottom { - vertical-align: bottom; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.font-bold { - font-weight: 700; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.leading-6 { - line-height: 1.5rem; -} - -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)); -} - -.text-gray-200 { - --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity)); -} - -.text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); -} - -.text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); -} - -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-gray-600 { - --tw-text-opacity: 1; - color: rgb(75 85 99 / var(--tw-text-opacity)); -} - -.text-gray-700 { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -.text-gray-900 { - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); -} - -.text-neutral-400 { - --tw-text-opacity: 1; - color: rgb(163 163 163 / var(--tw-text-opacity)); -} - -.text-red-600 { - --tw-text-opacity: 1; - color: rgb(220 38 38 / var(--tw-text-opacity)); -} - -.text-red-800 { - --tw-text-opacity: 1; - color: rgb(153 27 27 / var(--tw-text-opacity)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.opacity-0 { - opacity: 0; -} - -.opacity-100 { - opacity: 1; -} - -.opacity-25 { - opacity: 0.25; -} - -.opacity-75 { - opacity: 0.75; -} - -.shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-sm { - --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-xl { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.blur { - --tw-blur: blur(8px); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.filter { - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-all { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.duration-200 { - transition-duration: 200ms; -} - -.duration-300 { - transition-duration: 300ms; -} - -.ease-in { - transition-timing-function: cubic-bezier(0.4, 0, 1, 1); -} - -.ease-out { - transition-timing-function: cubic-bezier(0, 0, 0.2, 1); -} - -.is-disabled { - opacity: 0.25; - cursor: default; -} - -.last\:border-b-0:last-child { - border-bottom-width: 0px; -} - -.hover\:border-red-800:hover { - --tw-border-opacity: 1; - border-color: rgb(153 27 27 / var(--tw-border-opacity)); -} - -.hover\:border-white:hover { - --tw-border-opacity: 1; - border-color: rgb(255 255 255 / var(--tw-border-opacity)); -} - -.hover\:bg-gray-300:hover { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity)); -} - -.hover\:bg-gray-50:hover { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.hover\:bg-red-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(185 28 28 / var(--tw-bg-opacity)); -} - -.hover\:bg-red-800:hover { - --tw-bg-opacity: 1; - background-color: rgb(153 27 27 / var(--tw-bg-opacity)); -} - -.hover\:text-gray-800:hover { - --tw-text-opacity: 1; - color: rgb(31 41 55 / var(--tw-text-opacity)); -} - -.hover\:text-white:hover { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.hover\:underline:hover { - text-decoration-line: underline; -} - -.hover\:opacity-100:hover { - opacity: 1; -} - -.focus\:border-gray-200:focus { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} - -.focus\:border-red-800:focus { - --tw-border-opacity: 1; - border-color: rgb(153 27 27 / var(--tw-border-opacity)); -} - -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.group:hover .group-hover\:opacity-100 { - opacity: 1; -} - -.peer:checked ~ .peer-checked\:fill-gray-600 { - fill: #4b5563; -} - -@media (min-width: 450px) { - .xxs\:flex-row { - flex-direction: row; - } - - .xxs\:self-center { - align-self: center; - } -} - -@media (min-width: 576px) { - .xs\:mt-6 { - margin-top: 1.5rem; - } -} - -@media (min-width: 640px) { - .sm\:mx-0 { - margin-left: 0px; - margin-right: 0px; - } - - .sm\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .sm\:ml-3 { - margin-left: 0.75rem; - } - - .sm\:ml-4 { - margin-left: 1rem; - } - - .sm\:mt-0 { - margin-top: 0px; - } - - .sm\:block { - display: block; - } - - .sm\:inline-block { - display: inline-block; - } - - .sm\:flex { - display: flex; - } - - .sm\:h-10 { - height: 2.5rem; - } - - .sm\:h-screen { - height: 100vh; - } - - .sm\:w-10 { - width: 2.5rem; - } - - .sm\:w-auto { - width: auto; - } - - .sm\:max-w-lg { - max-width: 32rem; - } - - .sm\:scale-100 { - --tw-scale-x: 1; - --tw-scale-y: 1; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); - } - - .sm\:scale-95 { - --tw-scale-x: .95; - --tw-scale-y: .95; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:flex-row-reverse { - flex-direction: row-reverse; - } - - .sm\:items-start { - align-items: flex-start; - } - - .sm\:p-0 { - padding: 0px; - } - - .sm\:p-6 { - padding: 1.5rem; - } - - .sm\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .sm\:pb-4 { - padding-bottom: 1rem; - } - - .sm\:text-left { - text-align: left; - } - - .sm\:align-middle { - vertical-align: middle; - } - - .sm\:text-sm { - font-size: 0.875rem; - line-height: 1.25rem; - } -} - -@media (min-width: 768px) { - .md\:inline-block { - display: inline-block; - } - - .md\:min-w-24 { - min-width: 6rem; - } - - .md\:gap-4 { - gap: 1rem; - } - - .md\:px-0 { - padding-left: 0px; - padding-right: 0px; - } - - .md\:py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; - } - - .md\:pb-0 { - padding-bottom: 0px; - } - - .md\:text-base { - font-size: 1rem; - line-height: 1.5rem; - } -} - -.dark\:border-neutral-500:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(115 115 115 / var(--tw-border-opacity)); -} - -.dark\:border-neutral-600:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(82 82 82 / var(--tw-border-opacity)); -} - -.dark\:border-neutral-800:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(38 38 38 / var(--tw-border-opacity)); -} - -.dark\:border-red-600:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(220 38 38 / var(--tw-border-opacity)); -} - -.dark\:bg-black:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); -} - -.dark\:bg-neutral-400:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(163 163 163 / var(--tw-bg-opacity)); -} - -.dark\:bg-neutral-500:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(115 115 115 / var(--tw-bg-opacity)); -} - -.dark\:bg-neutral-600:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(82 82 82 / var(--tw-bg-opacity)); -} - -.dark\:bg-neutral-700:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(64 64 64 / var(--tw-bg-opacity)); -} - -.dark\:bg-neutral-800:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(38 38 38 / var(--tw-bg-opacity)); -} - -.dark\:bg-red-100:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(254 226 226 / var(--tw-bg-opacity)); -} - -.dark\:bg-red-600:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(220 38 38 / var(--tw-bg-opacity)); -} - -.dark\:bg-red-800:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(153 27 27 / var(--tw-bg-opacity)); -} - -.dark\:fill-neutral-400:where(.dark, .dark *) { - fill: #a3a3a3; -} - -.dark\:fill-neutral-600:where(.dark, .dark *) { - fill: #525252; -} - -.dark\:text-gray-500:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-200:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(229 229 229 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-300:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(212 212 212 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-400:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(163 163 163 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-50:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(250 250 250 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-500:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(115 115 115 / var(--tw-text-opacity)); -} - -.dark\:text-neutral-600:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(82 82 82 / var(--tw-text-opacity)); -} - -.dark\:text-red-300:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(252 165 165 / var(--tw-text-opacity)); -} - -.dark\:text-red-600:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(220 38 38 / var(--tw-text-opacity)); -} - -.dark\:text-white:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.dark\:opacity-50:where(.dark, .dark *) { - opacity: 0.5; -} - -.dark\:placeholder\:text-neutral-400:where(.dark, .dark *)::-moz-placeholder { - --tw-text-opacity: 1; - color: rgb(163 163 163 / var(--tw-text-opacity)); -} - -.dark\:placeholder\:text-neutral-400:where(.dark, .dark *)::placeholder { - --tw-text-opacity: 1; - color: rgb(163 163 163 / var(--tw-text-opacity)); -} - -.dark\:placeholder\:text-neutral-500:where(.dark, .dark *)::-moz-placeholder { - --tw-text-opacity: 1; - color: rgb(115 115 115 / var(--tw-text-opacity)); -} - -.dark\:placeholder\:text-neutral-500:where(.dark, .dark *)::placeholder { - --tw-text-opacity: 1; - color: rgb(115 115 115 / var(--tw-text-opacity)); -} - -.dark\:hover\:border-neutral-600:hover:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(82 82 82 / var(--tw-border-opacity)); -} - -.dark\:hover\:border-red-600:hover:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(220 38 38 / var(--tw-border-opacity)); -} - -.dark\:hover\:bg-neutral-500:hover:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(115 115 115 / var(--tw-bg-opacity)); -} - -.dark\:hover\:bg-neutral-600:hover:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(82 82 82 / var(--tw-bg-opacity)); -} - -.dark\:hover\:bg-red-600:hover:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(220 38 38 / var(--tw-bg-opacity)); -} - -.dark\:hover\:bg-red-700:hover:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(185 28 28 / var(--tw-bg-opacity)); -} - -.dark\:hover\:bg-red-800:hover:where(.dark, .dark *) { - --tw-bg-opacity: 1; - background-color: rgb(153 27 27 / var(--tw-bg-opacity)); -} - -.dark\:hover\:text-neutral-700:hover:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(64 64 64 / var(--tw-text-opacity)); -} - -.dark\:hover\:text-red-100:hover:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(254 226 226 / var(--tw-text-opacity)); -} - -.dark\:hover\:text-white:hover:where(.dark, .dark *) { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.dark\:focus\:border-neutral-500:focus:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(115 115 115 / var(--tw-border-opacity)); -} - -.dark\:focus\:border-red-800:focus:where(.dark, .dark *) { - --tw-border-opacity: 1; - border-color: rgb(153 27 27 / var(--tw-border-opacity)); -} - -.focus\:dark\:border-neutral-500:where(.dark, .dark *):focus { - --tw-border-opacity: 1; - border-color: rgb(115 115 115 / var(--tw-border-opacity)); -} - -.group:hover .group-hover\:dark\:fill-neutral-500:where(.dark, .dark *) { - fill: #737373; -} - -.peer:checked ~ .peer-checked\:dark\:fill-neutral-400:where(.dark, .dark *) { - fill: #a3a3a3; -} diff --git a/src/www/img/apple-touch-icon.png b/src/www/img/apple-touch-icon.png deleted file mode 100644 index 2ebeee55c62b7f3a820b11463d8582dc93282470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70851 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 diff --git a/src/www/img/favicon.png b/src/www/img/favicon.png deleted file mode 100644 index 470e2e9b367b168733e6b51f7d0d59d3d5036154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 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 diff --git a/src/www/index.html b/src/www/index.html deleted file mode 100644 index 72044728..00000000 --- a/src/www/index.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - WireGuard - - - - - - - - - - - -
-
-
-
-

- WireGuard -

-
- - - - - - {{$t("logout")}} - - - - -
-
-
-
- -
-
-
-

{{$t("clients")}}

-
-
- -
-
- -
- -
- - -
- - -
-
- - -
- -
-
- - -
- - - - - -
-
-
-
-
-
- - -
- - -
-
- - - - {{client.name}} - - - - - - - -
- -
- - - - {{client.address}} - - - - - - - - - - - · - - - - {{client.transferTxCurrent | bytes}}/s - - - - - · - - - - {{client.transferRxCurrent | bytes}}/s - - - - {{!uiTrafficStats ? " · " : ""}}{{new Date(client.latestHandshakeAt) | timeago}} - -
-
- - -
- - -
- - - - -
- {{client.transferTxCurrent | - bytes}}/s - -
{{bytes(client.transferTx)}} -
-
- -
- - -
- - - - - -
- {{client.transferRxCurrent | - bytes}}/s - -
{{bytes(client.transferRx)}} -
-
-
- -
-
- -
- -
-
- - -
-
-
- -
- -
-
- - - - - - - - - - - - - - - -
-
- -
- -
-
-

- {{$t("noClients")}}

- -

-
-
- - - - - -
-
-
- - -
-
-
- - -
-
-
- - -
-
- - - - - - - -
-
- - -
-
- - - - - - - -
-
-
- -
-

- - WireGuard -

- -
- -
- - - -
- - - - - - -
-
- -
- - - - - - - -
- -
- -

WireGuard Easy © 2021-2024 by Emile Nijssen is licensed under CC BY-NC-SA 4.0 · {{$t("donate")}}

- -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/src/www/js/api.js b/src/www/js/api.js deleted file mode 100644 index 356164c5..00000000 --- a/src/www/js/api.js +++ /dev/null @@ -1,141 +0,0 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ - -'use strict'; - -class API { - - async call({ method, path, body }) { - const res = await fetch(`./api${path}`, { - method, - headers: { - 'Content-Type': 'application/json', - }, - body: body - ? JSON.stringify(body) - : undefined, - }); - - if (res.status === 204) { - return undefined; - } - - const json = await res.json(); - - if (!res.ok) { - throw new Error(json.error || res.statusText); - } - - return json; - } - - async getRelease() { - return this.call({ - method: 'get', - path: '/release', - }); - } - - async getLang() { - return this.call({ - method: 'get', - path: '/lang', - }); - } - - async getuiTrafficStats() { - return this.call({ - method: 'get', - path: '/ui-traffic-stats', - }); - } - - async getChartType() { - return this.call({ - method: 'get', - path: '/ui-chart-type', - }); - } - - async getSession() { - return this.call({ - method: 'get', - path: '/session', - }); - } - - async createSession({ password }) { - return this.call({ - method: 'post', - path: '/session', - body: { password }, - }); - } - - async deleteSession() { - return this.call({ - method: 'delete', - path: '/session', - }); - } - - async getClients() { - return this.call({ - method: 'get', - path: '/wireguard/client', - }).then((clients) => clients.map((client) => ({ - ...client, - createdAt: new Date(client.createdAt), - updatedAt: new Date(client.updatedAt), - latestHandshakeAt: client.latestHandshakeAt !== null - ? new Date(client.latestHandshakeAt) - : null, - }))); - } - - async createClient({ name }) { - return this.call({ - method: 'post', - path: '/wireguard/client', - body: { name }, - }); - } - - async deleteClient({ clientId }) { - return this.call({ - method: 'delete', - path: `/wireguard/client/${clientId}`, - }); - } - - async enableClient({ clientId }) { - return this.call({ - method: 'post', - path: `/wireguard/client/${clientId}/enable`, - }); - } - - async disableClient({ clientId }) { - return this.call({ - method: 'post', - path: `/wireguard/client/${clientId}/disable`, - }); - } - - async updateClientName({ clientId, name }) { - return this.call({ - method: 'put', - path: `/wireguard/client/${clientId}/name/`, - body: { name }, - }); - } - - async updateClientAddress({ clientId, address }) { - return this.call({ - method: 'put', - path: `/wireguard/client/${clientId}/address/`, - body: { address }, - }); - } - -} diff --git a/src/www/js/app.js b/src/www/js/app.js deleted file mode 100644 index 6b13a3bf..00000000 --- a/src/www/js/app.js +++ /dev/null @@ -1,431 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable no-alert */ -/* eslint-disable no-undef */ -/* eslint-disable no-new */ - -'use strict'; - -function bytes(bytes, decimals, kib, maxunit) { - kib = kib || false; - if (bytes === 0) return '0 B'; - if (Number.isNaN(parseFloat(bytes)) && !Number.isFinite(bytes)) return 'NaN'; - const k = kib ? 1024 : 1000; - const dm = decimals != null && !Number.isNaN(decimals) && decimals >= 0 ? decimals : 2; - const sizes = kib - ? ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB', 'BiB'] - : ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB']; - let i = Math.floor(Math.log(bytes) / Math.log(k)); - if (maxunit !== undefined) { - const index = sizes.indexOf(maxunit); - if (index !== -1) i = index; - } - // eslint-disable-next-line no-restricted-properties - return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`; -} - -const i18n = new VueI18n({ - locale: localStorage.getItem('lang') || 'en', - fallbackLocale: 'en', - messages, -}); - -const UI_CHART_TYPES = [ - { type: false, strokeWidth: 0 }, - { type: 'line', strokeWidth: 3 }, - { type: 'area', strokeWidth: 0 }, - { type: 'bar', strokeWidth: 0 }, -]; - -const CHART_COLORS = { - rx: { light: 'rgba(128,128,128,0.3)', dark: 'rgba(255,255,255,0.3)' }, - tx: { light: 'rgba(128,128,128,0.4)', dark: 'rgba(255,255,255,0.3)' }, - gradient: { light: ['rgba(0,0,0,1.0)', 'rgba(0,0,0,1.0)'], dark: ['rgba(128,128,128,0)', 'rgba(128,128,128,0)'] }, -}; - -new Vue({ - el: '#app', - components: { - apexchart: VueApexCharts, - }, - i18n, - data: { - authenticated: null, - authenticating: false, - password: null, - requiresPassword: null, - - clients: null, - clientsPersist: {}, - clientDelete: null, - clientCreate: null, - clientCreateName: '', - clientEditName: null, - clientEditNameId: null, - clientEditAddress: null, - clientEditAddressId: null, - qrcode: null, - - currentRelease: null, - latestRelease: null, - - uiTrafficStats: false, - - uiChartType: 0, - uiShowCharts: localStorage.getItem('uiShowCharts') === '1', - uiTheme: localStorage.theme || 'auto', - prefersDarkScheme: window.matchMedia('(prefers-color-scheme: dark)'), - - chartOptions: { - chart: { - background: 'transparent', - stacked: false, - toolbar: { - show: false, - }, - animations: { - enabled: false, - }, - parentHeightOffset: 0, - sparkline: { - enabled: true, - }, - }, - colors: [], - stroke: { - curve: 'smooth', - }, - fill: { - type: 'gradient', - gradient: { - shade: 'dark', - type: 'vertical', - shadeIntensity: 0, - gradientToColors: CHART_COLORS.gradient[this.theme], - inverseColors: false, - opacityTo: 0, - stops: [0, 100], - }, - }, - dataLabels: { - enabled: false, - }, - plotOptions: { - bar: { - horizontal: false, - }, - }, - xaxis: { - labels: { - show: false, - }, - axisTicks: { - show: false, - }, - axisBorder: { - show: false, - }, - }, - yaxis: { - labels: { - show: false, - }, - min: 0, - }, - tooltip: { - enabled: false, - }, - legend: { - show: false, - }, - grid: { - show: false, - padding: { - left: -10, - right: 0, - bottom: -15, - top: -15, - }, - column: { - opacity: 0, - }, - xaxis: { - lines: { - show: false, - }, - }, - }, - }, - }, - methods: { - dateTime: (value) => { - return new Intl.DateTimeFormat(undefined, { - year: 'numeric', - month: 'short', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - }).format(value); - }, - async refresh({ - updateCharts = false, - } = {}) { - if (!this.authenticated) return; - - const clients = await this.api.getClients(); - this.clients = clients.map((client) => { - if (client.name.includes('@') && client.name.includes('.')) { - client.avatar = `https://gravatar.com/avatar/${sha256(client.name.toLowerCase().trim())}.jpg`; - } - - if (!this.clientsPersist[client.id]) { - this.clientsPersist[client.id] = {}; - this.clientsPersist[client.id].transferRxHistory = Array(50).fill(0); - this.clientsPersist[client.id].transferRxPrevious = client.transferRx; - this.clientsPersist[client.id].transferTxHistory = Array(50).fill(0); - this.clientsPersist[client.id].transferTxPrevious = client.transferTx; - } - - // Debug - // client.transferRx = this.clientsPersist[client.id].transferRxPrevious + Math.random() * 1000; - // client.transferTx = this.clientsPersist[client.id].transferTxPrevious + Math.random() * 1000; - // client.latestHandshakeAt = new Date(); - // this.requiresPassword = true; - - this.clientsPersist[client.id].transferRxCurrent = client.transferRx - this.clientsPersist[client.id].transferRxPrevious; - this.clientsPersist[client.id].transferRxPrevious = client.transferRx; - this.clientsPersist[client.id].transferTxCurrent = client.transferTx - this.clientsPersist[client.id].transferTxPrevious; - this.clientsPersist[client.id].transferTxPrevious = client.transferTx; - - if (updateCharts) { - this.clientsPersist[client.id].transferRxHistory.push(this.clientsPersist[client.id].transferRxCurrent); - this.clientsPersist[client.id].transferRxHistory.shift(); - - this.clientsPersist[client.id].transferTxHistory.push(this.clientsPersist[client.id].transferTxCurrent); - this.clientsPersist[client.id].transferTxHistory.shift(); - - this.clientsPersist[client.id].transferTxSeries = [{ - name: 'Tx', - data: this.clientsPersist[client.id].transferTxHistory, - }]; - - this.clientsPersist[client.id].transferRxSeries = [{ - name: 'Rx', - data: this.clientsPersist[client.id].transferRxHistory, - }]; - - client.transferTxHistory = this.clientsPersist[client.id].transferTxHistory; - client.transferRxHistory = this.clientsPersist[client.id].transferRxHistory; - client.transferMax = Math.max(...client.transferTxHistory, ...client.transferRxHistory); - - client.transferTxSeries = this.clientsPersist[client.id].transferTxSeries; - client.transferRxSeries = this.clientsPersist[client.id].transferRxSeries; - } - - client.transferTxCurrent = this.clientsPersist[client.id].transferTxCurrent; - client.transferRxCurrent = this.clientsPersist[client.id].transferRxCurrent; - - client.hoverTx = this.clientsPersist[client.id].hoverTx; - client.hoverRx = this.clientsPersist[client.id].hoverRx; - - return client; - }); - }, - login(e) { - e.preventDefault(); - - if (!this.password) return; - if (this.authenticating) return; - - this.authenticating = true; - this.api.createSession({ - password: this.password, - }) - .then(async () => { - const session = await this.api.getSession(); - this.authenticated = session.authenticated; - this.requiresPassword = session.requiresPassword; - return this.refresh(); - }) - .catch((err) => { - alert(err.message || err.toString()); - }) - .finally(() => { - this.authenticating = false; - this.password = null; - }); - }, - logout(e) { - e.preventDefault(); - - this.api.deleteSession() - .then(() => { - this.authenticated = false; - this.clients = null; - }) - .catch((err) => { - alert(err.message || err.toString()); - }); - }, - createClient() { - const name = this.clientCreateName; - if (!name) return; - - this.api.createClient({ name }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - deleteClient(client) { - this.api.deleteClient({ clientId: client.id }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - enableClient(client) { - this.api.enableClient({ clientId: client.id }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - disableClient(client) { - this.api.disableClient({ clientId: client.id }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - updateClientName(client, name) { - this.api.updateClientName({ clientId: client.id, name }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - updateClientAddress(client, address) { - this.api.updateClientAddress({ clientId: client.id, address }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => this.refresh().catch(console.error)); - }, - toggleTheme() { - const themes = ['light', 'dark', 'auto']; - const currentIndex = themes.indexOf(this.uiTheme); - const newIndex = (currentIndex + 1) % themes.length; - this.uiTheme = themes[newIndex]; - localStorage.theme = this.uiTheme; - this.setTheme(this.uiTheme); - }, - setTheme(theme) { - const { classList } = document.documentElement; - const shouldAddDarkClass = theme === 'dark' || (theme === 'auto' && this.prefersDarkScheme.matches); - classList.toggle('dark', shouldAddDarkClass); - }, - handlePrefersChange(e) { - if (localStorage.theme === 'auto') { - this.setTheme(e.matches ? 'dark' : 'light'); - } - }, - toggleCharts() { - localStorage.setItem('uiShowCharts', this.uiShowCharts ? 1 : 0); - }, - }, - filters: { - bytes, - timeago: (value) => { - return timeago.format(value, i18n.locale); - }, - }, - mounted() { - this.prefersDarkScheme.addListener(this.handlePrefersChange); - this.setTheme(this.uiTheme); - - this.api = new API(); - this.api.getSession() - .then((session) => { - this.authenticated = session.authenticated; - this.requiresPassword = session.requiresPassword; - this.refresh({ - updateCharts: this.updateCharts, - }).catch((err) => { - alert(err.message || err.toString()); - }); - }) - .catch((err) => { - alert(err.message || err.toString()); - }); - - setInterval(() => { - this.refresh({ - updateCharts: this.updateCharts, - }).catch(console.error); - }, 1000); - - this.api.getuiTrafficStats() - .then((res) => { - this.uiTrafficStats = res; - }) - .catch(() => { - this.uiTrafficStats = false; - }); - - this.api.getChartType() - .then((res) => { - this.uiChartType = parseInt(res, 10); - }) - .catch(() => { - this.uiChartType = 0; - }); - - Promise.resolve().then(async () => { - const lang = await this.api.getLang(); - if (lang !== localStorage.getItem('lang') && i18n.availableLocales.includes(lang)) { - localStorage.setItem('lang', lang); - i18n.locale = lang; - } - - const currentRelease = await this.api.getRelease(); - const latestRelease = await fetch('https://wg-easy.github.io/wg-easy/changelog.json') - .then((res) => res.json()) - .then((releases) => { - const releasesArray = Object.entries(releases).map(([version, changelog]) => ({ - version: parseInt(version, 10), - changelog, - })); - releasesArray.sort((a, b) => { - return b.version - a.version; - }); - - return releasesArray[0]; - }); - - console.log(`Current Release: ${currentRelease}`); - console.log(`Latest Release: ${latestRelease.version}`); - - if (currentRelease >= latestRelease.version) return; - - this.currentRelease = currentRelease; - this.latestRelease = latestRelease; - }).catch((err) => console.error(err)); - }, - computed: { - chartOptionsTX() { - const opts = { - ...this.chartOptions, - colors: [CHART_COLORS.tx[this.theme]], - }; - opts.chart.type = UI_CHART_TYPES[this.uiChartType].type || false; - opts.stroke.width = UI_CHART_TYPES[this.uiChartType].strokeWidth; - return opts; - }, - chartOptionsRX() { - const opts = { - ...this.chartOptions, - colors: [CHART_COLORS.rx[this.theme]], - }; - opts.chart.type = UI_CHART_TYPES[this.uiChartType].type || false; - opts.stroke.width = UI_CHART_TYPES[this.uiChartType].strokeWidth; - return opts; - }, - updateCharts() { - return this.uiChartType > 0 && this.uiShowCharts; - }, - theme() { - if (this.uiTheme === 'auto') { - return this.prefersDarkScheme.matches ? 'dark' : 'light'; - } - return this.uiTheme; - }, - }, -}); diff --git a/src/www/js/vendor/apexcharts.min.js b/src/www/js/vendor/apexcharts.min.js deleted file mode 100644 index 6052570e..00000000 --- a/src/www/js/vendor/apexcharts.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ApexCharts v3.46.0 - * (c) 2018-2024 ApexCharts - * Released under the MIT License. - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).ApexCharts=e()}(this,(function(){"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;it.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===i(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;e1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(t){var e=String(t).split(/[eE]/);if(1===e.length)return e[0];var i="",a=t<0?"-":"",s=e[0].replace(".",""),r=Number(e[1])+1;if(r<0){for(i=a+"0.";r++;)i+="0";return i+s.replace(/^-/,"")}for(r-=s.length;r--;)i+="0";return s+i}},{key:"getDimensions",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:"getBoundingClientRect",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:"getLargestStringFromArr",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}},{key:"getGCD",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a);e;){var s=e;e=t%e,t=s}return t/a}},{key:"getPrimeFactors",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:"mod",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":default:t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,o,n,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove("apexcharts-element-hidden"),e.classList.add("apexcharts-hidden-element-shown")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(o=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a,s=this.w,r=i.blur,o=i.top,n=i.left,l=i.color,h=i.opacity;if((null===(a=s.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.length)>0&&-1===s.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;var c=t.flood(Array.isArray(l)?l[e]:l,h).composite(t.sourceAlpha,"in").offset(n,o).gaussianBlur(r).merge(t.source);return t.blend(t.source,c)}},{key:"dropShadow",value:function(t,e){var i,a,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.top,o=e.left,n=e.blur,l=e.color,h=e.opacity,c=e.noUserSpaceOnUse,d=this.w;if(t.unfilter(!0),x.isIE()&&"radialBar"===d.config.chart.type)return t;if((null===(i=d.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(a=d.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.indexOf(s)))return t;return l=Array.isArray(l)?l[s]:l,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(l,h).composite(t.sourceAlpha,"in").offset(o,r).gaussianBlur(n):t.flood(l,h).composite(t.sourceAlpha,"in").offset(o,r).gaussianBlur(n).merge(t.source),t.blend(t.source,e)})),c||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf("NaN")>-1&&(t="");var o=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;"Z"==o[o.length-1][0]&&o[0].length>2&&(h=["L",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&"L"==g[0]&&u.length>2&&"L"==u[0]){var p,f,x=r(d),b=r(g),v=r(u);p=i(b,x,e),f=i(b,v,e),s(g,p),g.origPoint=b,n.push(g);var m=a(p,b,.5),y=a(b,f,.5),w=["C",m.x,m.y,y.x,y.y,f.x,f.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push(["Z"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":o,"stroke-linecap":n})}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,"stroke-width":null!==n?n:0,stroke:null!==l?l:"none","stroke-dasharray":h}),c.node.setAttribute("fill",r),c}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i})}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,p=void 0===u?null:u,f=t.strokeDashArray,x=void 0===f?0:f,b=this.w;return null===p&&(p=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":p,"stroke-width":o,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var o=["C",t,e,i,a,s,r].join(" ");return o}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,o){var n="A";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(n="a");var l=[n,t,e,i,a,s,r,o].join(" ");return l}},{key:"renderPaths",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,p=t.className,f=t.shouldClipToGrid,x=void 0===f||f,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,I=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);I?i=r:(i=o,A.globals.animationEnded=!0);var M=A.config.stroke.dashArray,T=0;T=Array.isArray(M)?M[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:p,strokeLinecap:h,strokeDashArray:T});if(z.attr("index",s),x&&z.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,z)),z.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,z)),z.node.addEventListener("mousedown",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&I&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}))}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,p=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,p=void 0!==n[3]?n[3]/100:null);var f=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==p&&t.at(p,e,a)})):c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),f){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),o="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===o){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type,d.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&o.attr("transform",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"getStackedSeriesTotalsByGroups",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,e){a.indexOf(t.name)>-1&&s.push(e)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute("transform","rotate(-90 ".concat(n," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var o=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");o&&(i=parseFloat(o.getAttribute("y"))),void 0!==e.seriesIndex&&s.globals.barHeight&&(i=i-s.globals.barHeight/2*(s.globals.series.length-1)+s.globals.barHeight*e.seriesIndex)}else{var n;if(s.config.yaxis[e.yAxisIndex].logarithmic)n=(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else n=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-n,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=n)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x));var n=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(n=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(o=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(o=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(n=parseFloat(e.x2)),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(o=o-i.globals.barWidth/2*(i.globals.series.length-1)+i.globals.barWidth*e.seriesIndex),"x1"===t?o:n}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),o=t.label.text,n=t.strokeDashArray;if(x.isNumber(r)){if(null===t.x2||void 0===t.x2){var l=this.annoCtx.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,n,t.borderWidth);e.appendChild(l.node),t.id&&l.node.classList.add(t.id)}else{if((a=this.helpers.getX1X2("x2",t))o){var h=o;o=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),S=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addPointAnnotation",value:function(t,e,i){this.w;var a=this.helpers.getX1X2("x1",t),s=this.helpers.getY1Y2("y1",t);if(x.isNumber(a)){var r={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},o=this.annoCtx.graphics.drawMarker(a+t.marker.offsetX,s+t.marker.offsetY,r);e.appendChild(o.node);var n=t.label.text?t.label.text:"",l=this.annoCtx.graphics.drawText({x:a+t.label.offsetX,y:s+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(l.attr({rel:i}),e.appendChild(l.node),t.customSVG.SVG){var h=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});h.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(s+t.customSVG.offsetY,")")}),h.node.innerHTML=t.customSVG.SVG,e.appendChild(h.node)}if(t.image.path){var c=t.image.width?t.image.width:20,d=t.image.height?t.image.height:20;o=this.annoCtx.addImage({x:a+t.image.offsetX-c/2,y:s+t.image.offsetY-d/2,width:c,height:d,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&o.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&o.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&o.node.addEventListener("click",t.click.bind(this,t))}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var C={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},L=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[C],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}},barLabels:{enabled:!1,margin:5,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:"16px",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),P=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new A(this),this.pointsAnnotations=new S(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,p=t.borderRadius,f=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-svg":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:n||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),I=L.globals.dom.baseEl.querySelector(b);I&&I.appendChild(P.node);var M=P.bbox();if(s){var T=this.graphics.drawRect(M.x-m,M.y-C,M.width+m+w,M.height+A+C,p,d||"transparent",1,g,f,u);I.insertBefore(T.node,P.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-svg":g,p=i.globals.dom.Paper.image(a);p.size(h,d).move(r,n);var f=i.globals.dom.baseEl.querySelector(u);return f&&f.appendChild(p.node),p}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new L,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),p=this.helpers.addBackgroundToAnno(u,g);return p&&l.insertBefore(p.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),I=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return r(t,[{key:"isValidDate",value:function(t){return"number"!=typeof t&&!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(t){return Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(u(i.months)),r=["\x01"].concat(u(i.shortMonths)),o=["\x02"].concat(u(i.days)),n=["\x03"].concat(u(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(g))).replace(/(^|[^\\])H/g,"$1"+g)).replace(/(^|[^\\])hh+/g,"$1"+l(p))).replace(/(^|[^\\])h/g,"$1"+p);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(f))).replace(/(^|[^\\])m/g,"$1"+f);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var v=g<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+m)).replace(/(^|[^\\])t/g,"$1"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),n=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),M=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return r(t,[{key:"xLabelFormat",value:function(t,e,i,a){var s=this.w;if("datetime"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new I(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:"defaultGeneralFormatter",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:"defaultYFormatter",value:function(t,e,i){var a=this.w;return x.isNumber(t)&&(t=0!==a.globals.yValueDecimal?t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal):a.globals.maxYArr[i]-a.globals.minYArr[i]<5?t.toFixed(1):t.toFixed(0)),t}},{key:"setLabelFormatters",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(x.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&"numeric"===e.config.xaxis.type){if(x.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),T=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,o=t.y1,n=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],g=l.config.series[s].name?l.config.series[s].name:"",u=l.globals.ttKeyFormatter,p=l.config.tooltip.y.title.formatter,f={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};("function"==typeof p&&(g=p(g,f)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||"datetime"===l.config.xaxis.type&&(d=new M(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new I(a).formatDate,w:l}));"function"==typeof u&&(d=u(d,f)),Number.isFinite(o)&&Number.isFinite(n)&&(h=o,c=n);var x="",b="",v=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if("datetime"===l.config.xaxis.type){var m=new I(a);x=m.formatDate(m.getDate(h),l.config.tooltip.x.format),b=m.formatDate(m.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:v,seriesName:g}},z=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
'+(i||"")+'
'+a+": "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[o].type||"rangeBar"===t.w.config.series[o].type?c:"".concat(h,""):c)+"
"},X=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.hideYAxis();return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),e(e({},this.bar()),{},{chart:{animations:{easing:"linear",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=T(e(e({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=T(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=T(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:"brush",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"stackedBars",value:function(){var t=this.bar();return e(e({},t),{},{plotOptions:e(e({},t.plotOptions),{},{bar:e(e({},t.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
\n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
"):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+o+"
"+(n?"
".concat(a[2],': ')+n+"
":"")+"
".concat(a[3],': ')+l+"
"+"
".concat(a[4],': ')+h+"
"}}]),t}(),E=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new L,r=new X(a);this.chartType=a.chart.type,a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&"object"===i(a)){var l,h,c,d,g,u,p,f,b={};b=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),null!==(l=a.plotOptions)&&void 0!==l&&null!==(h=l.bar)&&void 0!==h&&h.isFunnel&&(b=r.funnel()),a.chart.stacked&&"bar"===a.chart.type&&(b=r.stackedBars()),null!==(c=a.chart.brush)&&void 0!==c&&c.enabled&&(b=r.brush(b)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),null!==(d=a.plotOptions)&&void 0!==d&&null!==(g=d.bar)&&void 0!==g&&g.isDumbbell&&(a=r.dumbbell(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),(null!==(u=(a=this.checkForCatToNumericXAxis(this.chartType,b,a)).chart.sparkline)&&void 0!==u&&u.enabled||null!==(p=window.Apex.chart)&&void 0!==p&&null!==(f=p.sparkline)&&void 0!==f&&f.enabled)&&(b=r.sparkline(b)),n=x.extend(o,b)}var v=x.extend(n,window.Apex);return o=x.extend(v,a),o=this.handleUserInputErrors(o)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a,s,r=new X(i),o=("bar"===t||"boxPlot"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),n="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,l="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return o||n||!l||"between"===h||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new L;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new L;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new L;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new L;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),Y=function(){function t(){a(this,t)}return r(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]]}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),F=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(){var t=new E(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new Y).init(t)}}}]),t}(),R=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:n+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:n+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w,i=e.config.chart.type;return("bar"===i||"rangeBar"===i)&&e.config.plotOptions.bar.distributed||"heatmap"===i||"treemap"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color),o||(o="#fff",console.warn("undefined color - ApexCharts"));var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf("rgba")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),"pattern"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),"gradient"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),"image"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var p=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var f=o.gradient.gradientToColors[l.seriesNumber];n=f,f.indexOf("rgba")>-1&&(p=x.getOpacityFromRGBA(f))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf("rgb")>-1&&(g=x.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,p,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),H=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0)||r||d){x.isNumber(l.y[g])?p+=" w".concat(x.randomId()):p="apexcharts-nullpoint";var f=this.getMarkerConfig({cssClass:p,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(f.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(f.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(f.pSize=a),(l.x[g]<0||l.x[g]>o.globals.gridWidth||l.y[g]<-o.globals.markers.largestSize||l.y[g]>o.globals.gridHeight+o.globals.markers.largestSize)&&(f.pSize=0),(s=c.drawMarker(l.x[g],l.y[g],f)).attr("rel",u),s.attr("j",u),s.attr("index",e),s.node.setAttribute("default-marker-size",f.pSize),new v(this.ctx).setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),D=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(o.x))for(var c=0;cf.maxBubbleRadius&&(p=f.maxBubbleRadius)}a.config.chart.animations.enabled||(u=p);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,p,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new R(this.ctx),g=new H(this.ctx),u=new m(this.ctx),p=g.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:r,finishRadius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&"bubble"===n.config.series[s].type?a:null});a=p.pSize;var f,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:p.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[s][o]});if("circle"===p.shape?f=u.drawCircle(i):"square"!==p.shape&&"rect"!==p.shape||(f=u.drawRect(0,0,p.width-p.pointStrokeWidth/2,p.height-p.pointStrokeWidth/2,p.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),f.attr({x:t-p.width/2-p.pointStrokeWidth/2,y:e-p.height/2-p.pointStrokeWidth/2,cx:t,cy:e,fill:x,"fill-opacity":p.pointFillOpacity,stroke:p.pointStrokeColor,r:a,"stroke-width":p.pointStrokeWidth,"stroke-dasharray":p.pointStrokeDashArray,"stroke-opacity":p.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(f,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(f,0,"circle"===p.shape?a:{width:p.width,height:p.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(f)}),100)}))}if(n.globals.dataChanged&&"circle"===p.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var p=n.globals.dataLabelsRects[a][u];(t>p.x+p.width||e>p.y+p.height||e+de.globals.gridWidth+f.textRects.width+30)&&(n="");var x=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),"function"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(b=0,y=0),f.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,o=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),o=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var n=0;n=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),W=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new N(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new N(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,o=new I(a),n=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar="rangeBar"===s.chart.type&&r.isBarHorizontal,r.hasXaxisGroups="category"===s.xaxis.type&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),r.hasSeriesGroups=null===(e=t[0])||void 0===e?void 0:e.group,r.hasSeriesGroups){var l=[],h=u(new Set(t.map((function(t){return t.group}))));t.forEach((function(t,e){var i=h.indexOf(t.group);l[i]||(l[i]=[]),l[i].push(t.name)})),r.seriesGroups=l}for(var c=function(){for(var t=0;t0&&(this.twoDSeriesX=n,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var g=t[d].data.map((function(t){return x.parseNumber(t)}));r.series.push(g)}r.seriesZ.push(this.threeDSeries),void 0!==t[d].name?r.seriesNames.push(t[d].name):r.seriesNames.push("series-"+parseInt(d+1,10)),void 0!==t[d].color?r.seriesColors.push(t[d].color):r.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new X(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?"":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new M(this.ctx),p=l;o&&(h=u.xLabelFormat(c,l,p,{i:a,dateFormatter:new I(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new I(this.ctx).formatDate,w:n})));var f,x;e.length>0?(f=e[a].unit,x=null,e.forEach((function(t){"month"===t.unit?x="year":"day"===t.unit?x="month":"hour"===t.unit?x="day":"minute"===t.unit&&(x="hour")})),g=x===f,i=e[a].position,h=e[a].value):"datetime"===n.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var b=new m(this.ctx),v={};v=n.globals.rotateXLabels&&o?b.getTextRects(h,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):b.getTextRects(h,parseInt(r,10));var y=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&("NaN"===String(h)||s.indexOf(h)>=0&&y)&&(h=""),{x:i,text:h,textRect:v,isBold:g}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),"heatmap"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(t){if(!x.isIE11())return t.replace(/ /g," ");var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o="transparent"===a.config.chart.background?"#fff":a.config.chart.background,n=r.getContext("2d");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d="data:image/svg+xml,"+encodeURIComponent(l),g=new Image;g.crossOrigin="anonymous",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},g.src=d}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,o=t.lineDelimiter,n=void 0===o?"\n":o,l=this.w;i||(i=l.config.series);var h,c,d=[],g=[],p="",f=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),b=function(t){return"datetime"===l.config.xaxis.type&&String(t).length>=10},v=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),m=new W(this.ctx),y=new B(this.ctx),w=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new N(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=y.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(" ")),x.isNumber(i)?i:i.split(r).join("")},k=function(t,e){if(d.length&&0===e&&g.push(d.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(v)).map((function(){return""}));for(var a=0;a0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,p=l.xaxisForeColors||this.xaxisForeColors,f=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/Math.min(y,v-1),b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:f,fontSize:g,fontFamily:u,foreColor:Array.isArray(p)?t&&d.config.xaxis.convertedCatToNumeric?p[d.globals.minX+s-1]:p[s]:p,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a-o-2,2*-a-2,e.gridWidth+a+n+o+4,e.gridHeight+4*a+4,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasXaxisGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d2));s++);if(!t.globals.isBarHorizontal||this.isRangeBar){var r,o,n;if(i=this.xaxisLabels.length,this.isRangeBar)i--,a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount),(null===(r=t.globals.yAxisScale)||void 0===r||null===(o=r[0])||void 0===o||null===(n=o.result)||void 0===n?void 0:n.length)>0&&"datetime"!==t.config.xaxis.type&&(i=t.globals.yAxisScale[0].result.length-1);this._drawXYLines({xCount:i,tickAmount:a})}else i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a});return this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"on"!==i.config.xaxis.tickPlacement||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=1e-11,s=this.w,r=s.globals,o=s.config.xaxis,n=s.config.yaxis[i],l=void 0!==n.min&&null!==n.min,h=void 0!==n.max&&null!==n.min,c=void 0!==n.stepSize&&null!==n.stepSize,d=void 0!==n.tickAmount&&null!==n.tickAmount,g=((r.isBarHorizontal?r.svgWidth:r.svgHeight)-100)/15,u=d?n.tickAmount:10;if(r.isMultipleYAxis&&!d&&r.multiAxisTickAmount>0&&(u=r.multiAxisTickAmount,d=!0),u="dataPoints"===u?r.dataPoints-1:Math.abs(Math.round(u)),(t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=0,e=u,r.allSeriesCollapsed=!1),t>e){console.warn("axis.min cannot be greater than axis.max: swapping min and max");var p=e;e=t,t=p}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var f=[];u<1&&(u=1);var b=u,v=Math.abs(e-t);if(n.forceNiceScale){!l&&t>0&&t/v<.15&&(t=0,l=!0),!h&&e<0&&-e/v<.15&&(e=0,h=!0),v=Math.abs(e-t)}var m=v/b,y=m,w=Math.floor(Math.log10(y)),k=Math.pow(10,w),A=Math.ceil(y/k);if(m=y=(A=r.niceScaleAllowedMagMsd[0===r.yValueDecimal?0:1][A])*k,r.isBarHorizontal&&o.stepSize&&"datetime"!==o.type?(m=o.stepSize,c=!0):c&&(m=n.stepSize),c&&n.forceNiceScale&&Math.round(Math.log10(m))!=w){for(var S=v/u;mS;)m/=10}if(l&&h){var C=v/b;if(d)if(c)if(0!=x.mod(v,m)){var L=x.getGCD(m,C);m=C/L<10?L:C}else 0==x.mod(m,C)?m=C:(C=m,d=!1);else m=C;else if(c)0==x.mod(v,m)?C=m:m=C;else if(C=v/(b=Math.round(v/y)),0!=x.mod(v,m)){var P=x.getGCD(v,y);y/P<10&&(C=P),m=C}else C=m;b=Math.round(v/m)}else{if(l||h)h?t=d?e-m*b:m*Math.floor(t/m):l&&(e=d?t+m*b:m*Math.ceil(e/m));else if(d){var I=m/(e-t>e?1:2);e=(t=I*Math.floor(t/I))+m*b}else t=m*Math.floor(t/m),e=m*Math.ceil(e/m);v=Math.abs(e-t),m=x.getGCD(v,m),b=Math.round(v/m)}if(d||l||h||(b=Math.ceil((v-a)/(m+a)))>16&&x.getPrimeFactors(b).length<2&&b++,r.isMultipleYAxis&&0==r.multiAxisTickAmount&&(r.multiAxisTickAmount=b),b>g&&(!d&&!c||n.forceNiceScale)){var M=x.getPrimeFactors(b),T=M.length-1,z=b;t:for(var X=0;XO);return{result:f,niceMin:f[0],niceMax:f[f.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),i===Number.MAX_VALUE&&(i=5,s=1);for(var o=[],n=t;i>=0;)o.push(n),n+=s,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&x.isNumber(i)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.linearScale(0,10,10,t,s.yaxis[t].stepSize)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,i.config.xaxis.tickAmount?i.config.xaxis.tickAmount:s<10&&s>1?s+1:10,0,i.config.xaxis.stepSize):a.xAxisScale=this.linearScale(0,10,10),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,o){var n=o;i.series.forEach((function(t,i){t.name===e.seriesName&&(n=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))}));var l=a[n],h=s[n];t.setYScaleForIndex(o,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,o=[];i.forEach((function(t){t.alreadyExists&&(void 0===o[t.index]&&(o[t.index]=[]),o[t.index].push(t.index),o[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=o,o.forEach((function(t,e){o.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(o[e]=o[e].concat(o[a]))}))}));var n=o.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));o=o.filter((function(t){return!!t}));var l=n.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var o=g[i],n=u[i];s.chart.stacked&&(n=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(n+=t.value),o!==Number.MIN_VALUE&&(o+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(o="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(n="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,o,n))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,o){for(var n=0,l=0;l=i.xaxis.min){n=l;break}var h,c,d=a.globals.minYArr[o],g=a.globals.maxYArr[o],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(o,l){var p=o[n];r?(p=u[n],h=c=p,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),o[e]=i.xaxis.min){var r=t,o=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),o=Math.max(i[e],o))})),o>c&&null!==o&&(c=o),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.scales=new _(e)}return r(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=0,h=0,c=void 0;if(r.seriesX.length>=a){var d;if(l=0,h=(c=u(new Set((d=[]).concat.apply(d,u(r.seriesX.slice(t,a)))))).length-1,s.xaxis.min)for(l=0;ll&&c[h]>=s.xaxis.max;h--);}var g=r.series,p=g,f=g;"candlestick"===s.chart.type?(p=r.seriesCandleL,f=r.seriesCandleH):"boxPlot"===s.chart.type?(p=r.seriesCandleO,f=r.seriesCandleC):r.isRangeData&&(p=r.seriesRangeStart,f=r.seriesRangeEnd);for(var b=t;bp[b][v]&&p[b][v]<0&&(n=p[b][v])}else r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),"bar"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis){i=Number.MAX_VALUE;for(var a=0;at.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.config.series.map((function(t){return t.name}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,e){return i.indexOf(t.name)>-1?e:null})).filter((function(t){return null!==t})).forEach((function(r){for(var o=0;o0?a[i][o]+=parseFloat(e.series[r][o])+1e-4:s[i][o]+=parseFloat(e.series[r][o]))}}))})),Object.entries(a).forEach((function(t){var i=g(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),q=function(){function t(e,i){a(this,t),this.ctx=e,this.elgrid=i,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=0,"bottom"===s.config.xaxis.position&&(this.xAxisoffX=s.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new B(e)}return r(t,[{key:"drawYaxis",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.yaxis[t].labels.style,r=s.fontSize,o=s.fontFamily,n=s.fontWeight,l=a.group({class:"apexcharts-yaxis",rel:t,transform:"translate("+i.globals.translateYAxisX[t]+", 0)"});if(this.axesUtils.isYAxisHidden(t))return l;var h=a.group({class:"apexcharts-yaxis-texts-g"});l.add(h);var c=i.globals.yAxisScale[t].result.length-1,d=i.globals.gridHeight/c,g=i.globals.translateY,u=i.globals.yLabelFormatters[t],p=i.globals.yAxisScale[t].result.slice();p=this.axesUtils.checkForReversedLabels(t,p);var f="";if(i.config.yaxis[t].labels.show)for(var x=function(l){var x=p[l];x=u(x,l,i);var b=i.config.yaxis[t].labels.padding;i.config.yaxis[t].opposite&&0!==i.config.yaxis.length&&(b*=-1);var v="end";i.config.yaxis[t].opposite&&(v="start"),"left"===i.config.yaxis[t].labels.align?v="start":"center"===i.config.yaxis[t].labels.align?v="middle":"right"===i.config.yaxis[t].labels.align&&(v="end");var m=e.axesUtils.getYAxisForeColor(s.colors,t),y=i.config.yaxis[t].labels.offsetY;"heatmap"===i.config.chart.type&&(y-=(i.globals.gridHeight/i.globals.series.length-1)/2);var w=a.drawText({x:b,y:g+c/10+y+1,text:x,textAnchor:v,fontSize:r,fontFamily:o,fontWeight:n,maxWidth:i.config.yaxis[t].labels.maxWidth,foreColor:Array.isArray(m)?m[l]:m,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+s.cssClass});l===c&&(f=w),h.add(w);var k=document.createElementNS(i.globals.SVGNS,"title");if(k.textContent=Array.isArray(x)?x.join(" "):x,w.node.appendChild(k),0!==i.config.yaxis[t].labels.rotate){var A=a.rotateAroundCenter(f.node),S=a.rotateAroundCenter(w.node);w.node.setAttribute("transform","rotate(".concat(i.config.yaxis[t].labels.rotate," ").concat(A.x," ").concat(S.y,")"))}g+=d},b=c;b>=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var p=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var f=this.axesUtils.getLabel(h,c,p,g,this.drawnLabels,this.xaxisFontSize);p=f.x,u=f.text,this.drawnLabels.push(f.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var x=i.drawText({x:p,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,"title");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute("x",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=x.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=x.extend(C,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this,r=this.w.globals,o=this.w.config,n=new V(this.ctx,e),l=new q(this.ctx,e);r.axisCharts&&"radar"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=n.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=n.drawXaxis(),r.dom.elGraphical.add(i),o.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),"back"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,p=s.blur,f=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:p,color:f,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new E({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof i.config.colors[0]&&(i.globals.colors=i.config.series.map((function(t,a){var s=i.config.colors[a];return s||(s=i.config.colors[0]),"function"==typeof s?(e.isColorFn=!0,s({value:i.globals.axisCharts?i.globals.series[a][0]?i.globals.series[a][0]:0:i.globals.series[a],seriesIndex:a,dataPointIndex:a,w:i})):s})))),i.globals.seriesColors.map((function(t,e){t&&(i.globals.colors[e]=t)})),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var o=i.config.theme.monochrome.color,n=1/(r/i.config.theme.monochrome.shadeIntensity),l=i.config.theme.monochrome.shadeTo,h=0,c=0;c2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new M(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new I(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new I(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.right(null===(a=String(c(e,n)))||void 0===a?void 0:a.length)?t:e}),d),u=g=c(g,n);if(void 0!==g&&0!==g.length||(g=l.niceMax),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();g=x.getLargestStringFromArr(p),g=c(g,{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,p)}var f=new m(t.dCtx.ctx),b="rotate(".concat(r.labels.rotate," 0 0)"),v=f.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=f.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(h>y.width||h>v.width?h:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=function(t){return"bar"===t||"rangeBar"===t||"candlestick"===t||"boxPlot"===t},a=e.config.chart.type,s=0,r=i(a)?e.config.series.length:1;if(e.globals.comboBarCount>0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var o,n,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),o=l/t,e.globals.minXDiff&&e.globals.minXDiff/o>0&&(n=e.globals.minXDiff/o),n>t/2&&(n/=2),(s=n*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(e.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(e.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:"getLegendStyles",value:function(){var t,e,i,a=document.createElement("style");a.setAttribute("type","text/css");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute("nonce",s);var r=document.createTextNode("\n .apexcharts-legend {\n display: flex;\n overflow: auto;\n padding: 0 10px;\n }\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\n flex-wrap: wrap\n }\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\n flex-direction: column;\n bottom: 0;\n }\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\n justify-content: flex-start;\n }\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\n justify-content: center;\n }\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\n justify-content: flex-end;\n }\n .apexcharts-legend-series {\n cursor: pointer;\n line-height: normal;\n }\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\n display: flex;\n align-items: center;\n }\n .apexcharts-legend-text {\n position: relative;\n font-size: 14px;\n }\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\n pointer-events: none;\n }\n .apexcharts-legend-marker {\n position: relative;\n display: inline-block;\n cursor: pointer;\n margin-right: 3px;\n border-style: solid;\n }\n\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\n display: inline-block;\n }\n .apexcharts-legend-series.apexcharts-no-click {\n cursor: auto;\n }\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n display: none !important;\n }\n .apexcharts-inactive-legend {\n opacity: 0.45;\n }");return a.appendChild(r),a}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),n=a.config.chart.type;if("pie"===n||"polarArea"===n||"donut"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=x.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var o=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(o,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var n=e.childNodes,l=0;l0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}]),t}(),lt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed="bar"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new nt(this)}return r(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h,c=o(a[l],{seriesIndex:l,w:e}),d=!1,g=!1;if(e.globals.collapsedSeries.length>0)for(var u=0;u0)for(var p=0;p0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=o+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new N(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new N(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),o("zoomOut",this.elZoomOut,'\n \n \n\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};n("zoom"),n("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),o("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+o+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g="x"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;"resizing"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n("x"),y:n("y"),width:n("width"),height:n("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,o,n,l=i.gridRect.getBoundingClientRect(),h=r.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(h.left-l.left)*s.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(h.right-l.left)*s.invertedYRatio,o=0,n=1):(t=a.globals.xAxisScale.niceMin+(h.left-l.left)*s.xRatio,e=a.globals.xAxisScale.niceMin+(h.right-l.left)*s.xRatio,o=a.globals.yAxisScale[0].niceMin+(l.bottom-h.bottom)*s.yRatio[0],n=a.globals.yAxisScale[0].niceMax-(h.top-l.top)*s.yRatio[0]);var c={xaxis:{min:t,max:e},yaxis:{min:o,max:n}};a.config.chart.events.selection(i.ctx,c),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,c)}),o))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),p=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(p={min:h,max:c}),"xy"!==i&&"y"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var f=new _(s.ctx);u=f.autoScaleY(s.ctx,u,{xaxis:p})}if(o){var b=o.getBeforeZoomRange(p,u);b&&(p=b.xaxis?b.xaxis:p,u=b.yaxis?b.yaxis:u)}var v={xaxis:p};a.config.chart.group||(v.yaxis=u),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(p,u)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(y=x.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new _(this.ctx).autoScaleY(this.ctx,s,{xaxis:l}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(ht),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var p=Math.round(g/h),f=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(g/h),p-=1);var b=null,v=null,m=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,p=v.j,null!==b&&(m=r.globals.seriesXvalues[b],p=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=f:r.globals.capturedDataPointIndex=p,{capturedSeries:b,j:r.globals.isBarHorizontal?f:p,hoverX:g,hoverY:u}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a<=h&&(h=a,n=i)}))})),-1!==n){var c=a[r][n],d=Math.abs(e-c);o=r,a.forEach((function(t,i){var a=Math.abs(e-t[n]);a<=d&&(d=a,o=i)}))}return{index:o,j:n}}},{key:"getFirstActiveXArray",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");(t=u(t)).sort((function(t,e){var i=Number(t.getAttribute("data:realIndex")),a=Number(e.getAttribute("data:realIndex"));return ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(t){return this.getElMarkers(t).length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
".concat(i.val,"
")})),v.innerHTML=t+"",m.innerHTML=e+""};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==p&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==p?p:"");if(o&&f[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(".apexcharts-tooltip-marker"),k=a[e].querySelector(".apexcharts-tooltip-text");0==parseFloat(c)?(w.style.display="none",k.style.display="none"):(w.style.display="block",k.style.display="block")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?f[0].parentNode.style.display="none":f[0].parentNode.style.display=l.config.tooltip.items.display}}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",o="",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new M(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new I(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:n}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(h.setAttribute("r",n),h.setAttribute("cx",i),h.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new N(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute("r",n),l[h]&&l[h].setAttribute("cy",d)):l[h]&&l[h].setAttribute("r",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,n)}},{key:"moveStickyTooltipOverBars",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new N(this.ctx).getActiveConfigSeriesIndex("desc")+1);var o=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"']"));o||"number"!=typeof e||(o=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"']")));var n=o?parseFloat(o.getAttribute("cx")):0,l=o?parseFloat(o.getAttribute("cy")):0,h=o?parseFloat(o.getAttribute("barWidth")):0,c=a.getElGrid().getBoundingClientRect(),d=o&&(o.classList.contains("apexcharts-candlestick-area")||o.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(o&&!d&&(n-=s%2!=0?h/2:0),o&&d&&i.globals.comboCharts&&(n-=h/2)):i.globals.isBarHorizontal||(n=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(n)&&(n=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(n),a.fixedTooltip||this.moveTooltip(n,l||i.globals.gridHeight)}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new m(this.ctx),i=new H(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),o=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var n=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-n.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w;var i=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!i.globals.isBarHorizontal&&"rangeBar"===i.config.chart.type&&i.config.plotOptions.bar.rangeBarGroupRows}return r(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),g=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var p=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-p.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-p.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var g=x.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-o.tooltipRect.ttHeight);var p=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),f=r.globals.isMultipleYAxis?r.config.yaxis[p]&&r.config.yaxis[p].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!f?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(f&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!f||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),c=c+r.globals.translateY-o.tooltipRect.ttHeight/2,n.style.left=h+r.globals.translateX+"px",n.style.top=c+"px")}},{key:"getBarTooltipXY",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,o=this.ttCtx,n=0,l=0,h=0,c=0,d=0,g=i.target.classList;if(g.contains("apexcharts-bar-area")||g.contains("apexcharts-candlestick-area")||g.contains("apexcharts-boxPlot-area")||g.contains("apexcharts-rangebar-area")){var u=i.target,p=u.getBoundingClientRect(),f=a.elGrid.getBoundingClientRect(),x=p.height;d=p.height;var b=p.width,v=parseInt(u.getAttribute("cx"),10),m=parseInt(u.getAttribute("cy"),10);c=parseFloat(u.getAttribute("barWidth"));var y="touchmove"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(u.getAttribute("j"),10),n=parseInt(u.parentNode.getAttribute("rel"),10)-1;var w=u.getAttribute("data-range-y1"),k=u.getAttribute("data-range-y2");s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute("data:realIndex"),10));var A=function(t){return s.globals.isXNumeric?v-b/2:e.isVerticalGroupedRangeBar?v+b/2:v-o.dataPointsDividedWidth+b/2},S=function(){return m-o.dataPointsDividedHeight+x/2-o.tooltipRect.ttHeight/2};o.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:n,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!o.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-f.left+15,h=S()):(l=A(),h=i.clientY-f.top-o.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=v)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var o=a.getElGrid().getBoundingClientRect(),n=(e-o.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-n);a.tooltipPosition.moveYCrosshairs(e-o.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new pt(this),this.intersect=new ft(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement("div");o.classList.add("apexcharts-tooltip-series-group"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add("apexcharts-tooltip-series-group-hidden");var n=document.createElement("span");n.classList.add("apexcharts-tooltip-marker"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement("div");l.classList.add("apexcharts-tooltip-text"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf("bottom")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=o+"px",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new N(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var p=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=p.x,i=p.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var f=0;fl.width)this.handleMouseOut(a);else if(null!==n)this.handleStickyCapturedSeries(t,n,a,o);else if(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,o,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,S=this.w,C=i;"mouseup"===t.type&&this.markerClick(t,a,s),null===A&&(A=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(a),P=this.tooltipUtil.getElBars();if(S.config.legend.tooltipHoverFormatter){var I=S.config.legend.tooltipHoverFormatter,M=Array.from(this.legendLabels);M.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T0?C.marker.enlargePoints(s):C.tooltipPosition.moveDynamicPointsOnHover(s);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(P),this.barSeriesHeight>0)){var R=new m(this.ctx),H=S.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s,a);for(var D=0;D0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(u-=c*A)),k){u=u+g.height/2-v/2-2}var C=this.barCtx.series[s][r]<0,L=l;switch(this.barCtx.isReversed&&(L=l-d+(C?2*d:0),l-=d),x.position){case"center":p=k?C?L-d/2+w:L+d/2-w:C?L-d/2+g.height/2+w:L+d/2+g.height/2-w;break;case"bottom":p=k?C?L-d+w:L+d-w:C?L-d+g.height+v+w:L+d-g.height/2+v-w;break;case"top":p=k?C?L+w:L-w:C?L-g.height/2-w:L+g.height+w}if(this.barCtx.lastActiveBarSerieIndex===o&&b.enabled){var P=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:r}),f.fontSize);e=C?L-P.height/2-w-b.offsetY+18:L+P.height+w+b.offsetY-18,i=u+b.offsetX}return a.config.chart.stacked||(p<0?p=0+v:p+g.height/3>a.globals.gridHeight&&(p=a.globals.gridHeight-v)),{bcx:h,bcy:l,dataLabelsX:u,dataLabelsY:p,totalDataLabelsX:i,totalDataLabelsY:e,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.groupIndex,n=t.bcy,l=t.barHeight,h=t.barWidth,c=t.textRects,d=t.dataLabelsX,g=t.strokeWidth,u=t.dataLabelsConfig,p=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,x=t.offX,b=t.offY,v=e.globals.gridHeight/e.globals.dataPoints;h=Math.abs(h);var y,w,k=(n+=-1!==o?o*l:0)-(this.barCtx.isRangeBar?0:v)+l/2+c.height/2+b-3,A="start",S=this.barCtx.series[a][s]<0,C=i;switch(this.barCtx.isReversed&&(C=i+h-(S?2*h:0),i=e.globals.gridWidth-h),p.position){case"center":d=S?C+h/2-x:Math.max(c.width/2,C-h/2)+x;break;case"bottom":d=S?C+h-g-Math.round(c.width/2)-x:C-h+g+Math.round(c.width/2)+x;break;case"top":d=S?C-g+Math.round(c.width/2)-x:C-g-Math.round(c.width/2)+x}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var L=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),u.fontSize);S?(y=C-g+Math.round(L.width/2)-x-f.offsetX-15,A="end"):y=C-g-Math.round(L.width/2)+x+f.offsetX+15,w=k+f.offsetY}return e.config.chart.stacked||(d<0?d=d+c.width+g:d+c.width/2>e.globals.gridWidth&&(d=e.globals.gridWidth-c.width-g)),{bcx:i,bcy:n,dataLabelsX:d,dataLabelsY:k,totalDataLabelsX:y,totalDataLabelsY:w,totalDataLabelsAnchor:A}}},{key:"drawCalculatedDataLabels",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(i,", ").concat(a,")"));var u=new O(this.barCtx.ctx),p=new m(this.barCtx.ctx),f=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=p.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==s&&(v=f(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d}))),!s&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(v="");var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=""):n.height/1.6>Math.abs(l)&&(v=""));var k=e({},c);this.barCtx.isHorizontal&&s<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.barWidth,o=t.barHeight,n=t.realIndex,l=t.textAnchor,h=t.barTotalDataLabelsConfig,c=this.w,d=new m(this.barCtx.ctx);return h.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===n&&(e=d.drawText({x:i-(!c.globals.isBarHorizontal&&c.globals.seriesGroups.length?r/c.globals.seriesGroups.length:0),y:a-(c.globals.isBarHorizontal&&c.globals.seriesGroups.length?o/c.globals.seriesGroups.length:0),foreColor:h.style.color,text:s,textAnchor:l,fontFamily:h.style.fontFamily,fontSize:h.style.fontSize,fontWeight:h.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}-1===String(this.barCtx.barOptions.columnWidth).indexOf("%")&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return l.globals.barHeight=s,l.globals.barWidth=r,{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:"initializeStackedPrevVars",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]})):(t.prevY=[],t.prevX=[],t.prevYF=[],t.prevXF=[],t.prevYVal=[],t.prevXVal=[])}},{key:"initializeStackedXYVars",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]})):(t.xArrj=[],t.xArrjF=[],t.xArrjVal=[],t.yArrj=[],t.yArrjF=[],t.yArrjVal=[])}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new R(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[e]:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new N(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.columnWidthOffset&&(p=a-d.config.series[l].data[c].columnWidthOffset/2,u=i+d.config.series[l].data[c].columnWidthOffset);var f=p,x=p+u;s+=.001,r+=.001;var b=g.move(f,s),v=g.move(f,s),y=g.line(x-o,s);if(d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1)),b=b+g.line(f,r)+g.line(x-o,r)+g.line(x-o,s)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+g.line(f,s)+y+y+y+y+y+g.line(f,s)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.yArrj.push(r),w.yArrjF.push(Math.abs(s-r)),w.yArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.barHeightOffset&&(u=i-d.config.series[l].data[c].barHeightOffset/2,p=a+d.config.series[l].data[c].barHeightOffset);var f=u,x=u+p;s+=.001,r+=.001;var b=g.move(s,f),v=g.move(s,f);d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1));var y=g.line(s,x-o);if(b=b+g.line(r,f)+g.line(r,x-o)+y+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+g.line(s,f)+y+y+y+y+y+g.line(s,f)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.xArrj.push(r),w.xArrjF.push(Math.abs(s-r)),w.xArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),i}},{key:"getGoalValues",value:function(t,i,a,s,r){var n=this,l=this.w,h=[],c=function(e,s){var r;h.push((o(r={},t,"x"===t?n.getXForValue(e,i,!1):n.getYForValue(e,a,!1)),o(r,"attrs",s),r))};if(l.globals.seriesGoals[s]&&l.globals.seriesGoals[s][r]&&Array.isArray(l.globals.seriesGoals[s][r])&&l.globals.seriesGoals[s][r].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,g={strokeHeight:"x"===t?0:l.globals.markers.size[s],strokeWidth:"x"===t?l.globals.markers.size[s]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(d[s])?d[s][0]:d[s]};c(l.globals.seriesRangeStart[s][r],g),c(l.globals.seriesRangeEnd[s][r],e(e({},g),{},{strokeColor:Array.isArray(d[s])?d[s][1]:d[s]}))}return h}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:"apexcharts-bar-goals-groups"});l.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)})),l}},{key:"drawBarShadow",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,o=e.x1,n=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=n+i.barHeight,g=new m(this.barCtx.ctx),u=new x,p=g.move(o,d)+g.line(r,d)+g.line(l,c)+g.line(h,c)+g.line(o,d)+("around"===s.config.plotOptions.bar.borderRadiusApplication?" Z":" z");return g.drawPath({d:p,fill:u.shadeColor(.5,x.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadows"})}},{key:"getZeroValueEncounters",value:function(t){var e=t.i,i=t.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach((function(t,a){t[i]&&s++,athis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();p=S.y,k=S.barHeight,c=S.yDivision,g=S.zeroW,u=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||b.push(u+A/2);var C=s.group({class:"apexcharts-datalabels","data:realIndex":v});a.globals.delayedElements.push({el:C.node}),C.node.classList.add("apexcharts-element-hidden");var L=s.group({class:"apexcharts-bar-goals-markers"}),P=s.group({class:"apexcharts-bar-shadows"});a.globals.delayedElements.push({el:P.node}),P.node.classList.add("apexcharts-element-hidden");for(var I=0;I0){var E=this.barHelpers.drawBarShadow({color:"string"==typeof X&&-1===(null==X?void 0:X.indexOf("url"))?X:x.hexToRgba(a.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:T});E&&P.add(E)}this.pathArr.push(T);var Y=this.barHelpers.drawGoalLine({barXPosition:T.barXPosition,barYPosition:T.barYPosition,goalX:T.goalX,goalY:T.goalY,barHeight:k,barWidth:A});Y&&L.add(Y),p=T.y,u=T.x,I>0&&b.push(u+A/2),f.push(p),this.renderSeries({realIndex:v,pathFill:X,j:I,i:n,pathFrom:T.pathFrom,pathTo:T.pathTo,strokeWidth:M,elSeries:w,x:u,y:p,series:t,barHeight:T.barHeight?T.barHeight:k,barWidth:T.barWidth?T.barWidth:A,elDataLabelsWrap:C,elGoalsMarkers:L,elBarShadows:P,visibleSeries:this.visibleI,type:"bar"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=f,o.add(w)}return o}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.groupIndex,n=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,g=t.y,u=t.y1,p=t.y2,f=t.series,x=t.barHeight,b=t.barWidth,y=t.barXPosition,w=t.barYPosition,k=t.elDataLabelsWrap,A=t.elGoalsMarkers,S=t.elBarShadows,C=t.visibleSeries,L=t.type,P=this.w,I=new m(this.ctx);a||(a=this.barOptions.distributed?P.globals.stroke.colors[s]:P.globals.stroke.colors[e]),P.config.series[r].data[s]&&P.config.series[r].data[s].strokeColor&&(a=P.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var M=s/P.config.chart.animations.animateGradually.delay*(P.config.chart.animations.speed/P.globals.dataPoints)/2.4,T=I.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:P.config.stroke.lineCap,fill:i,animationDelay:M,initialSpeed:P.config.chart.animations.speed,dataChangeSpeed:P.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(L,"-area")});T.attr("clip-path","url(#gridRectMask".concat(P.globals.cuid,")"));var z=P.config.forecastDataPoints;z.count>0&&s>=P.globals.dataPoints-z.count&&(T.node.setAttribute("stroke-dasharray",z.dashArray),T.node.setAttribute("stroke-width",z.strokeWidth),T.node.setAttribute("fill-opacity",z.fillOpacity)),void 0!==u&&void 0!==p&&(T.attr("data-range-y1",u),T.attr("data-range-y2",p)),new v(this.ctx).setSelectionFilter(T,e,s),c.add(T);var X=new vt(this).handleBarDataLabels({x:d,y:g,y1:u,y2:p,i:r,j:s,series:f,realIndex:e,groupIndex:o,barHeight:x,barWidth:b,barXPosition:y,barYPosition:w,renderedPath:T,visibleSeries:C});return null!==X.dataLabels&&k.add(X.dataLabels),X.totalDataLabels&&k.add(X.totalDataLabels),c.add(k),A&&c.add(A),S&&c.add(S),c}},{key:"drawBarPaths",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,g=i.j;if(c.globals.isXNumeric)e=(n=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var u=0,p=0;c.globals.seriesPercent.forEach((function(t,e){t[g]&&u++,e0&&(a=this.seriesLen*a/u),e=n+a*this.visibleI,e-=a*p}else e=n+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][g],r)-r)/2),o=this.barHelpers.getXForValue(this.series[d][g],r);var f=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(n+=l),this.barHelpers.barBackground({j:g,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:f.pathTo,pathFrom:f.pathFrom,x1:r,x:o,y:n,goalX:this.barHelpers.getGoalValues("x",r,null,d,g),barYPosition:e,barHeight:a}}},{key:"drawColumnPaths",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,o=t.barWidth,n=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,g=i.i,u=i.j,p=i.bc;if(c.globals.isXNumeric){var f=this.getBarXForNumericXAxis({x:a,j:u,realIndex:d,barWidth:o});a=f.x,e=f.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var x=this.barHelpers.getZeroValueEncounters({i:g,j:u}),b=x.nonZeroColumns,v=x.zeroEncounters;b>0&&(o=this.seriesLen*o/b),e=a+o*this.visibleI,e-=o*v}else e=a+o*this.visibleI;s=this.barHelpers.getYForValue(this.series[g][u],n);var m=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:o,y1:n,y2:s,strokeWidth:l,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:p,j:u,i:g,x1:e-l/2-o*this.visibleI,x2:o*this.seriesLen+l/2,elSeries:h}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,n,g,u),barXPosition:e,barWidth:o}}},{key:"getBarXForNumericXAxis",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,o=a;return r.globals.seriesX[a].length||(o=r.globals.maxValsInArrayIndex),r.globals.seriesX[o][s]&&(e=(r.globals.seriesX[o][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),n=0,l=0,h=function(r,h){var c=void 0,d=void 0,g=void 0,u=void 0,p=-1;a.groupCtx=a,s.globals.seriesGroups.forEach((function(t,e){t.indexOf(s.config.series[r].name)>-1&&(p=e)})),-1!==p&&(a.groupCtx=a[s.globals.seriesGroups[p]]);var f=[],b=[],v=s.globals.comboCharts?i[r]:r;a.yRatio.length>1&&(a.yaxisIndex=v),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var m=a.graphics.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:r+1,"data:realIndex":v});a.ctx.series.addCollapsedClassToSeries(m,v);var y=a.graphics.group({class:"apexcharts-datalabels","data:realIndex":v}),w=a.graphics.group({class:"apexcharts-bar-goals-markers"}),k=0,A=0,S=a.initialPositions(n,l,c,d,g,u);l=S.y,k=S.barHeight,d=S.yDivision,u=S.zeroW,n=S.x,A=S.barWidth,c=S.xDivision,g=S.zeroH,s.globals.barHeight=k,s.globals.barWidth=A,a.barHelpers.initializeStackedXYVars(a),1===a.groupCtx.prevY.length&&a.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(a.groupCtx.prevY[0]=a.groupCtx.prevY[0].map((function(t){return g})),a.groupCtx.prevYF[0]=a.groupCtx.prevYF[0].map((function(t){return 0})));for(var C=0;C1?(i=c.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:h*parseInt(c.config.plotOptions.bar.columnWidth,10)/100,-1===String(c.config.plotOptions.bar.columnWidth).indexOf("%")&&(h=parseInt(c.config.plotOptions.bar.columnWidth,10)),s=c.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?c.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=c.globals.padHorizontal+(i-h)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:null!==(o=c.globals.seriesGroups)&&void 0!==o&&o.length?l/c.globals.seriesGroups.length:l,barWidth:null!==(n=c.globals.seriesGroups)&&void 0!==n&&n.length?h/c.globals.seriesGroups.length:h,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.groupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,g=this.w,u=n+(-1!==l?l*a:0),p=i.i,f=i.j,x=0,b=0;b0){var m=r;this.groupCtx.prevXVal[v-1][f]<0?m=this.series[p][f]>=0?this.groupCtx.prevX[v-1][f]+x-2*(this.isReversed?x:0):this.groupCtx.prevX[v-1][f]:this.groupCtx.prevXVal[v-1][f]>=0&&(m=this.series[p][f]>=0?this.groupCtx.prevX[v-1][f]:this.groupCtx.prevX[v-1][f]-x+2*(this.isReversed?x:0)),e=m}else e=r;o=null===this.series[p][f]?e:e+this.series[p][f]/this.invertedYRatio-2*(this.isReversed?this.series[p][f]/this.invertedYRatio:0);var y=this.barHelpers.getBarpaths({barYPosition:u,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:p,j:f,w:g});return this.barHelpers.barBackground({j:f,i:p,y1:u,y2:a,elSeries:d}),n+=c,{pathTo:y.pathTo,pathFrom:y.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,p,f),barYPosition:u,x:o,y:n}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.groupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,g=e.j,u=e.bc;if(c.globals.isXNumeric){var p=c.globals.seriesX[d][g];p||(p=0),i=(p-c.globals.minX)/this.xRatio-r/2,c.globals.seriesGroups.length&&(i=(p-c.globals.minX)/this.xRatio-r/2*c.globals.seriesGroups.length)}for(var f,x=i+(-1!==n?n*r:0),b=0,v=0;v0&&!c.globals.isXNumeric||m>0&&c.globals.isXNumeric&&c.globals.seriesX[d-1][g]===c.globals.seriesX[d][g]){var y,w,k,A=Math.min(this.yRatio.length+1,d+1);if(void 0!==this.groupCtx.prevY[m-1]&&this.groupCtx.prevY[m-1].length)for(var S=1;S=0?k-b+2*(this.isReversed?b:0):k;break}if((null===(I=this.groupCtx.prevYVal[m-L])||void 0===I?void 0:I[g])>=0){w=this.series[d][g]>=0?k:k+b-2*(this.isReversed?b:0);break}}void 0===w&&(w=c.globals.gridHeight),f=null!==(y=this.groupCtx.prevYF[0])&&void 0!==y&&y.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,m).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:w}else f=o;a=this.series[d][g]?f-this.series[d][g]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[d][g]/this.yRatio[this.yaxisIndex]:0):f;var M=this.barHelpers.getColumnPaths({barXPosition:x,barWidth:r,y1:f,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:g,w:c});return this.barHelpers.barBackground({bc:u,j:g,i:d,x1:x,x2:r,elSeries:h}),i+=s,{pathTo:M.pathTo,pathFrom:M.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,d,g),barXPosition:x,x:c.globals.isXNumeric?i-s:i,y:a}}}]),s}(yt),kt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i,a){var s=this,r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=new R(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=r.config.plotOptions.bar.horizontal;var h=new y(this.ctx,r);t=h.getLogSeries(t),this.series=t,this.yRatio=h.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var c=o.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),d=function(i){s.isBoxPlot="boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[i].type;var n,h,d,g,u=void 0,p=void 0,f=[],b=[],v=r.globals.comboCharts?a[i]:i,m=o.group({class:"apexcharts-series",seriesName:x.escapeString(r.globals.seriesNames[v]),rel:i+1,"data:realIndex":v});s.ctx.series.addCollapsedClassToSeries(m,v),t[i].length>0&&(s.visibleI=s.visibleI+1);var y,w;s.yRatio.length>1&&(s.yaxisIndex=v);var k=s.barHelpers.initialPositions();p=k.y,y=k.barHeight,h=k.yDivision,g=k.zeroW,u=k.x,w=k.barWidth,n=k.xDivision,d=k.zeroH,b.push(u+w/2);for(var A=o.group({class:"apexcharts-datalabels","data:realIndex":v}),S=function(a){var o=s.barHelpers.getStrokeWidth(i,a,v),c=null,x={indexes:{i:i,j:a,realIndex:v},x:u,y:p,strokeWidth:o,elSeries:m};c=s.isHorizontal?s.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:h,barHeight:y,zeroW:g})):s.drawVerticalBoxPaths(e(e({},x),{},{xDivision:n,barWidth:w,zeroH:d})),p=c.y,u=c.x,a>0&&b.push(u+w/2),f.push(p),c.pathTo.forEach((function(e,n){var h=!s.isBoxPlot&&s.candlestickOptions.wick.useFillColor?c.color[n]:r.globals.stroke.colors[i],d=l.fillPath({seriesNumber:v,dataPointIndex:a,color:c.color[n],value:t[i][a]});s.renderSeries({realIndex:v,pathFill:d,lineFill:h,j:a,i:i,pathFrom:c.pathFrom,pathTo:e,strokeWidth:o,elSeries:m,x:u,y:p,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:A,visibleSeries:s.visibleI,type:r.config.chart.type})}))},C=0;Cb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/f,k=r-k/f,v=r-b.h/f,y=r-b.l/f,A=r-b.m/f);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?p:d?[g]:[u]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,p=this.getOHLCValue(u,c),f=r,x=r,b=Math.min(p.o,p.c),v=Math.max(p.o,p.c),y=p.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,f=r+p.h/g,x=r+p.l/g,y=r+p.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(f,w+s/2)+l.line(f,w+s/2-s/4)+l.line(f,w+s/2+s/4)+l.line(f,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+"z"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(yt),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,"treemap"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l="dark"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new O(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,u=l.offsetY,p=i+g,f=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:p,y:f,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new m(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:"draw",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,p=0;p-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+"%";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),g=i.centerY+r*Math.sin(l),u=i.centerX+r*Math.cos(c),p=i.centerY+r*Math.sin(c),f=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),b=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,n),v=s>180?1:0,y=["M",d,g,"A",r,r,0,v,1,u,p];return e="donut"===i.chartType?[].concat(y,["L",f.x,f.y,"A",i.donutSize,i.donutSize,0,v,0,b.x,b.y,"L",d,g,"z"]).join(" "):"pie"===i.chartType||"polarArea"===i.chartType?[].concat(y,["L",i.centerX,i.centerY,"L",d,g]).join(" "):[].concat(y).join(" "),o.roundPathCorners(e,2*this.strokeWidth)}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(f=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:"",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var p=h.dropShadow;s.dropShadow(u,p)}l.add(u),u.attr("id","apexcharts-radialbarTrack-"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new m(this.ctx),a=new R(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var p=!1;e.config.plotOptions.radialBar.inverseOrder&&(p=!0);for(var f=p?t.series.length-1:0;p?f>=0:f100?100:t.series[f])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[f])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[f]:e.config.stroke.dashArray,I=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+f,strokeDashArray:P});if(m.setAttrs(I.node,{"data:angle":L,"data:value":t.series[f]}),e.config.chart.dropShadow.enabled){var M=e.config.chart.dropShadow;s.dropShadow(I,M,f)}if(s.setSelectionFilter(I,0,f),this.addListeners(I,this.radialDataLabels),b.add(I),I.attr({index:0,j:f}),this.barLabels.enabled){var T=x.polarToCartesian(t.centerX,t.centerY,t.size,w),z=this.barLabels.formatter(e.globals.seriesNames[f],{seriesIndex:f,w:e}),X=["apexcharts-radialbar-label"];this.barLabels.onClick||X.push("apexcharts-no-click");var E=this.barLabels.useSeriesColors?e.globals.colors[f]:e.config.chart.foreColor;E||(E=e.config.chart.foreColor);var Y=T.x-this.barLabels.margin,F=T.y,H=i.drawText({x:Y,y:F,text:z,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:E,cssClass:X.join(" ")});H.on("click",this.onBarLabelClick),H.attr({rel:f+1}),0!==w&&H.attr({"transform-origin":"".concat(Y," ").concat(F),transform:"rotate(".concat(w," 0 0)")}),b.add(H)}var D=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(D=e.config.chart.animations.speed),e.globals.dataChanged&&(D=e.config.chart.animations.dynamicAnimation.speed),this.animDur=D/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(I,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:f,totalItems:2,animBeginArr:this.animBeginArr,dur:D,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:"drawHollow",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new R(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:"onBarLabelClick",value:function(t){var e=parseInt(t.target.getAttribute("rel"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),i}(Lt),Mt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),n=0;n0&&(this.visibleI=this.visibleI+1);var b=0,v=0;this.yRatio.length>1&&(this.yaxisIndex=p);var y=this.barHelpers.initialPositions();u=y.y,d=y.zeroW,g=y.x,v=y.barWidth,b=y.barHeight,l=y.xDivision,h=y.yDivision,c=y.zeroH;for(var w=s.group({class:"apexcharts-datalabels","data:realIndex":p}),k=s.group({class:"apexcharts-rangebar-goals-markers"}),A=0;A0}));return this.isHorizontal?(a=g.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+n*this.visibleI+h*b,v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(a=(n=d.barHeight/u.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+n*(this.visibleI+u.indexOf(p))+h*b)):(b>-1&&(s=g.config.plotOptions.bar.rangeBarGroupRows?o+c*b:o+l*this.visibleI+c*b),v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(s=(l=d.barWidth/u.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+u.indexOf(p))+c*b)),{barYPosition:a,barXPosition:s,barHeight:n,barWidth:l}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,o=t.zeroH,n=this.w,l=e.i,h=e.j,c=this.yRatio[this.yaxisIndex],d=e.realIndex,g=this.getRangeValue(d,h),u=Math.min(g.start,g.end),p=Math.max(g.start,g.end);void 0===this.series[l][h]||null===this.series[l][h]?u=o:(u=o-u/c,p=o-p/c);var f=Math.abs(p-u),x=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:u,y2:p,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:d,j:h,w:n});if(n.globals.isXNumeric){var b=this.getBarXForNumericXAxis({x:i,j:h,realIndex:d,barWidth:s});i=b.x,r=b.barXPosition}else i+=a;return{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:f,x:i,y:p,goalY:this.barHelpers.getGoalValues("y",null,o,l,h),barXPosition:r}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(yt),Tt=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&("line"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i,a=t.i,s=t.series,r=t.prevY,o=t.lineYPosition,n=this.w,l=n.config.chart.stacked&&!n.globals.comboCharts||n.config.chart.stacked&&n.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[a])||void 0===e?void 0:e.type));if(void 0!==(null===(i=s[a])||void 0===i?void 0:i[0]))r=(o=l&&a>0?this.lineCtx.prevSeriesY[a-1][0]:this.lineCtx.zeroY)-s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(l&&a>0&&void 0===s[a][0])for(var h=a-1;h>=0;h--)if(null!==s[h][0]&&void 0!==s[h][0]){r=o=this.lineCtx.prevSeriesY[h][0];break}return{prevY:r,lineYPosition:o}}}]),t}(),zt=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Yt(i,a),r=1,o=t.length-1;r9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=o;h++)s=(t[Math.min(o,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),n.push([s||0,r[h]*s||0]);return n},Xt=function(t){for(var e="",i=0;i4?(e+="C".concat(a[0],", ").concat(a[1]),e+=", ".concat(a[2],", ").concat(a[3]),e+=", ".concat(a[4],", ").concat(a[5])):s>2&&(e+="S".concat(a[0],", ").concat(a[1]),e+=", ".concat(a[2],", ").concat(a[3]))}return e},Et=function(t){var e=zt(t),i=t[1],a=t[0],s=[],r=e[1],o=e[0];s.push(a,[a[0]+o[0],a[1]+o[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var n=2,l=e.length;n0&&(b=(o.globals.seriesX[u][0]-o.globals.minX)/this.xRatio),x.push(b);var v,w=b,k=void 0,A=w,S=this.zeroY,C=this.zeroY;S=this.lineHelpers.determineFirstPrevY({i:g,series:t,prevY:S,lineYPosition:0}).prevY,"monotonCubic"===o.config.stroke.curve&&null===t[g][0]?p.push(null):p.push(S),v=S;"rangeArea"===l&&(k=C=this.lineHelpers.determineFirstPrevY({i:g,series:s,prevY:C,lineYPosition:0}).prevY,f.push(C));var L={type:l,series:t,realIndex:u,i:g,x:b,y:1,pX:w,pY:v,pathsFrom:this._calculatePathsFrom({type:l,series:t,i:g,realIndex:u,prevX:A,prevY:S,prevY2:C}),linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:x,yArrj:p,y2Arrj:f,seriesRangeEnd:s},P=this._iterateOverDataPoints(e(e({},L),{},{iterations:"rangeArea"===l?t[g].length-1:void 0,isRangeStart:!0}));if("rangeArea"===l){var I=this._calculatePathsFrom({series:s,i:g,realIndex:u,prevX:A,prevY:C}),M=this._iterateOverDataPoints(e(e({},L),{},{series:s,pY:k,pathsFrom:I,iterations:s[g].length-1,isRangeStart:!1}));P.linePaths[0]=M.linePath+P.linePath,P.pathFromLine=M.pathFromLine+P.pathFromLine}this._handlePaths({type:l,realIndex:u,i:g,paths:P}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),d.push(this.elSeries)}if(void 0!==(null===(r=o.config.series[0])||void 0===r?void 0:r.zIndex)&&d.sort((function(t,e){return Number(t.node.getAttribute("zIndex"))-Number(e.node.getAttribute("zIndex"))})),o.config.chart.stacked)for(var T=d.length;T>0;T--)h.add(d[T-1]);else for(var z=0;z1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.prevX,c=t.prevY,d=t.prevY2,g=this.w,u=new m(this.ctx);if(null===o[n][0]){for(var p=0;p0){var f=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=f.pathFromLine,s=f.pathFromArea}return{prevX:h,prevY:c,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new R(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&"rangeArea"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(i)};if("area"===i)for(var p=l.fillPath({seriesNumber:a}),f=0;f0&&"rangeArea"!==i){var S=n.renderPaths(k);S.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&S.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(S),S.attr("clip-path","url(#forecastMask".concat(o.globals.cuid,")")),A.attr("clip-path","url(#nonForecastMask".concat(o.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e,i=this,a=t.type,s=t.series,r=t.iterations,o=t.realIndex,n=t.i,l=t.x,h=t.y,c=t.pX,d=t.pY,g=t.pathsFrom,u=t.linePaths,p=t.areaPaths,f=t.seriesIndex,b=t.lineYPosition,v=t.xArrj,y=t.yArrj,w=t.y2Arrj,k=t.isRangeStart,A=t.seriesRangeEnd,S=this.w,C=new m(this.ctx),L=this.yRatio,P=g.prevY,I=g.linePath,M=g.areaPath,T=g.pathFromLine,z=g.pathFromArea,X=x.isNumber(S.globals.minYArr[o])?S.globals.minYArr[o]:S.globals.minY;r||(r=S.globals.dataPoints>1?S.globals.dataPoints-1:S.globals.dataPoints);for(var E=function(t,e){return e-t/L[i.yaxisIndex]+2*(i.isReversed?t/L[i.yaxisIndex]:0)},Y=h,F=S.config.chart.stacked&&!S.globals.comboCharts||S.config.chart.stacked&&S.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[o])||void 0===e?void 0:e.type)),R=0;R0&&S.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(n-1)][R+1]}else b=this.zeroY;else b=this.zeroY;H?h=E(X,b):(h=E(s[n][R+1],b),"rangeArea"===a&&(Y=E(A[n][R+1],b))),v.push(l),H&&"smooth"===S.config.stroke.curve?y.push(null):y.push(h),w.push(Y);var O=this.lineHelpers.calculatePoints({series:s,x:l,y:h,realIndex:o,i:n,j:R,prevY:P}),N=this._createPaths({type:a,series:s,i:n,realIndex:o,j:R,x:l,y:h,y2:Y,xArrj:v,yArrj:y,y2Arrj:w,pX:c,pY:d,linePath:I,areaPath:M,linePaths:u,areaPaths:p,seriesIndex:f,isRangeStart:k});p=N.areaPaths,u=N.linePaths,c=N.pX,d=N.pY,M=N.areaPath,I=N.linePath,!this.appendPathFrom||"monotoneCubic"===S.config.stroke.curve&&"rangeArea"===a||(T+=C.line(l,this.zeroY),z+=C.line(l,this.zeroY)),this.handleNullDataPoints(s,O,n,R,o),this._handleMarkersAndLabels({type:a,pointsPos:O,i:n,j:R,realIndex:o,isRangeStart:k})}return{yArrj:y,xArrj:v,pathFromArea:z,areaPaths:p,pathFromLine:T,linePaths:u,linePath:I,areaPath:M}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new O(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,o=t.x,n=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,g=t.pX,u=t.pY,p=t.linePath,f=t.areaPath,x=t.linePaths,b=t.areaPaths,v=t.seriesIndex,y=t.isRangeStart,w=this.w,k=new m(this.ctx),A=w.config.stroke.curve,S=this.areaBottomY;if(Array.isArray(w.config.stroke.curve)&&(A=Array.isArray(v)?w.config.stroke.curve[v[a]]:w.config.stroke.curve[a]),"rangeArea"===e&&(w.globals.hasNullValues||w.config.forecastDataPoints.count>0)&&"monotoneCubic"===A&&(A="straight"),"monotoneCubic"===A){var C="rangeArea"===e?l.length===w.globals.dataPoints:r===i[a].length-2,L=l.map((function(t,e){return[l[e],h[e]]})).filter((function(t){return null!==t[1]}));if(C&&L.length>1){var P=Et(L);if(p+=Xt(P),null===i[a][0]?f=p:f+=Xt(P),"rangeArea"===e&&y){p+=k.line(l[l.length-1],d[d.length-1]);var I=l.slice().reverse(),M=d.slice().reverse(),T=I.map((function(t,e){return[I[e],M[e]]})),z=Et(T);f=p+=Xt(z)}else f+=k.line(L[L.length-1][0],S)+k.line(L[0][0],S)+k.move(L[0][0],L[0][1])+"z";x.push(p),b.push(f)}}else if("smooth"===A){var X=.35*(o-g);w.globals.hasNullValues?(null!==i[a][r]&&(null!==i[a][r+1]?(p=k.move(g,u)+k.curve(g+X,u,o-X,n,o+1,n),f=k.move(g+1,u)+k.curve(g+X,u,o-X,n,o+1,n)+k.line(o,S)+k.line(g,S)+"z"):(p=k.move(g,u),f=k.move(g,u)+"z")),x.push(p),b.push(f)):(p+=k.curve(g+X,u,o-X,n,o,n),f+=k.curve(g+X,u,o-X,n,o,n)),g=o,u=n,r===i[a].length-2&&(f=f+k.curve(g,u,o,n,o,S)+k.move(o,n)+"z","rangeArea"===e&&y?p=p+k.curve(g,u,o,n,o,c)+k.move(o,c)+"z":w.globals.hasNullValues||(x.push(p),b.push(f)))}else{if(null===i[a][r+1]){p+=k.move(o,n);var E=w.globals.isXNumeric?(w.globals.seriesX[s][r]-w.globals.minX)/this.xRatio:o-this.xDivision;f=f+k.line(E,S)+k.move(o,n)+"z"}null===i[a][r]&&(p+=k.move(o,n),f+=k.move(o,S)),"stepline"===A?(p=p+k.line(o,null,"H")+k.line(null,n,"V"),f=f+k.line(o,null,"H")+k.line(null,n,"V")):"straight"===A&&(p+=k.line(o,n),f+=k.line(o,n)),r===i[a].length-2&&(f=f+k.line(o,S)+k.move(o,n)+"z","rangeArea"===e&&y?p=p+k.line(o,c)+k.move(o,c)+"z":(x.push(p),b.push(f)))}return{linePaths:x,areaPaths:b,pX:g,pY:u,linePath:p,areaPath:f}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,") translate(").concat(l.height/3,")"))}}},{key:"truncateLabels",value:function(t,e,i,a,s,r){var o=new m(this.ctx),n=o.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=o.getTextBasedOnMaxWidth({text:t,maxWidth:n,fontSize:e});return t.length!==l.length&&n/e<5?"":l}},{key:"animateTreemap",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ot=86400,Nt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:"calculateTimeScaleTicks",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new I(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),p=Math.floor(o*Ot),f=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:p,numberOfMinutes:u,numberOfHours:g,numberOfDays:f,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(m);break;case"months":case"half_year":this.generateMonthScale(m);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(m);break;case"hours":this.generateHourScale(m);break;case"minutes_fives":case"minutes":this.generateMinuteScale(m);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?e(e({},i),{},{value:t.value}):"minute"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):"second"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case"years":"year"===t.unit&&(o=!0);break;case"half_year":e=7,"year"===t.unit&&(o=!0);break;case"months":e=1,"year"===t.unit&&(o=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(o=!0),30===r&&(n=!0);break;case"months_days":e=10,"month"===t.unit&&(o=!0),30===r&&(n=!0);break;case"week_days":e=8,"month"===t.unit&&(o=!0);break;case"days":e=1,"month"===t.unit&&(o=!0);break;case"hours":"day"===t.unit&&(o=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(n=!0);break;case"seconds_tens":r%10!=0&&(n=!0)}if("hours"===a.tickInterval||"minutes_fives"===a.tickInterval||"seconds_tens"===a.tickInterval||"seconds_fives"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new I(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),p=n;0===n&&(c="year",p=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var f=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n="month",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n="month",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var p=d,f=0;fn.determineDaysOfMonths(e+1,s)&&(f=1,e+=1),{month:e,date:f}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,p=u;60===d&&(g=0,p=u=e.minHour);var f=i;p>=24&&(p=0,f+=1,l="day");var b=h(f,a).month;b=c(f,b),this.timeScaleArray.push({position:g,value:u,unit:l,day:f,hour:p,year:s,month:x.monthMod(b)}),p++;for(var v=g,m=0;m=24)p=0,l="day",b=h(f+=1,b).month,b=c(f,b);var y=this._getYear(s,b,0);v=60*r+v;var w=0===p?f:p;this.timeScaleArray.push({position:v,value:w,unit:l,hour:p,day:f,year:y,month:x.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,p=n,f=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(f+=1)&&(f=0)),this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:f,minute:d,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,p=n,f=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++f&&(f=0))),this.timeScaleArray.push({position:b,value:c,unit:"second",hour:f,minute:d,second:c,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new I(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(n=l.year),"month"===t.unit&&(n=l.month),"day"===t.unit&&(n=l.day),"hour"===t.unit&&(n=l.hour),"minute"===t.unit&&(n=l.minute),"second"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Wt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background="dark"!==e.theme.mode||e.chart.background?e.chart.background:"rgba(0, 0, 0, 0.8)",this.setSVGDimensions(),t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject"),m.setAttrs(t.dom.elLegendForeign,{x:0,y:0,width:t.svgWidth,height:t.svgHeight}),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),t.dom.elLegendForeign.appendChild(t.dom.elLegendWrap),t.dom.Paper.node.appendChild(t.dom.elLegendForeign),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,p){var f=0;void 0!==t[p].type?("column"===t[p].type||"bar"===t[p].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(p),f++,i.globals.columnSeries=h.series):"area"===t[p].type?(o.series.push(e),o.i.push(p),f++):"line"===t[p].type?(r.series.push(e),r.i.push(p),f++):"scatter"===t[p].type?(n.series.push(e),n.i.push(p)):"bubble"===t[p].type?(l.series.push(e),l.i.push(p),f++):"candlestick"===t[p].type?(c.series.push(e),c.i.push(p),f++):"boxPlot"===t[p].type?(d.series.push(e),d.i.push(p),f++):"rangeBar"===t[p].type?(g.series.push(e),g.i.push(p),f++):"rangeArea"===t[p].type?(u.series.push(s.seriesRangeStart[p]),u.seriesRangeEnd.push(s.seriesRangeEnd[p]),u.i.push(p),f++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"),f>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(p))}));var p=new Ft(this.ctx,e),f=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var x=new It(this.ctx);this.ctx.rangeBar=new Mt(this.ctx,e);var b=new Pt(this.ctx),v=[];if(s.comboCharts){if(o.series.length>0&&v.push(p.draw(o.series,"area",o.i)),h.series.length>0)if(i.config.chart.stacked){var m=new wt(this.ctx,e);v.push(m.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),v.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&v.push(p.draw(u.series,"rangeArea",u.i,u.seriesRangeEnd)),r.series.length>0&&v.push(p.draw(r.series,"line",r.i)),c.series.length>0&&v.push(f.draw(c.series,"candlestick",c.i)),d.series.length>0&&v.push(f.draw(d.series,"boxPlot",d.i)),g.series.length>0&&v.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var y=new Ft(this.ctx,e,!0);v.push(y.draw(n.series,"scatter",n.i))}if(l.series.length>0){var w=new Ft(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=p.draw(s.series,"line");break;case"area":v=p.draw(s.series,"area");break;case"bar":if(a.chart.stacked)v=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),v=this.ctx.bar.draw(s.series);break;case"candlestick":v=new kt(this.ctx,e).draw(s.series,"candlestick");break;case"boxPlot":v=new kt(this.ctx,e).draw(s.series,a.chart.type);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=p.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new St(this.ctx,e).draw(s.series);break;case"treemap":v=new Dt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=p.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=l+"px",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px")}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new Y,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Nt(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&"function"!=typeof e.config.chart.events.selection){var i=Array.isArray(e.config.chart.brush.targets)?e.config.chart.brush.targets:[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,e){i.forEach((function(t){ApexCharts.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:e.xaxis.min,max:e.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),Bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"_updateOptions",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&"object"===i(t)&&(r.config=new E(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:null==s?void 0:s.name,color:t.color?t.color:null==s?void 0:s.color,type:t.type?t.type:null==s?void 0:s.type,group:t.group?t.group:null==s?void 0:s.group,data:t.data?t.data:null==s?void 0:s.data,zIndex:void 0!==t.zIndex?t.zIndex:i})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new X(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Rt="undefined"!=typeof window?window:void 0,Ht=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.dev",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute("id",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:"linearGradient"==e.nodeName?new a.Gradient("linear"):"radialGradient"==e.nodeName?new a.Gradient("radial"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName("body")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:i.polyline().node,path:i.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},e.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if("string"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement("svg");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");i.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=i.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){"object"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||"-"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[v[s]]=null!=t[v[s]]?t[v[s]]:e[v[s]]},extend:{extract:function(){var t=p(this,0,1);p(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return"matrix("+b(this.a)+","+b(this.b)+","+b(this.c)+","+b(this.d)+","+b(this.e)+","+b(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if("object"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return"object"!==i(t)?(s=new a.Matrix(this).extract(),"string"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var v="abcdef".split("");if("function"!=typeof t.CustomEvent){var m=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};m.prototype=t.Event.prototype,a.CustomEvent=m}else a.CustomEvent=t.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return Ht(Rt,Rt.document)})):"object"===("undefined"==typeof exports?"undefined":i(exports))&&"undefined"!=typeof module?module.exports=Rt.document?Ht(Rt,Rt.document):function(t){return Ht(t,t.document)}:Rt.SVG=Ht(Rt,Rt.document), -/*! svg.filter.js - v2.0.2 - 2016-02-24 - * https://github.com/wout/svg.filter.js - * Copyright (c) 2016 Wout Fierens; Licensed MIT */ -function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,a=[];e1&&(I*=a=Math.sqrt(a),M*=a);s=(new SVG.Matrix).rotate(T).scale(1/I,1/M).rotate(-T),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var o=this.options[r[s]];"string"==typeof o?o=o.length>0?o.split(/\s*,\s*/i):[]:"boolean"==typeof o&&"points"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Gt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Wt(this.ctx.el,this.ctx),this.ctx.config=new E({}),this.ctx.data=new W(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new L,this.ctx.responsive=new K(this.ctx),this.ctx.series=new N(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new M(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Bt(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Vt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"clear",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),jt=new WeakMap;var _t=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new F(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Gt(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;if("function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();"none"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),jt.set(e,s)}(t.el.parentNode,t.parentResizeHandler),!t.css){var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is("ShadowRoot",s),o=t.el.ownerDocument,n=o.getElementById("apexcharts-css");if(r||!n){var l;t.css=document.createElement("style"),t.css.id="apexcharts-css",t.css.textContent='@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-hidden-element-shown {\n opacity: 1;\n transition: 0.25s ease all;\n}\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-radialbar-label {\n cursor: pointer;\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n\n.apexcharts-bar-goals-markers{\n pointer-events: none\n}\n\n.apexcharts-bar-shadows{\n pointer-events: none\n}\n\n.apexcharts-rangebar-goals-markers{\n pointer-events: none\n}';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&t.css.setAttribute("nonce",h),r?s.prepend(t.css):o.head.appendChild(t.css)}}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new Gt(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new X(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),"treemap"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new H(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new O(this);return l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:n,xyRatios:o,dimensions:{plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}}}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o,n,l=i.grid.drawGrid();(i.annotations=new P(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=jt.get(t))&&(e.disconnect(),jt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Vt(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new G(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new G(this.ctx).exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=x.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),o=2;o=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return r(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function d(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===c?JSON.stringify(t,p,2):String(t)}function p(t,e){return e&&e.__v_isRef?e.value:e}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var _=Object.prototype.hasOwnProperty;function b(t,e){return _.call(t,e)}function $(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,x=$((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),C=$((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,S=$((function(t){return t.replace(k,"-$1").toLowerCase()}));var O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function T(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function A(t,e){for(var n in e)t[n]=e[n];return t}function j(t){for(var e={},n=0;n0,X=W&&W.indexOf("edge/")>0;W&&W.indexOf("android");var Y=W&&/iphone|ipad|ipod|ios/.test(W);W&&/chrome\/\d+/.test(W),W&&/phantomjs/.test(W);var Q,tt=W&&W.match(/firefox\/(\d+)/),et={}.watch,nt=!1;if(q)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,rt)}catch(t){}var ot=function(){return void 0===Q&&(Q=!q&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),Q},it=q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ut=null;function lt(t){void 0===t&&(t=null),t||ut&&ut._scope.off(),ut=t,t&&t._scope.on()}var ft=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),dt=function(t){void 0===t&&(t="");var e=new ft;return e.text=t,e.isComment=!0,e};function pt(t){return new ft(void 0,void 0,void 0,String(t))}function vt(t){var e=new ft(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&&SuppressedError;var ht=0,mt=[],gt=function(){for(var t=0;t0&&(ne((c=re(c,"".concat(a||"","_").concat(s)))[0])&&ne(l)&&(f[u]=pt(l.text+c[0].text),c.shift()),f.push.apply(f,c)):i(c)?ne(l)?f[u]=pt(l.text+c):""!==c&&f.push(pt(c)):ne(c)&&ne(l)?f[u]=pt(l.text+c.text):(o(t._isVList)&&r(c.tag)&&n(c.key)&&r(a)&&(c.key="__vlist".concat(a,"_").concat(s,"__")),f.push(c)));return f}var oe=1,ie=2;function ae(t,n,c,u,l,f){return(e(c)||i(c))&&(l=u,u=c,c=void 0),o(f)&&(l=ie),function(t,n,o,i,c){if(r(o)&&r(o.__ob__))return dt();r(o)&&r(o.is)&&(n=o.is);if(!n)return dt();e(i)&&a(i[0])&&((o=o||{}).scopedSlots={default:i[0]},i.length=0);c===ie?i=ee(i):c===oe&&(i=function(t){for(var n=0;n0,s=n?!!n.$stable:!a,c=n&&n.$key;if(n){if(n._normalized)return n._normalized;if(s&&o&&o!==t&&c===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},n)n[u]&&"$"!==u[0]&&(i[u]=Oe(e,r,u,n[u]))}else i={};for(var l in r)l in i||(i[l]=Te(r,l));return n&&Object.isExtensible(n)&&(n._normalized=i),V(i,"$stable",s),V(i,"$key",c),V(i,"$hasNormal",a),i}function Oe(t,n,r,o){var i=function(){var n=ut;lt(t);var r=arguments.length?o.apply(null,arguments):o({}),i=(r=r&&"object"==typeof r&&!e(r)?[r]:ee(r))&&r[0];return lt(n),r&&(!i||1===r.length&&i.isComment&&!ke(i))?void 0:r};return o.proxy&&Object.defineProperty(n,r,{get:i,enumerable:!0,configurable:!0}),i}function Te(t,e){return function(){return t[e]}}function Ae(e){return{get attrs(){if(!e._attrsProxy){var n=e._attrsProxy={};V(n,"_v_attr_proxy",!0),je(n,e.$attrs,t,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||je(e._listenersProxy={},e.$listeners,t,e,"$listeners");return e._listenersProxy},get slots(){return function(t){t._slotsProxy||Ne(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(e)},emit:O(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return zt(e,t,n)}))}}}function je(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,Ee(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function Ee(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Ne(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Pe(){var t=ut;return t._setupContext||(t._setupContext=Ae(t))}var De,Me,Ie=null;function Le(t,e){return(t.__esModule||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),s(t)?e.extend(t):t}function Re(t){if(e(t))for(var n=0;ndocument.createEvent("Event").timeStamp&&(on=function(){return an.now()})}var sn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function cn(){var t,e;for(rn=on(),en=!0,Xe.sort(sn),nn=0;nnnn&&Xe[n].id>t.id;)n--;Xe.splice(n+1,0,t)}else Xe.push(t);tn||(tn=!0,En(cn))}}var ln="watcher",fn="".concat(ln," callback"),dn="".concat(ln," getter"),pn="".concat(ln," cleanup");function vn(t,e){return mn(t,null,{flush:"post"})}var hn={};function mn(n,r,o){var i=void 0===o?t:o,s=i.immediate,c=i.deep,u=i.flush,l=void 0===u?"pre":u;i.onTrack,i.onTrigger;var f,d,p=ut,v=function(t,e,n){void 0===n&&(n=null);var r=_n(t,null,n,p,e);return c&&r&&r.__ob__&&r.__ob__.dep.depend(),r},h=!1,m=!1;if(Bt(n)?(f=function(){return n.value},h=Rt(n)):Lt(n)?(f=function(){return n.__ob__.dep.depend(),n},c=!0):e(n)?(m=!0,h=n.some((function(t){return Lt(t)||Rt(t)})),f=function(){return n.map((function(t){return Bt(t)?t.value:Lt(t)?(t.__ob__.dep.depend(),Wn(t)):a(t)?v(t,dn):void 0}))}):f=a(n)?r?function(){return v(n,dn)}:function(){if(!p||!p._isDestroyed)return d&&d(),v(n,ln,[y])}:E,r&&c){var g=f;f=function(){return Wn(g())}}var y=function(t){d=_.onStop=function(){v(t,pn)}};if(ot())return y=E,r?s&&v(r,fn,[f(),m?[]:void 0,y]):f(),E;var _=new Xn(ut,f,E,{lazy:!0});_.noRecurse=!r;var b=m?[]:hn;return _.run=function(){if(_.active)if(r){var t=_.get();(c||h||(m?t.some((function(t,e){return L(t,b[e])})):L(t,b)))&&(d&&d(),v(r,fn,[t,b===hn?void 0:b,y]),b=t)}else _.get()},"sync"===l?_.update=_.run:"post"===l?(_.post=!0,_.update=function(){return un(_)}):_.update=function(){if(p&&p===ut&&!p._isMounted){var t=p._preWatchers||(p._preWatchers=[]);t.indexOf(_)<0&&t.push(_)}else un(_)},r?s?_.run():b=_.get():"post"===l&&p?p.$once("hook:mounted",(function(){return _.get()})):_.get(),function(){_.teardown()}}function gn(t){var e=t._provided,n=t.$parent&&t.$parent._provided;return n===e?t._provided=Object.create(n):e}function yn(t,e,n){bt();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i1)return n&&a(e)?e.call(r):e}},h:function(t,e,n){return ae(ut,t,e,n,2,!0)},getCurrentInstance:function(){return ut&&{proxy:ut}},useSlots:function(){return Pe().slots},useAttrs:function(){return Pe().attrs},useListeners:function(){return Pe().listeners},mergeDefaults:function(t,n){var r=e(t)?t.reduce((function(t,e){return t[e]={},t}),{}):t;for(var o in n){var i=r[o];i?e(i)||a(i)?r[o]={type:i,default:n[o]}:i.default=n[o]:null===i&&(r[o]={default:n[o]})}return r},nextTick:En,set:Nt,del:Pt,useCssModule:function(e){return t},useCssVars:function(t){if(q){var e=ut;e&&vn((function(){var n=e.$el,r=t(e,e._setupProxy);if(n&&1===n.nodeType){var o=n.style;for(var i in r)o.setProperty("--".concat(i),r[i])}}))}},defineAsyncComponent:function(t){a(t)&&(t={loader:t});var e=t.loader,n=t.loadingComponent,r=t.errorComponent,o=t.delay,i=void 0===o?200:o,s=t.timeout;t.suspensible;var c=t.onError,u=null,l=0,f=function(){var t;return u||(t=u=e().catch((function(t){if(t=t instanceof Error?t:new Error(String(t)),c)return new Promise((function(e,n){c(t,(function(){return e((l++,u=null,f()))}),(function(){return n(t)}),l+1)}));throw t})).then((function(e){return t!==u&&u?u:(e&&(e.__esModule||"Module"===e[Symbol.toStringTag])&&(e=e.default),e)})))};return function(){return{component:f(),delay:i,timeout:s,error:r,loading:n}}},onBeforeMount:Pn,onMounted:Dn,onBeforeUpdate:Mn,onUpdated:In,onBeforeUnmount:Ln,onUnmounted:Rn,onActivated:Fn,onDeactivated:Hn,onServerPrefetch:Bn,onRenderTracked:Un,onRenderTriggered:zn,onErrorCaptured:function(t,e){void 0===e&&(e=ut),Vn(t,e)}}),qn=new st;function Wn(t){return Zn(t,qn),qn.clear(),t}function Zn(t,n){var r,o,i=e(t);if(!(!i&&!s(t)||t.__v_skip||Object.isFrozen(t)||t instanceof ft)){if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=t.length;r--;)Zn(t[r],n);else if(Bt(t))Zn(t.value,n);else for(r=(o=Object.keys(t)).length;r--;)Zn(t[o[r]],n)}}var Gn=0,Xn=function(){function t(t,e,n,r,o){!function(t,e){void 0===e&&(e=Me),e&&e.active&&e.effects.push(t)}(this,Me&&!Me._vm?Me:t?t._scope:void 0),(this.vm=t)&&o&&(t._watcher=this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++Gn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new st,this.newDepIds=new st,this.expression="",a(e)?this.getter=e:(this.getter=function(t){if(!K.test(t)){var e=t.split(".");return function(t){for(var n=0;n-1)if(i&&!b(o,"default"))s=!1;else if(""===s||s===S(t)){var u=jr(String,o.type);(u<0||c-1:"string"==typeof t?t.split(",").indexOf(n)>-1:(r=t,"[object RegExp]"===c.call(r)&&t.test(n));var r}function Mr(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var c=s.name;c&&!e(c)&&Ir(n,a,r,o)}}i.componentOptions.children=void 0}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(e){e.prototype._init=function(e){var n=this;n._uid=sr++,n._isVue=!0,n.__v_skip=!0,n._scope=new ze(!0),n._scope.parent=void 0,n._scope._vm=!0,e&&e._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(n,e):n.$options=Cr(cr(n.constructor),e||{},n),n._renderProxy=n,n._self=n,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(n),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Ue(t,e)}(n),function(e){e._vnode=null,e._staticTrees=null;var n=e.$options,r=e.$vnode=n._parentVnode,o=r&&r.context;e.$slots=xe(n._renderChildren,o),e.$scopedSlots=r?Se(e.$parent,r.data.scopedSlots,e.$slots):t,e._c=function(t,n,r,o){return ae(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return ae(e,t,n,r,o,!0)};var i=r&&r.data;Et(e,"$attrs",i&&i.attrs||t,null,!0),Et(e,"$listeners",n._parentListeners||t,null,!0)}(n),Ge(n,"beforeCreate",void 0,!1),function(t){var e=ar(t.$options.inject,t);e&&(Ot(!1),Object.keys(e).forEach((function(n){Et(t,n,e[n])})),Ot(!0))}(n),tr(n),function(t){var e=t.$options.provide;if(e){var n=a(e)?e.call(t):e;if(!s(n))return;for(var r=gn(t),o=ct?Reflect.ownKeys(n):Object.keys(n),i=0;i1?T(n):n;for(var r=T(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Ir(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Mr(t,(function(t){return Dr(e,t)}))})),this.$watch("exclude",(function(e){Mr(t,(function(t){return!Dr(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=Re(t),n=e&&e.componentOptions;if(n){var r=Pr(n),o=this.include,i=this.exclude;if(o&&(!r||!Dr(o,r))||i&&r&&Dr(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,y(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}},Fr={KeepAlive:Rr};!function(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:gr,extend:A,mergeOptions:Cr,defineReactive:Et},t.set=Nt,t.delete=Pt,t.nextTick=En,t.observable=function(t){return jt(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,A(t.options.components,Fr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=T(arguments,1);return n.unshift(this),a(t.install)?t.install.apply(t,n):a(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Cr(this.options,t),this}}(t),Nr(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&a(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Er),Object.defineProperty(Er.prototype,"$isServer",{get:ot}),Object.defineProperty(Er.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Er,"FunctionalRenderContext",{value:ur}),Er.version=Kn;var Hr=h("style,class"),Br=h("input,textarea,option,select,progress"),Ur=function(t,e,n){return"value"===n&&Br(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},zr=h("contenteditable,draggable,spellcheck"),Vr=h("events,caret,typing,plaintext-only"),Kr=function(t,e){return Gr(e)||"false"===e?"false":"contenteditable"===t&&Vr(e)?e:"true"},Jr=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),qr="http://www.w3.org/1999/xlink",Wr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Zr=function(t){return Wr(t)?t.slice(6,t.length):""},Gr=function(t){return null==t||!1===t};function Xr(t){for(var e=t.data,n=t,o=t;r(o.componentInstance);)(o=o.componentInstance._vnode)&&o.data&&(e=Yr(o.data,e));for(;r(n=n.parent);)n&&n.data&&(e=Yr(e,n.data));return function(t,e){if(r(t)||r(e))return Qr(t,to(e));return""}(e.staticClass,e.class)}function Yr(t,e){return{staticClass:Qr(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Qr(t,e){return t?e?t+" "+e:t:e||""}function to(t){return Array.isArray(t)?function(t){for(var e,n="",o=0,i=t.length;o-1?Oo(t,e,n):Jr(e)?Gr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):zr(e)?t.setAttribute(e,Kr(e,n)):Wr(e)?Gr(n)?t.removeAttributeNS(qr,Zr(e)):t.setAttributeNS(qr,e,n):Oo(t,e,n)}function Oo(t,e,n){if(Gr(n))t.removeAttribute(e);else{if(Z&&!G&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var To={create:ko,update:ko};function Ao(t,e){var o=e.elm,i=e.data,a=t.data;if(!(n(i.staticClass)&&n(i.class)&&(n(a)||n(a.staticClass)&&n(a.class)))){var s=Xr(e),c=o._transitionClasses;r(c)&&(s=Qr(s,to(c))),s!==o._prevClass&&(o.setAttribute("class",s),o._prevClass=s)}}var jo,Eo,No,Po,Do,Mo,Io={create:Ao,update:Ao},Lo=/[\w).+\-_$\]]/;function Ro(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,d=0,p=0;for(r=0;r=0&&" "===(h=t.charAt(v));v--);h&&Lo.test(h)||(u=!0)}}else void 0===o?(p=r+1,o=t.slice(0,r).trim()):m();function m(){(i||(i=[])).push(t.slice(p,r).trim()),p=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==p&&m(),i)for(r=0;r-1?{exp:t.slice(0,Po),key:'"'+t.slice(Po+1)+'"'}:{exp:t,key:null};Eo=t,Po=Do=Mo=0;for(;!ei();)ni(No=ti())?oi(No):91===No&&ri(No);return{exp:t.slice(0,Do),key:t.slice(Do+1,Mo)}}(t);return null===n.key?"".concat(t,"=").concat(e):"$set(".concat(n.exp,", ").concat(n.key,", ").concat(e,")")}function ti(){return Eo.charCodeAt(++Po)}function ei(){return Po>=jo}function ni(t){return 34===t||39===t}function ri(t){var e=1;for(Do=Po;!ei();)if(ni(t=ti()))oi(t);else if(91===t&&e++,93===t&&e--,0===e){Mo=Po;break}}function oi(t){for(var e=t;!ei()&&(t=ti())!==e;);}var ii,ai="__r",si="__c";function ci(t,e,n){var r=ii;return function o(){null!==e.apply(null,arguments)&&fi(t,o,n,r)}}var ui=xn&&!(tt&&Number(tt[1])<=53);function li(t,e,n,r){if(ui){var o=rn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}ii.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function fi(t,e,n,r){(r||ii).removeEventListener(t,e._wrapper||e,n)}function di(t,e){if(!n(t.data.on)||!n(e.data.on)){var o=e.data.on||{},i=t.data.on||{};ii=e.elm||t.elm,function(t){if(r(t[ai])){var e=Z?"change":"input";t[e]=[].concat(t[ai],t[e]||[]),delete t[ai]}r(t[si])&&(t.change=[].concat(t[si],t.change||[]),delete t[si])}(o),Yt(o,i,li,fi,ci,e.context),ii=void 0}}var pi,vi={create:di,update:di,destroy:function(t){return di(t,vo)}};function hi(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var i,a,s=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(i in(r(u.__ob__)||o(u._v_attr_proxy))&&(u=e.data.domProps=A({},u)),c)i in u||(s[i]="");for(i in u){if(a=u[i],"textContent"===i||"innerHTML"===i){if(e.children&&(e.children.length=0),a===c[i])continue;1===s.childNodes.length&&s.removeChild(s.childNodes[0])}if("value"===i&&"PROGRESS"!==s.tagName){s._value=a;var l=n(a)?"":String(a);mi(s,l)&&(s.value=l)}else if("innerHTML"===i&&ro(s.tagName)&&n(s.innerHTML)){(pi=pi||document.createElement("div")).innerHTML="".concat(a,"");for(var f=pi.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;f.firstChild;)s.appendChild(f.firstChild)}else if(a!==c[i])try{s[i]=a}catch(t){}}}}function mi(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,o=t._vModifiers;if(r(o)){if(o.number)return v(n)!==v(e);if(o.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var gi={create:hi,update:hi},yi=$((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function _i(t){var e=bi(t.style);return t.staticStyle?A(t.staticStyle,e):e}function bi(t){return Array.isArray(t)?j(t):"string"==typeof t?yi(t):t}var $i,wi=/^--/,xi=/\s*!important$/,Ci=function(t,e,n){if(wi.test(e))t.style.setProperty(e,n);else if(xi.test(n))t.style.setProperty(S(e),n.replace(xi,""),"important");else{var r=Si(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ai).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Ei(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ai).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Ni(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&A(e,Pi(t.name||"v")),A(e,t),e}return"string"==typeof t?Pi(t):void 0}}var Pi=$((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),Di=q&&!G,Mi="transition",Ii="animation",Li="transition",Ri="transitionend",Fi="animation",Hi="animationend";Di&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Li="WebkitTransition",Ri="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Fi="WebkitAnimation",Hi="webkitAnimationEnd"));var Bi=q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Ui(t){Bi((function(){Bi(t)}))}function zi(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),ji(t,e))}function Vi(t,e){t._transitionClasses&&y(t._transitionClasses,e),Ei(t,e)}function Ki(t,e,n){var r=qi(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Mi?Ri:Hi,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=Mi,l=a,f=i.length):e===Ii?u>0&&(n=Ii,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Mi:Ii:null)?n===Mi?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Mi&&Ji.test(r[Li+"Property"])}}function Wi(t,e){for(;t.length1}function ta(t,e){!0!==e.data.show&&Gi(e)}var ea=function(t){var a,s,c={},u=t.modules,l=t.nodeOps;for(a=0;av?b(t,n(o[g+1])?null:o[g+1].elm,o,p,g,i):p>g&&w(e,f,v)}(f,h,m,i,u):r(m)?(r(t.text)&&l.setTextContent(f,""),b(f,null,m,0,m.length-1,i)):r(h)?w(h,0,h.length-1):r(t.text)&&l.setTextContent(f,""):t.text!==e.text&&l.setTextContent(f,e.text),r(v)&&r(p=v.hook)&&r(p=p.postpatch)&&p(t,e)}}}function S(t,e,n){if(o(n)&&r(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i-1,a.selected!==i&&(a.selected=i);else if(D(aa(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function ia(t,e){return e.every((function(e){return!D(e,t)}))}function aa(t){return"_value"in t?t._value:t.value}function sa(t){t.target.composing=!0}function ca(t){t.target.composing&&(t.target.composing=!1,ua(t.target,"input"))}function ua(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function la(t){return!t.componentInstance||t.data&&t.data.transition?t:la(t.componentInstance._vnode)}var fa={bind:function(t,e,n){var r=e.value,o=(n=la(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Gi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=la(n)).data&&n.data.transition?(n.data.show=!0,r?Gi(n,(function(){t.style.display=t.__vOriginalDisplay})):Xi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},da={model:na,show:fa},pa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function va(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?va(Re(e.children)):t}function ha(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[x(r)]=o[r];return e}function ma(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ga=function(t){return t.tag||ke(t)},ya=function(t){return"show"===t.name},_a={name:"transition",props:pa,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ga)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var a=va(o);if(!a)return o;if(this._leaving)return ma(t,o);var s="__transition-".concat(this._uid,"-");a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=ha(this),u=this._vnode,l=va(u);if(a.data.directives&&a.data.directives.some(ya)&&(a.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(a,l)&&!ke(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=A({},c);if("out-in"===r)return this._leaving=!0,Qt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ma(t,o);if("in-out"===r){if(ke(a))return u;var d,p=function(){d()};Qt(c,"afterEnter",p),Qt(c,"enterCancelled",p),Qt(f,"delayLeave",(function(t){d=t}))}}return o}}},ba=A({tag:String,moveClass:String},pa);delete ba.mode;var $a={props:ba,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Je(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=ha(this),s=0;s-1?ao[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ao[t]=/HTMLUnknownElement/.test(e.toString())},A(Er.options.directives,da),A(Er.options.components,ka),Er.prototype.__patch__=q?ea:E,Er.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=dt),Ge(t,"beforeMount"),r=function(){t._update(t._render(),n)},new Xn(t,r,E,{before:function(){t._isMounted&&!t._isDestroyed&&Ge(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,La=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ra="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(U.source,"]*"),Fa="((?:".concat(Ra,"\\:)?").concat(Ra,")"),Ha=new RegExp("^<".concat(Fa)),Ba=/^\s*(\/?)>/,Ua=new RegExp("^<\\/".concat(Fa,"[^>]*>")),za=/^]+>/i,Va=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Za=/&(?:lt|gt|quot|amp|#39);/g,Ga=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Xa=h("pre,textarea",!0),Ya=function(t,e){return t&&Xa(t)&&"\n"===e[0]};function Qa(t,e){var n=e?Ga:Za;return t.replace(n,(function(t){return Wa[t]}))}function ts(t,e){for(var n,r,o=[],i=e.expectHTML,a=e.isUnaryTag||N,s=e.canBeLeftOpenTag||N,c=0,u=function(){if(n=t,r&&Ja(r)){var u=0,d=r.toLowerCase(),p=qa[d]||(qa[d]=new RegExp("([\\s\\S]*?)(]*>)","i"));w=t.replace(p,(function(t,n,r){return u=r.length,Ja(d)||"noscript"===d||(n=n.replace(//g,"$1").replace(//g,"$1")),Ya(d,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-w.length,t=w,f(d,c-u,c)}else{var v=t.indexOf("<");if(0===v){if(Va.test(t)){var h=t.indexOf("--\x3e");if(h>=0)return e.shouldKeepComment&&e.comment&&e.comment(t.substring(4,h),c,c+h+3),l(h+3),"continue"}if(Ka.test(t)){var m=t.indexOf("]>");if(m>=0)return l(m+2),"continue"}var g=t.match(za);if(g)return l(g[0].length),"continue";var y=t.match(Ua);if(y){var _=c;return l(y[0].length),f(y[1],_,c),"continue"}var b=function(){var e=t.match(Ha);if(e){var n={tagName:e[1],attrs:[],start:c};l(e[0].length);for(var r=void 0,o=void 0;!(r=t.match(Ba))&&(o=t.match(La)||t.match(Ia));)o.start=c,l(o[0].length),o.end=c,n.attrs.push(o);if(r)return n.unarySlash=r[1],l(r[0].length),n.end=c,n}}();if(b)return function(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&Ma(n)&&f(r),s(n)&&r===n&&f(n));for(var u=a(n)||!!c,l=t.attrs.length,d=new Array(l),p=0;p=0){for(w=t.slice(v);!(Ua.test(w)||Ha.test(w)||Va.test(w)||Ka.test(w)||(x=w.indexOf("<",1))<0);)v+=x,w=t.slice(v);$=t.substring(0,v)}v<0&&($=t),$&&l($.length),e.chars&&$&&e.chars($,c-$.length,c)}if(t===n)return e.chars&&e.chars(t),"break"};t;){if("break"===u())break}function l(e){c+=e,t=t.substring(e)}function f(t,n,i){var a,s;if(null==n&&(n=c),null==i&&(i=c),t)for(s=t.toLowerCase(),a=o.length-1;a>=0&&o[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}f()}var es,ns,rs,os,is,as,ss,cs,us=/^@|^v-on:/,ls=/^v-|^@|^:|^#/,fs=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ds=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,ps=/^\(|\)$/g,vs=/^\[.*\]$/,hs=/:(.*)$/,ms=/^:|^\.|^v-bind:/,gs=/\.[^.\]]+(?=[^\]]*$)/g,ys=/^v-slot(:|$)|^#/,_s=/[\r\n]/,bs=/[ \f\t\r\n]+/g,$s=$(Na),ws="_empty_";function xs(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:js(e),rawAttrsMap:{},parent:n,children:[]}}function Cs(t,e){es=e.warn||Ho,as=e.isPreTag||N,ss=e.mustUseProp||N,cs=e.getTagNamespace||N,e.isReservedTag,rs=Bo(e.modules,"transformNode"),os=Bo(e.modules,"preTransformNode"),is=Bo(e.modules,"postTransformNode"),ns=e.delimiters;var n,r,o=[],i=!1!==e.preserveWhitespace,a=e.whitespace,s=!1,c=!1;function u(t){if(l(t),s||t.processed||(t=ks(t,e)),o.length||t===n||n.if&&(t.elseif||t.else)&&Os(n,{exp:t.elseif,block:t}),r&&!t.forbidden)if(t.elseif||t.else)a=t,u=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(r.children),u&&u.if&&Os(u,{exp:a.elseif,block:a});else{if(t.slotScope){var i=t.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[i]=t}r.children.push(t),t.parent=r}var a,u;t.children=t.children.filter((function(t){return!t.slotScope})),l(t),t.pre&&(s=!1),as(t.tag)&&(c=!1);for(var f=0;fc&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=Ro(r[1].trim());a.push("_s(".concat(u,")")),s.push({"@binding":u}),c=o+r[0].length}return c-1")+("true"===i?":(".concat(e,")"):":_q(".concat(e,",").concat(i,")"))),qo(t,"change","var $$a=".concat(e,",")+"$$el=$event.target,"+"$$c=$$el.checked?(".concat(i,"):(").concat(a,");")+"if(Array.isArray($$a)){"+"var $$v=".concat(r?"_n("+o+")":o,",")+"$$i=_i($$a,$$v);"+"if($$el.checked){$$i<0&&(".concat(Qo(e,"$$a.concat([$$v])"),")}")+"else{$$i>-1&&(".concat(Qo(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))"),")}")+"}else{".concat(Qo(e,"$$c"),"}"),null,!0)}(t,r,o);else if("input"===i&&"radio"===a)!function(t,e,n){var r=n&&n.number,o=Wo(t,"value")||"null";o=r?"_n(".concat(o,")"):o,Uo(t,"checked","_q(".concat(e,",").concat(o,")")),qo(t,"change",Qo(e,o),null,!0)}(t,r,o);else if("input"===i||"textarea"===i)!function(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?ai:"input",l="$event.target.value";s&&(l="$event.target.value.trim()");a&&(l="_n(".concat(l,")"));var f=Qo(e,l);c&&(f="if($event.target.composing)return;".concat(f));Uo(t,"value","(".concat(e,")")),qo(t,u,f,null,!0),(s||a)&&qo(t,"blur","$forceUpdate()")}(t,r,o);else if(!B.isReservedTag(i))return Yo(t,r,o),!1;return!0},text:function(t,e){e.value&&Uo(t,"textContent","_s(".concat(e.value,")"),e)},html:function(t,e){e.value&&Uo(t,"innerHTML","_s(".concat(e.value,")"),e)}},Rs={expectHTML:!0,modules:Ds,directives:Ls,isPreTag:function(t){return"pre"===t},isUnaryTag:Pa,mustUseProp:Ur,canBeLeftOpenTag:Da,isReservedTag:oo,getTagNamespace:io,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(Ds)},Fs=$((function(t){return h("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));function Hs(t,e){t&&(Ms=Fs(e.staticKeys||""),Is=e.isReservedTag||N,Bs(t),Us(t,!1))}function Bs(t){if(t.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||m(t.tag)||!Is(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Ms)))}(t),1===t.type){if(!Is(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,n=t.children.length;e|^function(?:\s+[\w$]+)?\s*\(/,Vs=/\([^)]*?\);*$/,Ks=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Js={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},qs={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Ws=function(t){return"if(".concat(t,")return null;")},Zs={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Ws("$event.target !== $event.currentTarget"),ctrl:Ws("!$event.ctrlKey"),shift:Ws("!$event.shiftKey"),alt:Ws("!$event.altKey"),meta:Ws("!$event.metaKey"),left:Ws("'button' in $event && $event.button !== 0"),middle:Ws("'button' in $event && $event.button !== 1"),right:Ws("'button' in $event && $event.button !== 2")};function Gs(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=Xs(t[i]);t[i]&&t[i].dynamic?o+="".concat(i,",").concat(a,","):r+='"'.concat(i,'":').concat(a,",")}return r="{".concat(r.slice(0,-1),"}"),o?n+"_d(".concat(r,",[").concat(o.slice(0,-1),"])"):n+r}function Xs(t){if(!t)return"function(){}";if(Array.isArray(t))return"[".concat(t.map((function(t){return Xs(t)})).join(","),"]");var e=Ks.test(t.value),n=zs.test(t.value),r=Ks.test(t.value.replace(Vs,""));if(t.modifiers){var o="",i="",a=[],s=function(e){if(Zs[e])i+=Zs[e],Js[e]&&a.push(e);else if("exact"===e){var n=t.modifiers;i+=Ws(["ctrl","shift","alt","meta"].filter((function(t){return!n[t]})).map((function(t){return"$event.".concat(t,"Key")})).join("||"))}else a.push(e)};for(var c in t.modifiers)s(c);a.length&&(o+=function(t){return"if(!$event.type.indexOf('key')&&"+"".concat(t.map(Ys).join("&&"),")return null;")}(a)),i&&(o+=i);var u=e?"return ".concat(t.value,".apply(null, arguments)"):n?"return (".concat(t.value,").apply(null, arguments)"):r?"return ".concat(t.value):t.value;return"function($event){".concat(o).concat(u,"}")}return e||n?t.value:"function($event){".concat(r?"return ".concat(t.value):t.value,"}")}function Ys(t){var e=parseInt(t,10);if(e)return"$event.keyCode!==".concat(e);var n=Js[t],r=qs[t];return"_k($event.keyCode,"+"".concat(JSON.stringify(t),",")+"".concat(JSON.stringify(n),",")+"$event.key,"+"".concat(JSON.stringify(r))+")"}var Qs={on:function(t,e){t.wrapListeners=function(t){return"_g(".concat(t,",").concat(e.value,")")}},bind:function(t,e){t.wrapData=function(n){return"_b(".concat(n,",'").concat(t.tag,"',").concat(e.value,",").concat(e.modifiers&&e.modifiers.prop?"true":"false").concat(e.modifiers&&e.modifiers.sync?",true":"",")")}},cloak:E},tc=function(t){this.options=t,this.warn=t.warn||Ho,this.transforms=Bo(t.modules,"transformCode"),this.dataGenFns=Bo(t.modules,"genData"),this.directives=A(A({},Qs),t.directives);var e=t.isReservedTag||N;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function ec(t,e){var n=new tc(e),r=t?"script"===t.tag?"null":nc(t,n):'_c("div")';return{render:"with(this){return ".concat(r,"}"),staticRenderFns:n.staticRenderFns}}function nc(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return rc(t,e);if(t.once&&!t.onceProcessed)return oc(t,e);if(t.for&&!t.forProcessed)return sc(t,e);if(t.if&&!t.ifProcessed)return ic(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=fc(t,e),o="_t(".concat(n).concat(r?",function(){return ".concat(r,"}"):""),i=t.attrs||t.dynamicAttrs?vc((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:x(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];!i&&!a||r||(o+=",null");i&&(o+=",".concat(i));a&&(o+="".concat(i?"":",null",",").concat(a));return o+")"}(t,e);var n=void 0;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:fc(e,n,!0);return"_c(".concat(t,",").concat(cc(e,n)).concat(r?",".concat(r):"",")")}(t.component,t,e);else{var r=void 0,o=e.maybeComponent(t);(!t.plain||t.pre&&o)&&(r=cc(t,e));var i=void 0,a=e.options.bindings;o&&a&&!1!==a.__isScriptSetup&&(i=function(t,e){var n=x(e),r=C(n),o=function(o){return t[e]===o?e:t[n]===o?n:t[r]===o?r:void 0},i=o("setup-const")||o("setup-reactive-const");if(i)return i;var a=o("setup-let")||o("setup-ref")||o("setup-maybe-ref");if(a)return a}(a,t.tag)),i||(i="'".concat(t.tag,"'"));var s=t.inlineTemplate?null:fc(t,e,!0);n="_c(".concat(i).concat(r?",".concat(r):"").concat(s?",".concat(s):"",")")}for(var c=0;c>>0}(a)):"",")")}(t,t.scopedSlots,e),",")),t.model&&(n+="model:{value:".concat(t.model.value,",callback:").concat(t.model.callback,",expression:").concat(t.model.expression,"},")),t.inlineTemplate){var i=function(t,e){var n=t.children[0];if(n&&1===n.type){var r=ec(n,e.options);return"inlineTemplate:{render:function(){".concat(r.render,"},staticRenderFns:[").concat(r.staticRenderFns.map((function(t){return"function(){".concat(t,"}")})).join(","),"]}")}}(t,e);i&&(n+="".concat(i,","))}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b(".concat(n,',"').concat(t.tag,'",').concat(vc(t.dynamicAttrs),")")),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function uc(t){return 1===t.type&&("slot"===t.tag||t.children.some(uc))}function lc(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return ic(t,e,lc,"null");if(t.for&&!t.forProcessed)return sc(t,e,lc);var r=t.slotScope===ws?"":String(t.slotScope),o="function(".concat(r,"){")+"return ".concat("template"===t.tag?t.if&&n?"(".concat(t.if,")?").concat(fc(t,e)||"undefined",":undefined"):fc(t,e)||"undefined":nc(t,e),"}"),i=r?"":",proxy:true";return"{key:".concat(t.slotTarget||'"default"',",fn:").concat(o).concat(i,"}")}function fc(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return"".concat((r||nc)(a,e)).concat(s)}var c=n?function(t,e){for(var n=0,r=0;r':'
',_c.innerHTML.indexOf(" ")>0}var xc=!!q&&wc(!1),Cc=!!q&&wc(!0),kc=$((function(t){var e=co(t);return e&&e.innerHTML})),Sc=Er.prototype.$mount;return Er.prototype.$mount=function(t,e){if((t=t&&co(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=kc(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){var o=$c(r,{outputSourceRange:!1,shouldDecodeNewlines:xc,shouldDecodeNewlinesForHref:Cc,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return Sc.call(this,t,e)},Er.compile=$c,A(Er,Jn),Er.effect=function(t,e){var n=new Xn(ut,t,E,{sync:!0});e&&(n.update=function(){e((function(){return n.run()}))})},Er})); diff --git a/src/www/manifest.json b/src/www/manifest.json deleted file mode 100644 index e0834f74..00000000 --- a/src/www/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "WireGuard", - "display": "standalone", - "background_color": "#fff", - "icons": [ - { - "src": "img/favicon.png", - "type": "image/png" - } - ] -} diff --git a/src/www/src/css/app.css b/src/www/src/css/app.css deleted file mode 100644 index b5c61c95..00000000 --- a/src/www/src/css/app.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; From ddf4a59edbf7f9199813e597fdfe726fa7dbdd0f Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:25:08 +0300 Subject: [PATCH 03/63] Update Server.js to serve the correct directory on "/" --- src/lib/Server.js | 358 ++++++++++++++++++++++++++++------------------ 1 file changed, 219 insertions(+), 139 deletions(-) diff --git a/src/lib/Server.js b/src/lib/Server.js index 529447d7..3d7aef7a 100644 --- a/src/lib/Server.js +++ b/src/lib/Server.js @@ -35,77 +35,98 @@ const { } = require('../config'); module.exports = class Server { - constructor() { const app = createApp(); this.app = app; - app.use(fromNodeMiddleware(expressSession({ - secret: crypto.randomBytes(256).toString('hex'), - resave: true, - saveUninitialized: true, - }))); + app.use( + fromNodeMiddleware( + expressSession({ + secret: crypto.randomBytes(256).toString('hex'), + resave: true, + saveUninitialized: true, + }) + ) + ); const router = createRouter(); app.use(router); router - .get('/api/release', defineEventHandler((event) => { - setHeader(event, 'Content-Type', 'application/json'); - return RELEASE; - })) - - .get('/api/lang', defineEventHandler((event) => { - setHeader(event, 'Content-Type', 'application/json'); - return `"${LANG}"`; - })) - - .get('/api/ui-traffic-stats', defineEventHandler((event) => { - setHeader(event, 'Content-Type', 'application/json'); - return `"${UI_TRAFFIC_STATS}"`; - })) - - .get('/api/ui-chart-type', defineEventHandler((event) => { - setHeader(event, 'Content-Type', 'application/json'); - return `"${UI_CHART_TYPE}"`; - })) + .get( + '/api/release', + defineEventHandler((event) => { + setHeader(event, 'Content-Type', 'application/json'); + return RELEASE; + }) + ) + + .get( + '/api/lang', + defineEventHandler((event) => { + setHeader(event, 'Content-Type', 'application/json'); + return `"${LANG}"`; + }) + ) + + .get( + '/api/ui-traffic-stats', + defineEventHandler((event) => { + setHeader(event, 'Content-Type', 'application/json'); + return `"${UI_TRAFFIC_STATS}"`; + }) + ) + + .get( + '/api/ui-chart-type', + defineEventHandler((event) => { + setHeader(event, 'Content-Type', 'application/json'); + return `"${UI_CHART_TYPE}"`; + }) + ) // Authentication - .get('/api/session', defineEventHandler((event) => { - const requiresPassword = !!process.env.PASSWORD; - const authenticated = requiresPassword - ? !!(event.node.req.session && event.node.req.session.authenticated) - : true; - - return { - requiresPassword, - authenticated, - }; - })) - .post('/api/session', defineEventHandler(async (event) => { - const { password } = await readBody(event); - - if (typeof password !== 'string') { - throw createError({ - status: 401, - message: 'Missing: Password', - }); - } + .get( + '/api/session', + defineEventHandler((event) => { + const requiresPassword = !!process.env.PASSWORD; + const authenticated = requiresPassword + ? !!(event.node.req.session && event.node.req.session.authenticated) + : true; + + return { + requiresPassword, + authenticated, + }; + }) + ) + .post( + '/api/session', + defineEventHandler(async (event) => { + const { password } = await readBody(event); + + if (typeof password !== 'string') { + throw createError({ + status: 401, + message: 'Missing: Password', + }); + } - if (password !== PASSWORD) { - throw createError({ - status: 401, - message: 'Incorrect Password', - }); - } + if (password !== PASSWORD) { + throw createError({ + status: 401, + message: 'Incorrect Password', + }); + } - event.node.req.session.authenticated = true; - event.node.req.session.save(); + event.node.req.session.authenticated = true; + event.node.req.session.save(); - debug(`New Session: ${event.node.req.session.id}`); + debug(`New Session: ${event.node.req.session.id}`); - return { succcess: true }; - })); + return { succcess: true }; + }) + ); // WireGuard app.use( @@ -119,7 +140,12 @@ module.exports = class Server { } if (req.url.startsWith('/api/') && req.headers['authorization']) { - if (bcrypt.compareSync(req.headers['authorization'], bcrypt.hashSync(PASSWORD, 10))) { + if ( + bcrypt.compareSync( + req.headers['authorization'], + bcrypt.hashSync(PASSWORD, 10) + ) + ) { return next(); } return res.status(401).json({ @@ -130,87 +156,137 @@ module.exports = class Server { return res.status(401).json({ error: 'Not Logged In', }); - }), + }) ); const router2 = createRouter(); app.use(router2); router2 - .delete('/api/session', defineEventHandler((event) => { - const sessionId = event.node.req.session.id; - - event.node.req.session.destroy(); - - debug(`Deleted Session: ${sessionId}`); - return { success: true }; - })) - .get('/api/wireguard/client', defineEventHandler(() => { - return WireGuard.getClients(); - })) - .get('/api/wireguard/client/:clientId/qrcode.svg', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - const svg = await WireGuard.getClientQRCodeSVG({ clientId }); - setHeader(event, 'Content-Type', 'image/svg+xml'); - return svg; - })) - .get('/api/wireguard/client/:clientId/configuration', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - const client = await WireGuard.getClient({ clientId }); - const config = await WireGuard.getClientConfiguration({ clientId }); - const configName = client.name - .replace(/[^a-zA-Z0-9_=+.-]/g, '-') - .replace(/(-{2,}|-$)/g, '-') - .replace(/-$/, '') - .substring(0, 32); - setHeader(event, 'Content-Disposition', `attachment; filename="${configName || clientId}.conf"`); - setHeader(event, 'Content-Type', 'text/plain'); - return config; - })) - .post('/api/wireguard/client', defineEventHandler(async (event) => { - const { name } = await readBody(event); - await WireGuard.createClient({ name }); - return { success: true }; - })) - .delete('/api/wireguard/client/:clientId', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - await WireGuard.deleteClient({ clientId }); - return { success: true }; - })) - .post('/api/wireguard/client/:clientId/enable', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') { - throw createError({ status: 403 }); - } - await WireGuard.enableClient({ clientId }); - return { success: true }; - })) - .post('/api/wireguard/client/:clientId/disable', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') { - throw createError({ status: 403 }); - } - await WireGuard.disableClient({ clientId }); - return { success: true }; - })) - .put('/api/wireguard/client/:clientId/name', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') { - throw createError({ status: 403 }); - } - const { name } = await readBody(event); - await WireGuard.updateClientName({ clientId, name }); - return { success: true }; - })) - .put('/api/wireguard/client/:clientId/address', defineEventHandler(async (event) => { - const clientId = getRouterParam(event, 'clientId'); - if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') { - throw createError({ status: 403 }); - } - const { address } = await readBody(event); - await WireGuard.updateClientAddress({ clientId, address }); - return { success: true }; - })); + .delete( + '/api/session', + defineEventHandler((event) => { + const sessionId = event.node.req.session.id; + + event.node.req.session.destroy(); + + debug(`Deleted Session: ${sessionId}`); + return { success: true }; + }) + ) + .get( + '/api/wireguard/client', + defineEventHandler(() => { + return WireGuard.getClients(); + }) + ) + .get( + '/api/wireguard/client/:clientId/qrcode.svg', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + const svg = await WireGuard.getClientQRCodeSVG({ clientId }); + setHeader(event, 'Content-Type', 'image/svg+xml'); + return svg; + }) + ) + .get( + '/api/wireguard/client/:clientId/configuration', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + const client = await WireGuard.getClient({ clientId }); + const config = await WireGuard.getClientConfiguration({ clientId }); + const configName = client.name + .replace(/[^a-zA-Z0-9_=+.-]/g, '-') + .replace(/(-{2,}|-$)/g, '-') + .replace(/-$/, '') + .substring(0, 32); + setHeader( + event, + 'Content-Disposition', + `attachment; filename="${configName || clientId}.conf"` + ); + setHeader(event, 'Content-Type', 'text/plain'); + return config; + }) + ) + .post( + '/api/wireguard/client', + defineEventHandler(async (event) => { + const { name } = await readBody(event); + await WireGuard.createClient({ name }); + return { success: true }; + }) + ) + .delete( + '/api/wireguard/client/:clientId', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + await WireGuard.deleteClient({ clientId }); + return { success: true }; + }) + ) + .post( + '/api/wireguard/client/:clientId/enable', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + if ( + clientId === '__proto__' || + clientId === 'constructor' || + clientId === 'prototype' + ) { + throw createError({ status: 403 }); + } + await WireGuard.enableClient({ clientId }); + return { success: true }; + }) + ) + .post( + '/api/wireguard/client/:clientId/disable', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + if ( + clientId === '__proto__' || + clientId === 'constructor' || + clientId === 'prototype' + ) { + throw createError({ status: 403 }); + } + await WireGuard.disableClient({ clientId }); + return { success: true }; + }) + ) + .put( + '/api/wireguard/client/:clientId/name', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + if ( + clientId === '__proto__' || + clientId === 'constructor' || + clientId === 'prototype' + ) { + throw createError({ status: 403 }); + } + const { name } = await readBody(event); + await WireGuard.updateClientName({ clientId, name }); + return { success: true }; + }) + ) + .put( + '/api/wireguard/client/:clientId/address', + defineEventHandler(async (event) => { + const clientId = getRouterParam(event, 'clientId'); + if ( + clientId === '__proto__' || + clientId === 'constructor' || + clientId === 'prototype' + ) { + throw createError({ status: 403 }); + } + const { address } = await readBody(event); + await WireGuard.updateClientAddress({ clientId, address }); + return { success: true }; + }) + ); // Static assets const publicDir = '/app/www'; @@ -225,11 +301,16 @@ module.exports = class Server { return; } - if (id.endsWith('.html')) setHeader(event, 'Content-Type', 'text/html'); - if (id.endsWith('.js')) setHeader(event, 'Content-Type', 'application/javascript'); - if (id.endsWith('.json')) setHeader(event, 'Content-Type', 'application/json'); - if (id.endsWith('.css')) setHeader(event, 'Content-Type', 'text/css'); - if (id.endsWith('.png')) setHeader(event, 'Content-Type', 'image/png'); + if (id.endsWith('.html')) + setHeader(event, 'Content-Type', 'text/html'); + if (id.endsWith('.js')) + setHeader(event, 'Content-Type', 'application/javascript'); + if (id.endsWith('.json')) + setHeader(event, 'Content-Type', 'application/json'); + if (id.endsWith('.css')) + setHeader(event, 'Content-Type', 'text/css'); + if (id.endsWith('.png')) + setHeader(event, 'Content-Type', 'image/png'); return { size: stats.size, @@ -237,11 +318,10 @@ module.exports = class Server { }; }, }); - }), + }) ); createServer(toNodeListener(app)).listen(PORT, WEBUI_HOST); debug(`Listening on http://${WEBUI_HOST}:${PORT}`); } - }; From 9636bbd7b32d6b423d2ab0af88784a4cba46e94b Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 16:23:58 +0300 Subject: [PATCH 04/63] Move webui to project root --- {src/webui => webui}/.gitignore | 0 {src/webui => webui}/index.html | 0 {src/webui => webui}/jsconfig.json | 0 {src/webui => webui}/package-lock.json | 0 {src/webui => webui}/package.json | 0 {src/webui => webui}/postcss.config.js | 0 .../webui => webui}/public/img/apple-touch-icon.png | Bin {src/webui => webui}/public/img/favicon.png | Bin {src/webui => webui}/public/manifest.json | 0 {src/webui => webui}/src/App.vue | 0 {src/webui => webui}/src/assets/img/logo.png | Bin {src/webui => webui}/src/assets/style.css | 0 {src/webui => webui}/src/main.js | 0 {src/webui => webui}/tailwind.config.js | 0 {src/webui => webui}/vite.config.js | 12 +++++++++++- 15 files changed, 11 insertions(+), 1 deletion(-) rename {src/webui => webui}/.gitignore (100%) rename {src/webui => webui}/index.html (100%) rename {src/webui => webui}/jsconfig.json (100%) rename {src/webui => webui}/package-lock.json (100%) rename {src/webui => webui}/package.json (100%) rename {src/webui => webui}/postcss.config.js (100%) rename {src/webui => webui}/public/img/apple-touch-icon.png (100%) rename {src/webui => webui}/public/img/favicon.png (100%) rename {src/webui => webui}/public/manifest.json (100%) rename {src/webui => webui}/src/App.vue (100%) rename {src/webui => webui}/src/assets/img/logo.png (100%) rename {src/webui => webui}/src/assets/style.css (100%) rename {src/webui => webui}/src/main.js (100%) rename {src/webui => webui}/tailwind.config.js (100%) rename {src/webui => webui}/vite.config.js (52%) diff --git a/src/webui/.gitignore b/webui/.gitignore similarity index 100% rename from src/webui/.gitignore rename to webui/.gitignore diff --git a/src/webui/index.html b/webui/index.html similarity index 100% rename from src/webui/index.html rename to webui/index.html diff --git a/src/webui/jsconfig.json b/webui/jsconfig.json similarity index 100% rename from src/webui/jsconfig.json rename to webui/jsconfig.json diff --git a/src/webui/package-lock.json b/webui/package-lock.json similarity index 100% rename from src/webui/package-lock.json rename to webui/package-lock.json diff --git a/src/webui/package.json b/webui/package.json similarity index 100% rename from src/webui/package.json rename to webui/package.json diff --git a/src/webui/postcss.config.js b/webui/postcss.config.js similarity index 100% rename from src/webui/postcss.config.js rename to webui/postcss.config.js diff --git a/src/webui/public/img/apple-touch-icon.png b/webui/public/img/apple-touch-icon.png similarity index 100% rename from src/webui/public/img/apple-touch-icon.png rename to webui/public/img/apple-touch-icon.png diff --git a/src/webui/public/img/favicon.png b/webui/public/img/favicon.png similarity index 100% rename from src/webui/public/img/favicon.png rename to webui/public/img/favicon.png diff --git a/src/webui/public/manifest.json b/webui/public/manifest.json similarity index 100% rename from src/webui/public/manifest.json rename to webui/public/manifest.json diff --git a/src/webui/src/App.vue b/webui/src/App.vue similarity index 100% rename from src/webui/src/App.vue rename to webui/src/App.vue diff --git a/src/webui/src/assets/img/logo.png b/webui/src/assets/img/logo.png similarity index 100% rename from src/webui/src/assets/img/logo.png rename to webui/src/assets/img/logo.png diff --git a/src/webui/src/assets/style.css b/webui/src/assets/style.css similarity index 100% rename from src/webui/src/assets/style.css rename to webui/src/assets/style.css diff --git a/src/webui/src/main.js b/webui/src/main.js similarity index 100% rename from src/webui/src/main.js rename to webui/src/main.js diff --git a/src/webui/tailwind.config.js b/webui/tailwind.config.js similarity index 100% rename from src/webui/tailwind.config.js rename to webui/tailwind.config.js diff --git a/src/webui/vite.config.js b/webui/vite.config.js similarity index 52% rename from src/webui/vite.config.js rename to webui/vite.config.js index 5c45e1d9..ee0e1756 100644 --- a/src/webui/vite.config.js +++ b/webui/vite.config.js @@ -12,5 +12,15 @@ export default defineConfig({ alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } - } + }, + build: { + outDir: 'dist', + emptyOutDir: true, + // rollupOptions: { + // input: { + // main: fileURLToPath(new URL('./src/main.js', import.meta.url)), + // index: fileURLToPath(new URL('./src/index.html', import.meta.url)), + // } + // } + }, }) From 64001ddf73c5f6fe973c21abaa96286f96cbcdee Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 16:26:26 +0300 Subject: [PATCH 05/63] Dockerfile: Automatically build static files for Web UI --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index ca427af2..ad00eceb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,10 @@ RUN npm ci --omit=dev &&\ # This saves a lot of disk space. FROM docker.io/library/node:20-alpine HEALTHCHECK CMD /usr/bin/timeout 5s /bin/sh -c "/usr/bin/wg show | /bin/grep -q interface || exit 1" --interval=1m --timeout=5s --retries=3 + +# Copy the server files and the built static files COPY --from=build_node_modules /app /app +COPY --from=build_node_modules /webui/dist /app/www # Move node_modules one directory up, so during development # we don't have to mount it in a volume. From 167694973b4180daf50d630447a566d08955cdb4 Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 17:41:01 +0300 Subject: [PATCH 06/63] App.vue: Formatting --- webui/src/App.vue | 2486 +++++++++++++++++++++++---------------------- 1 file changed, 1296 insertions(+), 1190 deletions(-) diff --git a/webui/src/App.vue b/webui/src/App.vue index ba45b51a..61482b29 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -1,1270 +1,1376 @@ From 727a5fbbd16969119f73a1dd06c97f670edbca7a Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 19:06:33 +0300 Subject: [PATCH 07/63] Move server, bind www folder --- Dockerfile | 2 +- docker-compose.dev.yml | 3 ++- webui/package.json | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ad00eceb..6cc92a60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,5 +44,5 @@ RUN update-alternatives --install /sbin/iptables iptables /sbin/iptables-legacy ENV DEBUG=Server,WireGuard # Run Web UI -WORKDIR /app +WORKDIR /app/server CMD ["/usr/bin/dumb-init", "node", "server.js"] diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 65e64297..30e0b7ae 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -3,7 +3,8 @@ services: image: wg-easy command: npm run serve volumes: - - ./src/:/app/ + - ./src/:/app/server + - ./webui/dist:/app/www environment: # - PASSWORD=p - WG_HOST=192.168.1.233 diff --git a/webui/package.json b/webui/package.json index 379ce505..7453a99d 100644 --- a/webui/package.json +++ b/webui/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "vite", "build": "vite build", + "build:watch": "vite build --watch", "preview": "vite preview" }, "dependencies": { From 450b9ddc7078ead394ac6bb5ab73ba9c9201a07d Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Fri, 12 Jan 2024 19:54:22 +0300 Subject: [PATCH 08/63] Fix gravatars --- webui/src/App.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/webui/src/App.vue b/webui/src/App.vue index 61482b29..f1e9e63b 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -1,5 +1,6 @@ diff --git a/webui/src/components/icons/IconWarning.vue b/webui/src/components/icons/IconWarning.vue index 9d5d9095..40dc6cac 100644 --- a/webui/src/components/icons/IconWarning.vue +++ b/webui/src/components/icons/IconWarning.vue @@ -1,17 +1,17 @@ diff --git a/webui/src/composables/useDateTime.js b/webui/src/composables/useDateTime.js index 19820e19..faf424fc 100644 --- a/webui/src/composables/useDateTime.js +++ b/webui/src/composables/useDateTime.js @@ -1,13 +1,13 @@ export function useDateTime() { - const dateTime = (value) => { - return new Intl.DateTimeFormat(undefined, { - year: "numeric", - month: "short", - day: "numeric", - hour: "numeric", - minute: "numeric", - }).format(value); - }; + const dateTime = (value) => { + return new Intl.DateTimeFormat(undefined, { + year: 'numeric', + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + }).format(value); + }; - return { dateTime }; + return { dateTime }; } diff --git a/webui/src/composables/useTimeAgo.js b/webui/src/composables/useTimeAgo.js index fec74a27..31f25c77 100644 --- a/webui/src/composables/useTimeAgo.js +++ b/webui/src/composables/useTimeAgo.js @@ -1,29 +1,29 @@ export function useTimeAgo() { - const timeago = (date) => { - const now = new Date(); - const diff = now - date; + const timeago = (date) => { + const now = new Date(); + const diff = now - date; - if (diff < 1000) { - return "just now"; - } else if (diff < 60000) { - const seconds = Math.floor(diff / 1000); - return `${seconds} ${plural("second", seconds)} ago`; - } else if (diff < 3600000) { - const minutes = Math.floor(diff / 60000); - return `${minutes} ${plural("minute", minutes)} ago`; - } else if (diff < 86400000) { - const hours = Math.floor(diff / 3600000); - return `${hours} ${plural("hour", hours)} ago`; - } else { - const days = Math.floor(diff / 86400000); - return `${days} ${plural("day", days)} ago`; - } - }; + if (diff < 1000) { + return 'just now'; + } else if (diff < 60000) { + const seconds = Math.floor(diff / 1000); + return `${seconds} ${plural('second', seconds)} ago`; + } else if (diff < 3600000) { + const minutes = Math.floor(diff / 60000); + return `${minutes} ${plural('minute', minutes)} ago`; + } else if (diff < 86400000) { + const hours = Math.floor(diff / 3600000); + return `${hours} ${plural('hour', hours)} ago`; + } else { + const days = Math.floor(diff / 86400000); + return `${days} ${plural('day', days)} ago`; + } + }; - // #278 -- this function might need to be rewritten to support l18n - const plural = (word, count) => { - return count !== 1 ? `${word}s` : word; - }; + // #278 -- this function might need to be rewritten to support l18n + const plural = (word, count) => { + return count !== 1 ? `${word}s` : word; + }; - return { timeago }; + return { timeago }; } diff --git a/webui/src/main.js b/webui/src/main.js index 48a9274b..d3e8f495 100644 --- a/webui/src/main.js +++ b/webui/src/main.js @@ -1,6 +1,6 @@ -import './assets/style.css' +import './assets/style.css'; -import { createApp } from 'vue' -import App from './App.vue' +import App from './App.vue'; +import { createApp } from 'vue'; -createApp(App).mount('#app') +createApp(App).mount('#app'); From eeea65a2195bb601af2ee4c2cf6ab1c77b9d7558 Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Sat, 13 Jan 2024 01:15:42 +0300 Subject: [PATCH 14/63] Fix pretty bytes --- webui/src/App.vue | 8 ++++---- webui/src/components/ClientTransfer.vue | 19 ++++++++++++------- webui/src/composables/useBytes.js | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 webui/src/composables/useBytes.js diff --git a/webui/src/App.vue b/webui/src/App.vue index 356f950f..2148341b 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -231,6 +231,7 @@ export default { const { dateTime } = useDateTime(); const { timeago } = useTimeAgo(); + const { bytes } = useBytes(); return { authenticated, @@ -258,6 +259,7 @@ export default { dateTime, timeago, + bytes, api, }; @@ -596,21 +598,19 @@ export default { /> - - diff --git a/webui/src/components/ClientTransfer.vue b/webui/src/components/ClientTransfer.vue index c4c6f0b5..31944028 100644 --- a/webui/src/components/ClientTransfer.vue +++ b/webui/src/components/ClientTransfer.vue @@ -1,13 +1,18 @@ + + - - diff --git a/webui/src/composables/useBytes.js b/webui/src/composables/useBytes.js new file mode 100644 index 00000000..496613f1 --- /dev/null +++ b/webui/src/composables/useBytes.js @@ -0,0 +1,25 @@ +export function useBytes() { + const bytes = (bytes, decimals, kib, maxunit) => { + kib = kib || false; + if (bytes === 0) return '0 B'; + if (Number.isNaN(parseFloat(bytes)) && !Number.isFinite(bytes)) + return 'NaN'; + const k = kib ? 1024 : 1000; + const dm = + decimals != null && !Number.isNaN(decimals) && decimals >= 0 + ? decimals + : 2; + const sizes = kib + ? ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB', 'BiB'] + : ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB']; + let i = Math.floor(Math.log(bytes) / Math.log(k)); + if (maxunit !== undefined) { + const index = sizes.indexOf(maxunit); + if (index !== -1) i = index; + } + // eslint-disable-next-line no-restricted-properties + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`; + }; + + return { bytes }; +} From d9615651fa11e4a76b266437be00ed8217411a3d Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Sat, 13 Jan 2024 01:15:56 +0300 Subject: [PATCH 15/63] Add apexcharts --- webui/package-lock.json | 115 +++++++++++++++++++++++++++++++++++++++- webui/package.json | 4 +- webui/src/App.vue | 40 ++++++++++---- 3 files changed, 147 insertions(+), 12 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index 69fb46cb..c2eb424f 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -8,8 +8,10 @@ "name": "webui", "version": "0.0.0", "dependencies": { + "apexcharts": "^3.45.1", "crypto-js": "^4.2.0", - "vue": "^3.3.11" + "vue": "^3.3.11", + "vue3-apexcharts": "^1.4.4" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", @@ -797,6 +799,11 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.10.tgz", "integrity": "sha512-C0mIVhwW1xQLMFyqMJxnhq6fWyE02lCgcE+TDdtGpg6B3H6kh/0YcqS54qYc76UJNlWegf3VgsLqgk6D9hBmzQ==" }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, "node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -840,6 +847,20 @@ "node": ">= 8" } }, + "node_modules/apexcharts": { + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.45.1.tgz", + "integrity": "sha512-pPjj/SA6dfPvR/IKRZF0STdfBGpBh3WRt7K0DFuW9P8erypYkX17EHu3/molPRfo2zSiQwTVpshHC5ncysqfkA==", + "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -2074,6 +2095,89 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/tailwindcss": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", @@ -2261,6 +2365,15 @@ } } }, + "node_modules/vue3-apexcharts": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.4.4.tgz", + "integrity": "sha512-TH89uZrxGjaDvkaYAISvj8+k6Bf1rUKFillc8oJirs5XZEPiwM1ELKZQ786wz0rfPqkSHHny2lqqUCK7Rw+LcQ==", + "peerDependencies": { + "apexcharts": "> 3.0.0", + "vue": "> 3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/webui/package.json b/webui/package.json index 5624aa62..6a904cb9 100644 --- a/webui/package.json +++ b/webui/package.json @@ -10,8 +10,10 @@ "preview": "vite preview" }, "dependencies": { + "apexcharts": "^3.45.1", "crypto-js": "^4.2.0", - "vue": "^3.3.11" + "vue": "^3.3.11", + "vue3-apexcharts": "^1.4.4" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", diff --git a/webui/src/App.vue b/webui/src/App.vue index 2148341b..f98e0ef9 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -4,6 +4,7 @@ import sha256 from 'crypto-js/sha256'; import { useDateTime } from './composables/useDateTime'; import { useTimeAgo } from './composables/useTimeAgo'; +import { useBytes } from './composables/useBytes'; import UpdateNotification from './components/UpdateNotification.vue'; import ClientNewButton from './components/ClientNewButton.vue'; @@ -22,6 +23,7 @@ import IconClose from './components/icons/IconClose.vue'; import IconWarning from './components/icons/IconWarning.vue'; import IconAvatarDefault from './components/icons/IconAvatarDefault.vue'; import ClientTransfer from './components/ClientTransfer.vue'; +import VueApexCharts from 'vue3-apexcharts'; class API { async call({ method, path, body }) { @@ -341,6 +343,7 @@ export default { IconWarning, IconAvatarDefault, ClientTransfer, + apexchart: VueApexCharts, }, methods: { handleNewClient() { @@ -553,26 +556,43 @@ export default { class="relative overflow-hidden border-b last:border-b-0 border-gray-100 dark:border-neutral-600 border-solid" > - - +
- + type="bar" + :options="chartOptions" + :series="[ + { + name: 'Upload (TX)', + data: client.transferTxHistory, + }, + ]" + />
-
+
-
--> +
Date: Sat, 13 Jan 2024 02:16:32 +0300 Subject: [PATCH 16/63] Move API functions to a separate file --- webui/src/App.vue | 115 +------------------------------------- webui/src/services/api.js | 114 +++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 114 deletions(-) create mode 100644 webui/src/services/api.js diff --git a/webui/src/App.vue b/webui/src/App.vue index f98e0ef9..a5a79e53 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -25,120 +25,7 @@ import IconAvatarDefault from './components/icons/IconAvatarDefault.vue'; import ClientTransfer from './components/ClientTransfer.vue'; import VueApexCharts from 'vue3-apexcharts'; -class API { - async call({ method, path, body }) { - const res = await fetch(`./api${path}`, { - method, - headers: { - 'Content-Type': 'application/json', - }, - body: body ? JSON.stringify(body) : undefined, - }); - - if (res.status === 204) { - return undefined; - } - - const json = await res.json(); - - if (!res.ok) { - throw new Error(json.error || res.statusText); - } - - return json; - } - - async getRelease() { - return this.call({ - method: 'get', - path: '/release', - }); - } - - async getSession() { - return this.call({ - method: 'get', - path: '/session', - }); - } - - async createSession({ password }) { - return this.call({ - method: 'post', - path: '/session', - body: { password }, - }); - } - - async deleteSession() { - return this.call({ - method: 'delete', - path: '/session', - }); - } - - async getClients() { - return this.call({ - method: 'get', - path: '/wireguard/client', - }).then((clients) => - clients.map((client) => ({ - ...client, - createdAt: new Date(client.createdAt), - updatedAt: new Date(client.updatedAt), - latestHandshakeAt: - client.latestHandshakeAt !== null - ? new Date(client.latestHandshakeAt) - : null, - })) - ); - } - - async createClient({ name }) { - return this.call({ - method: 'post', - path: '/wireguard/client', - body: { name }, - }); - } - - async deleteClient({ clientId }) { - return this.call({ - method: 'delete', - path: `/wireguard/client/${clientId}`, - }); - } - - async enableClient({ clientId }) { - return this.call({ - method: 'post', - path: `/wireguard/client/${clientId}/enable`, - }); - } - - async disableClient({ clientId }) { - return this.call({ - method: 'post', - path: `/wireguard/client/${clientId}/disable`, - }); - } - - async updateClientName({ clientId, name }) { - return this.call({ - method: 'put', - path: `/wireguard/client/${clientId}/name/`, - body: { name }, - }); - } - - async updateClientAddress({ clientId, address }) { - return this.call({ - method: 'put', - path: `/wireguard/client/${clientId}/address/`, - body: { address }, - }); - } -} +import API from './services/api'; export default { setup() { diff --git a/webui/src/services/api.js b/webui/src/services/api.js new file mode 100644 index 00000000..5fa82485 --- /dev/null +++ b/webui/src/services/api.js @@ -0,0 +1,114 @@ +export default class API { + async call({ method, path, body }) { + const res = await fetch(`./api${path}`, { + method, + headers: { + 'Content-Type': 'application/json', + }, + body: body ? JSON.stringify(body) : undefined, + }); + + if (res.status === 204) { + return undefined; + } + + const json = await res.json(); + + if (!res.ok) { + throw new Error(json.error || res.statusText); + } + + return json; + } + + async getRelease() { + return this.call({ + method: 'get', + path: '/release', + }); + } + + async getSession() { + return this.call({ + method: 'get', + path: '/session', + }); + } + + async createSession({ password }) { + return this.call({ + method: 'post', + path: '/session', + body: { password }, + }); + } + + async deleteSession() { + return this.call({ + method: 'delete', + path: '/session', + }); + } + + async getClients() { + return this.call({ + method: 'get', + path: '/wireguard/client', + }).then((clients) => + clients.map((client) => ({ + ...client, + createdAt: new Date(client.createdAt), + updatedAt: new Date(client.updatedAt), + latestHandshakeAt: + client.latestHandshakeAt !== null + ? new Date(client.latestHandshakeAt) + : null, + })) + ); + } + + async createClient({ name }) { + return this.call({ + method: 'post', + path: '/wireguard/client', + body: { name }, + }); + } + + async deleteClient({ clientId }) { + return this.call({ + method: 'delete', + path: `/wireguard/client/${clientId}`, + }); + } + + async enableClient({ clientId }) { + return this.call({ + method: 'post', + path: `/wireguard/client/${clientId}/enable`, + }); + } + + async disableClient({ clientId }) { + return this.call({ + method: 'post', + path: `/wireguard/client/${clientId}/disable`, + }); + } + + async updateClientName({ clientId, name }) { + return this.call({ + method: 'put', + path: `/wireguard/client/${clientId}/name/`, + body: { name }, + }); + } + + async updateClientAddress({ clientId, address }) { + return this.call({ + method: 'put', + path: `/wireguard/client/${clientId}/address/`, + body: { address }, + }); + } +} From ab4cec15077fda588c0b924bd12a4237cc969465 Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Wed, 20 Mar 2024 08:31:47 +0300 Subject: [PATCH 17/63] Dev --- .prettierignore | 1 + src/.env | 3 +++ src/.eslintrc.json | 3 ++- src/config.js | 1 + src/package-lock.json | 11 +++++++++++ webui/src/services/api.js | 7 +++++-- 6 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 .prettierignore create mode 100644 src/.env diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..fa29cdff --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +** \ No newline at end of file diff --git a/src/.env b/src/.env new file mode 100644 index 00000000..122fe628 --- /dev/null +++ b/src/.env @@ -0,0 +1,3 @@ +WG_HOST=127.0.0.1 +UI_TRAFFIC_STATS=true +UI_CHART_TYPE=2 \ No newline at end of file diff --git a/src/.eslintrc.json b/src/.eslintrc.json index 613dd7d5..20286524 100644 --- a/src/.eslintrc.json +++ b/src/.eslintrc.json @@ -6,6 +6,7 @@ "rules": { "consistent-return": "off", "no-shadow": "off", - "max-len": "off" + "max-len": "off", + "linebreak-style": "off" } } diff --git a/src/config.js b/src/config.js index b76c5343..56f9e0cf 100644 --- a/src/config.js +++ b/src/config.js @@ -1,6 +1,7 @@ 'use strict'; const { release } = require('./package.json'); +require('dotenv').config(); // development module.exports.RELEASE = release; module.exports.PORT = process.env.PORT || '51821'; diff --git a/src/package-lock.json b/src/package-lock.json index aa14185a..07f890b9 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -1336,6 +1336,17 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", diff --git a/webui/src/services/api.js b/webui/src/services/api.js index 5fa82485..8de1cd34 100644 --- a/webui/src/services/api.js +++ b/webui/src/services/api.js @@ -1,6 +1,8 @@ +const SERVER = 'http://127.0.0.1:51821' + export default class API { async call({ method, path, body }) { - const res = await fetch(`./api${path}`, { + const res = await fetch(`${SERVER}/api${path}`, { method, headers: { 'Content-Type': 'application/json', @@ -11,7 +13,8 @@ export default class API { if (res.status === 204) { return undefined; } - + console.log(`${SERVER}/api${path}`); + const json = await res.json(); if (!res.ok) { From d6a90c8f10d410b03a6e32e51d9ed0d43b34bc2f Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Thu, 21 Mar 2024 09:30:48 +0300 Subject: [PATCH 18/63] Update Split main layout into separate components Set up linting & formatting --- .prettierignore | 1 - .prettierrc.json | 6 - package-lock.json | 2551 ++++++++++++++++++++++- package.json | 3 + webui/.editorconfig | 2 + webui/.eslintrc.cjs | 21 + webui/.gitignore | 1 + webui/.prettierrc.cjs | 7 + webui/package-lock.json | 1546 +++++++++++++- webui/package.json | 6 + webui/src/App.vue | 966 +++------ webui/src/components/Auth.vue | 46 + webui/src/components/Client.vue | 34 + webui/src/components/ClientAddress.vue | 84 +- webui/src/components/ClientCharts.vue | 34 + webui/src/components/ClientControls.vue | 73 + webui/src/components/ClientInfo.vue | 67 + webui/src/components/ClientName.vue | 130 +- webui/src/components/Footer.vue | 12 + webui/src/main.js | 6 +- webui/src/services/api.js | 10 +- webui/src/utils/chartOptions.js | 69 + 22 files changed, 4805 insertions(+), 870 deletions(-) delete mode 100644 .prettierrc.json create mode 100644 webui/.editorconfig create mode 100644 webui/.eslintrc.cjs create mode 100644 webui/.prettierrc.cjs create mode 100644 webui/src/components/Auth.vue create mode 100644 webui/src/components/Client.vue create mode 100644 webui/src/components/ClientCharts.vue create mode 100644 webui/src/components/ClientControls.vue create mode 100644 webui/src/components/ClientInfo.vue create mode 100644 webui/src/components/Footer.vue create mode 100644 webui/src/utils/chartOptions.js diff --git a/.prettierignore b/.prettierignore index fa29cdff..e69de29b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +0,0 @@ -** \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 09c42f9e..00000000 --- a/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "es5", - "tabWidth": 2, - "semi": true, - "singleQuote": true -} diff --git a/package-lock.json b/package-lock.json index f57675bd..0de44f22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,2558 @@ { - "name": "wg-easy", + "name": "wg-easy-vue3", "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "version": "1.0.1" + "version": "1.0.1", + "devDependencies": { + "eslint-plugin-import": "^2.29.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true, + "peer": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "peer": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "peer": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "peer": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "peer": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "peer": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "peer": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "peer": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index c0485821..b6ce40c6 100644 --- a/package.json +++ b/package.json @@ -4,5 +4,8 @@ "build": "DOCKER_BUILDKIT=1 docker build --tag wg-easy .", "serve": "docker compose -f docker-compose.yml -f docker-compose.dev.yml up", "start": "docker run --env WG_HOST=0.0.0.0 --name wg-easy --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" --mount type=bind,source=\"$(pwd)\"/config,target=/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp wg-easy" + }, + "devDependencies": { + "eslint-plugin-import": "^2.29.1" } } diff --git a/webui/.editorconfig b/webui/.editorconfig new file mode 100644 index 00000000..cd79a0d9 --- /dev/null +++ b/webui/.editorconfig @@ -0,0 +1,2 @@ +[*] +end_of_line= lf \ No newline at end of file diff --git a/webui/.eslintrc.cjs b/webui/.eslintrc.cjs new file mode 100644 index 00000000..6e85adf7 --- /dev/null +++ b/webui/.eslintrc.cjs @@ -0,0 +1,21 @@ +module.exports = { + env: { + browser: true, + node: true, + es2021: true, + }, + extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'], + parser: 'vue-eslint-parser', + // parserOptions: { + // parser: '@typescript-eslint/parser', + // // sourceType: 'module', + // }, + plugins: ['vue', 'prettier'], + rules: { + 'vue/no-v-html': 'off', + 'vue/multi-word-component-names': 'off', + 'prettier/prettier': ['error'], + 'vue/no-undef-components': ['error'], + 'vue/no-undef-properties': ['error'], + }, +}; diff --git a/webui/.gitignore b/webui/.gitignore index 8ee54e8d..39abcccc 100644 --- a/webui/.gitignore +++ b/webui/.gitignore @@ -19,6 +19,7 @@ coverage # Editor directories and files .vscode/* +*.code-workspace !.vscode/extensions.json .idea *.suo diff --git a/webui/.prettierrc.cjs b/webui/.prettierrc.cjs new file mode 100644 index 00000000..0bd2846d --- /dev/null +++ b/webui/.prettierrc.cjs @@ -0,0 +1,7 @@ +module.exports = { + trailingComma: 'es5', + tabWidth: 2, + semi: true, + singleQuote: true, + printWidth: 120, +}; diff --git a/webui/package-lock.json b/webui/package-lock.json index c2eb424f..a9211a3a 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -10,17 +10,32 @@ "dependencies": { "apexcharts": "^3.45.1", "crypto-js": "^4.2.0", + "pinia": "^2.1.7", "vue": "^3.3.11", "vue3-apexcharts": "^1.4.4" }, "devDependencies": { + "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-vue": "^4.5.2", "autoprefixer": "^10.4.16", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.23.0", "postcss": "^8.4.33", "tailwindcss": "^3.4.1", "vite": "^5.0.10" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -412,6 +427,139 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -521,6 +669,18 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.9.4", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.4.tgz", @@ -696,6 +856,115 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/@typescript-eslint/parser": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-vue": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", @@ -755,6 +1024,11 @@ "@vue/shared": "3.4.10" } }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, "node_modules/@vue/reactivity": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.10.tgz", @@ -804,6 +1078,43 @@ "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -867,6 +1178,21 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -919,6 +1245,12 @@ "node": ">=8" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -972,6 +1304,15 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -1001,6 +1342,37 @@ } ] }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1067,6 +1439,12 @@ "node": ">= 6" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1103,18 +1481,65 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "dev": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1191,48 +1616,344 @@ "node": ">=6" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, "engines": { - "node": ">=8.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.23.0.tgz", + "integrity": "sha512-Bqd/b7hGYGrlV+wP/g77tjyFmp81lh5TMw0be9093X02SyelxRRfCI6/IsGq/J7Um0YwB9s0Ry0wlFyjPdmtUw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1245,6 +1966,42 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -1274,6 +2031,12 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1331,6 +2094,56 @@ "node": ">=10.13.0" } }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", @@ -1343,6 +2156,56 @@ "node": ">= 0.4" } }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1406,6 +2269,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1439,6 +2311,58 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -1454,6 +2378,33 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lru-cache": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", @@ -1520,6 +2471,12 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -1545,49 +2502,153 @@ "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, "node_modules/path-key": { @@ -1621,6 +2682,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1647,6 +2717,56 @@ "node": ">=0.10.0" } }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -1801,6 +2921,52 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1859,6 +3025,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -1869,6 +3044,63 @@ "node": ">=0.10.0" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/rollup": { "version": "4.9.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.4.tgz", @@ -1924,6 +3156,33 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1957,6 +3216,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -2061,6 +3329,18 @@ "node": ">=8" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -2083,6 +3363,18 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -2178,6 +3470,22 @@ "node": ">= 0.8.0" } }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tailwindcss": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", @@ -2215,6 +3523,12 @@ "node": ">=14.0.0" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -2248,12 +3562,68 @@ "node": ">=8.0" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", + "devOptional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -2284,6 +3654,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2365,6 +3744,30 @@ } } }, + "node_modules/vue-eslint-parser": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/vue3-apexcharts": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.4.4.tgz", @@ -2480,6 +3883,27 @@ "node": ">=8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/yaml": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", @@ -2488,6 +3912,18 @@ "engines": { "node": ">= 14" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/webui/package.json b/webui/package.json index 6a904cb9..0e767ac9 100644 --- a/webui/package.json +++ b/webui/package.json @@ -12,12 +12,18 @@ "dependencies": { "apexcharts": "^3.45.1", "crypto-js": "^4.2.0", + "pinia": "^2.1.7", "vue": "^3.3.11", "vue3-apexcharts": "^1.4.4" }, "devDependencies": { + "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-vue": "^4.5.2", "autoprefixer": "^10.4.16", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.23.0", "postcss": "^8.4.33", "tailwindcss": "^3.4.1", "vite": "^5.0.10" diff --git a/webui/src/App.vue b/webui/src/App.vue index a5a79e53..e8594da0 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -1,407 +1,3 @@ - - + + diff --git a/webui/src/components/Auth.vue b/webui/src/components/Auth.vue new file mode 100644 index 00000000..b41f7d26 --- /dev/null +++ b/webui/src/components/Auth.vue @@ -0,0 +1,46 @@ + + + diff --git a/webui/src/components/Client.vue b/webui/src/components/Client.vue new file mode 100644 index 00000000..207527a6 --- /dev/null +++ b/webui/src/components/Client.vue @@ -0,0 +1,34 @@ + + + diff --git a/webui/src/components/ClientAddress.vue b/webui/src/components/ClientAddress.vue index b46e0de6..1d7b0189 100644 --- a/webui/src/components/ClientAddress.vue +++ b/webui/src/components/ClientAddress.vue @@ -2,61 +2,51 @@ - diff --git a/webui/src/components/ClientCharts.vue b/webui/src/components/ClientCharts.vue new file mode 100644 index 00000000..73bb8c3e --- /dev/null +++ b/webui/src/components/ClientCharts.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/webui/src/components/ClientControls.vue b/webui/src/components/ClientControls.vue new file mode 100644 index 00000000..1d0045de --- /dev/null +++ b/webui/src/components/ClientControls.vue @@ -0,0 +1,73 @@ + + + diff --git a/webui/src/components/ClientInfo.vue b/webui/src/components/ClientInfo.vue new file mode 100644 index 00000000..2273191c --- /dev/null +++ b/webui/src/components/ClientInfo.vue @@ -0,0 +1,67 @@ + + + diff --git a/webui/src/components/ClientName.vue b/webui/src/components/ClientName.vue index 6a7ab70a..b37f5302 100644 --- a/webui/src/components/ClientName.vue +++ b/webui/src/components/ClientName.vue @@ -1,37 +1,3 @@ - + + diff --git a/webui/src/components/Footer.vue b/webui/src/components/Footer.vue new file mode 100644 index 00000000..c9670bd6 --- /dev/null +++ b/webui/src/components/Footer.vue @@ -0,0 +1,12 @@ + + + diff --git a/webui/src/main.js b/webui/src/main.js index d3e8f495..93b2ae9b 100644 --- a/webui/src/main.js +++ b/webui/src/main.js @@ -2,5 +2,9 @@ import './assets/style.css'; import App from './App.vue'; import { createApp } from 'vue'; +import { createPinia } from 'pinia'; -createApp(App).mount('#app'); +const pinia = createPinia(); +const app = createApp(App).mount('#app'); + +app.use(pinia); diff --git a/webui/src/services/api.js b/webui/src/services/api.js index 8de1cd34..8e36d1de 100644 --- a/webui/src/services/api.js +++ b/webui/src/services/api.js @@ -1,4 +1,4 @@ -const SERVER = 'http://127.0.0.1:51821' +const SERVER = 'http://127.0.0.1:51821'; export default class API { async call({ method, path, body }) { @@ -13,8 +13,7 @@ export default class API { if (res.status === 204) { return undefined; } - console.log(`${SERVER}/api${path}`); - + const json = await res.json(); if (!res.ok) { @@ -62,10 +61,7 @@ export default class API { ...client, createdAt: new Date(client.createdAt), updatedAt: new Date(client.updatedAt), - latestHandshakeAt: - client.latestHandshakeAt !== null - ? new Date(client.latestHandshakeAt) - : null, + latestHandshakeAt: client.latestHandshakeAt !== null ? new Date(client.latestHandshakeAt) : null, })) ); } diff --git a/webui/src/utils/chartOptions.js b/webui/src/utils/chartOptions.js new file mode 100644 index 00000000..e2a0d5e0 --- /dev/null +++ b/webui/src/utils/chartOptions.js @@ -0,0 +1,69 @@ +import { reactive } from 'vue'; + +const chartOptions = reactive({ + chart: { + background: 'transparent', + type: 'bar', + stacked: false, + toolbar: { + show: false, + }, + animations: { + enabled: false, + }, + }, + colors: [ + '#DDDDDD', // rx + '#EEEEEE', // tx + ], + dataLabels: { + enabled: false, + }, + plotOptions: { + bar: { + horizontal: false, + }, + }, + xaxis: { + labels: { + show: false, + }, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + }, + }, + yaxis: { + labels: { + show: false, + }, + min: 0, + }, + tooltip: { + enabled: false, + }, + legend: { + show: false, + }, + grid: { + show: false, + padding: { + left: -10, + right: 0, + bottom: -15, + top: -15, + }, + column: { + opacity: 0, + }, + xaxis: { + lines: { + show: false, + }, + }, + }, +}); + +export default chartOptions; \ No newline at end of file From 31df6caae46883b527e0fdb44960b466cf4089a0 Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Thu, 21 Mar 2024 11:33:06 +0300 Subject: [PATCH 19/63] Add store (wip) --- webui/src/App.vue | 62 +++++++++++++++++++---------------- webui/src/components/Auth.vue | 6 +++- webui/src/main.js | 4 +-- webui/src/store/store.js | 45 +++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 webui/src/store/store.js diff --git a/webui/src/App.vue b/webui/src/App.vue index e8594da0..5e88d045 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -263,9 +263,15 @@ import Footer from '@/components/Footer.vue'; import API from '@/services/api'; import Client from '@/components/Client.vue'; -const authenticated = ref(null); -const authenticating = ref(false); -const password = ref(null); +import { useStore } from './store/store'; +import { storeToRefs } from 'pinia'; + +const store = useStore(); +const { authenticated } = storeToRefs(store); + +// const authenticated = ref(null); +// const authenticating = ref(false); +// const password = ref(null); const requiresPassword = ref(null); const clients = ref(null); @@ -395,31 +401,31 @@ async function refresh({ updateCharts = false } = {}) { }); } -function login(e) { - e.preventDefault(); - - if (!password.value) return; - if (authenticating.value) return; - - authenticating.value = true; - api - .createSession({ - password: password, - }) - .then(async () => { - const session = await api.getSession(); - authenticated.value = session.authenticated; - requiresPassword.value = session.requiresPassword; - return this.refresh(); - }) - .catch((err) => { - alert(err.message || err.toString()); - }) - .finally(() => { - this.authenticating = false; - this.password = null; - }); -} +// function login(e) { +// e.preventDefault(); + +// if (!password.value) return; +// if (authenticating.value) return; + +// authenticating.value = true; +// api +// .createSession({ +// password: password, +// }) +// .then(async () => { +// const session = await api.getSession(); +// authenticated.value = session.authenticated; +// requiresPassword.value = session.requiresPassword; +// return this.refresh(); +// }) +// .catch((err) => { +// alert(err.message || err.toString()); +// }) +// .finally(() => { +// this.authenticating = false; +// this.password = null; +// }); +// } function logout(e) { e.preventDefault(); diff --git a/webui/src/components/Auth.vue b/webui/src/components/Auth.vue index b41f7d26..49ca3c11 100644 --- a/webui/src/components/Auth.vue +++ b/webui/src/components/Auth.vue @@ -40,7 +40,11 @@ diff --git a/webui/src/main.js b/webui/src/main.js index 93b2ae9b..ce446318 100644 --- a/webui/src/main.js +++ b/webui/src/main.js @@ -5,6 +5,4 @@ import { createApp } from 'vue'; import { createPinia } from 'pinia'; const pinia = createPinia(); -const app = createApp(App).mount('#app'); - -app.use(pinia); +createApp(App).use(pinia).mount('#app'); diff --git a/webui/src/store/store.js b/webui/src/store/store.js new file mode 100644 index 00000000..095f2b3c --- /dev/null +++ b/webui/src/store/store.js @@ -0,0 +1,45 @@ +import API from '@/services/api'; +import { ref } from 'vue'; + +import { defineStore } from 'pinia'; + +const api = new API(); + +export const useStore = defineStore('store', () => { + const authenticated = ref(null); + const authenticating = ref(false); + const password = ref(null); + + function login(e) { + e.preventDefault(); + + if (!password.value) return; + if (authenticating.value) return; + + authenticating.value = true; + api + .createSession({ + password: password, + }) + .then(async () => { + const session = await api.getSession(); + authenticated.value = session.authenticated; + requiresPassword.value = session.requiresPassword; + return this.refresh(); + }) + .catch((err) => { + alert(err.message || err.toString()); + }) + .finally(() => { + this.authenticating = false; + this.password = null; + }); + } + + return { + authenticated, + authenticating, + login, + password, + }; +}); From 7a554de087c723c711d5c37e42242dada3a3ff75 Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Fri, 22 Mar 2024 19:59:33 +0300 Subject: [PATCH 20/63] Update --- webui/src/App.vue | 257 +++++++----------------- webui/src/components/Auth.vue | 7 +- webui/src/components/ClientControls.vue | 24 ++- webui/src/services/api.js | 15 +- webui/src/store/store.js | 70 ++++++- 5 files changed, 175 insertions(+), 198 deletions(-) diff --git a/webui/src/App.vue b/webui/src/App.vue index 5e88d045..a676dde0 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -32,7 +32,7 @@
-
+
- - -
+
@@ -46,5 +49,5 @@ import { useStore } from '@/store/store'; import { storeToRefs } from 'pinia'; const store = useStore(); -const { password, authenticating, login } = storeToRefs(store); +const { password, authenticating } = storeToRefs(store); diff --git a/webui/src/components/ClientControls.vue b/webui/src/components/ClientControls.vue index 1d0045de..f1ad079c 100644 --- a/webui/src/components/ClientControls.vue +++ b/webui/src/components/ClientControls.vue @@ -2,18 +2,18 @@
@@ -22,7 +22,7 @@ @@ -41,7 +41,7 @@ @@ -49,15 +49,20 @@ diff --git a/webui/src/services/api.js b/webui/src/services/api.js index 8e36d1de..741bc0de 100644 --- a/webui/src/services/api.js +++ b/webui/src/services/api.js @@ -1,12 +1,14 @@ -const SERVER = 'http://127.0.0.1:51821'; - export default class API { + constructor() { + this.SERVER = 'http://localhost:51821'; //! DEV + } async call({ method, path, body }) { - const res = await fetch(`${SERVER}/api${path}`, { + const res = await fetch(`${this.SERVER}/api${path}`, { method, headers: { 'Content-Type': 'application/json', }, + credentials: 'include', //! DEV body: body ? JSON.stringify(body) : undefined, }); @@ -110,4 +112,11 @@ export default class API { body: { address }, }); } + + async getQrCode({ clientId }) { + return this.call({ + method: 'get', + path: `/wireguard/client/${clientId}/qrcode.svg`, + }); + } } diff --git a/webui/src/store/store.js b/webui/src/store/store.js index 095f2b3c..040a6b3e 100644 --- a/webui/src/store/store.js +++ b/webui/src/store/store.js @@ -1,5 +1,5 @@ import API from '@/services/api'; -import { ref } from 'vue'; +import { ref, reactive } from 'vue'; import { defineStore } from 'pinia'; @@ -9,6 +9,14 @@ export const useStore = defineStore('store', () => { const authenticated = ref(null); const authenticating = ref(false); const password = ref(null); + const requiresPassword = ref(null); + + const clients = ref(null); + const clientsPersist = reactive({}); + const clientToDelete = ref(null); + const clientCreateShowModal = ref(null); + const clientCreateName = ref(''); + const qrcode = ref(null); function login(e) { e.preventDefault(); @@ -19,27 +27,75 @@ export const useStore = defineStore('store', () => { authenticating.value = true; api .createSession({ - password: password, + password: password.value, }) .then(async () => { const session = await api.getSession(); authenticated.value = session.authenticated; requiresPassword.value = session.requiresPassword; - return this.refresh(); + // return this.refresh(); }) .catch((err) => { - alert(err.message || err.toString()); + console.log(err.message || err.toString()); }) .finally(() => { - this.authenticating = false; - this.password = null; + authenticating.value = false; + password.value = null; + }); + } + + function logout(e) { + e.preventDefault(); + + api + .deleteSession() + .then(() => { + authenticated.value = false; + clients.value = null; + }) + .catch((err) => { + alert(err.message || err.toString()); }); } + function createClient() { + if (!clientCreateName.value) return; + + api + .createClient({ name: clientCreateName.value }) + .catch((err) => alert(err.message || err.toString())) + .finally + // () => refresh().catch(console.error) + (); + + clientCreateShowModal.value = null; + } + + function deleteClient(client) { + api + .deleteClient({ clientId: client.id }) + .catch((err) => alert(err.message || err.toString())) + .finally + // () => refresh().catch(console.error) + (); + + clientToDelete.value = null; + } + return { authenticated, authenticating, - login, password, + requiresPassword, + clients, + clientsPersist, + clientToDelete, + clientCreateShowModal, + clientCreateName, + qrcode, + login, + logout, + createClient, + deleteClient, }; }); From 64803783c7ae0926fb89bc80104d4ad95aa3d653 Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Fri, 22 Mar 2024 23:52:46 +0300 Subject: [PATCH 21/63] Move modals into separate components --- .gitignore | 32 ++++ webui/src/App.vue | 193 +++------------------ webui/src/components/ModalCreateClient.vue | 79 +++++++++ webui/src/components/ModalDeleteClient.vue | 66 +++++++ webui/src/components/ModalQRCode.vue | 23 +++ 5 files changed, 222 insertions(+), 171 deletions(-) create mode 100644 webui/src/components/ModalCreateClient.vue create mode 100644 webui/src/components/ModalDeleteClient.vue create mode 100644 webui/src/components/ModalQRCode.vue diff --git a/.gitignore b/.gitignore index e6fce2a6..26b25268 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,35 @@ /src/node_modules .DS_Store *.swp + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +*.vscode-workspace +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/webui/src/App.vue b/webui/src/App.vue index a676dde0..62d01f88 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -26,185 +26,37 @@
-
-

- There are no clients yet.

- -

-
-
- -
-
- - -
-
-
+
+

+ There are no clients yet.

- -

+

+
+
+
+ +
+ +
+
-
- - - - - - -
+
-
- - - - - - - - -
+
@@ -231,14 +83,15 @@ import ClientNewButton from '@/components/ClientNewButton.vue'; import IconLogout from '@/components/icons/IconLogout.vue'; import IconNew from '@/components/icons/IconNew.vue'; import LoadingSpinner from '@/components/LoadingSpinner.vue'; -import IconClose from '@/components/icons/IconClose.vue'; -import IconWarning from '@/components/icons/IconWarning.vue'; import Footer from '@/components/Footer.vue'; +import ModalQRCode from '@/components/ModalQRCode.vue'; +import ModalCreateClient from '@/components/ModalCreateClient.vue'; +import ModalDeleteClient from '@/components/ModalDeleteClient.vue'; import API from '@/services/api'; import Client from '@/components/Client.vue'; -import { useStore } from './store/store'; +import { useStore } from '@/store/store'; import { storeToRefs } from 'pinia'; const store = useStore(); @@ -247,8 +100,6 @@ const { authenticated, requiresPassword } = storeToRefs(store); const { clients, clientsPersist, clientCreateShowModal, clientToDelete, clientCreateName, qrcode } = storeToRefs(store); const logout = store.logout; -const createClient = store.createClient; -const deleteClient = store.deleteClient; const currentRelease = ref(null); const latestRelease = ref(null); diff --git a/webui/src/components/ModalCreateClient.vue b/webui/src/components/ModalCreateClient.vue new file mode 100644 index 00000000..669ce8fb --- /dev/null +++ b/webui/src/components/ModalCreateClient.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/webui/src/components/ModalDeleteClient.vue b/webui/src/components/ModalDeleteClient.vue new file mode 100644 index 00000000..ab43a318 --- /dev/null +++ b/webui/src/components/ModalDeleteClient.vue @@ -0,0 +1,66 @@ + + + diff --git a/webui/src/components/ModalQRCode.vue b/webui/src/components/ModalQRCode.vue new file mode 100644 index 00000000..cb42780d --- /dev/null +++ b/webui/src/components/ModalQRCode.vue @@ -0,0 +1,23 @@ + + + From f628e2afd373affb2524effd6845e2495d6c309c Mon Sep 17 00:00:00 2001 From: Sergei Birukov Date: Sat, 23 Mar 2024 09:16:05 +0300 Subject: [PATCH 22/63] Add Header component + some component updates --- webui/src/App.vue | 112 ++++------------------- webui/src/components/ClientAddress.vue | 26 ++++-- webui/src/components/ClientControls.vue | 29 +++--- webui/src/components/ClientNewButton.vue | 40 ++++---- webui/src/components/Header.vue | 31 +++++++ webui/src/components/LoadingSpinner.vue | 10 +- webui/src/services/api.js | 5 +- webui/src/store/store.js | 68 ++++++++++++-- 8 files changed, 170 insertions(+), 151 deletions(-) create mode 100644 webui/src/components/Header.vue diff --git a/webui/src/App.vue b/webui/src/App.vue index 62d01f88..5e9f4cc5 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -2,24 +2,18 @@
- - Logout - - -

- - WireGuard -

-

- +
- +
+
+

Clients

+
+
+ +
+
@@ -30,13 +24,7 @@

There are no clients yet.

- +

@@ -64,7 +52,7 @@
-
+
@@ -74,19 +62,17 @@ diff --git a/webui/src/components/ClientAddress.vue b/webui/src/components/ClientAddress.vue index 1d7b0189..61e19c35 100644 --- a/webui/src/components/ClientAddress.vue +++ b/webui/src/components/ClientAddress.vue @@ -2,11 +2,25 @@