From 073c760da0c1a7a7d5298b9d72977df7c7527253 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Mon, 18 Sep 2023 20:50:46 +0200 Subject: [PATCH 01/12] new web design --- packages/web-new/.gitattributes | 2 + packages/web-new/.gitignore | 2 + .../external-scripts/generate-paths.js | 79 + packages/web-new/package-lock.json | 8891 +++++++++++++++++ packages/web-new/package.json | 45 + packages/web-new/server/server.js | 12 + .../assets/favicon/android-chrome-192x192.png | Bin 0 -> 15719 bytes .../assets/favicon/android-chrome-384x384.png | Bin 0 -> 31083 bytes .../src/assets/favicon/apple-touch-icon.png | Bin 0 -> 14543 bytes .../src/assets/favicon/browserconfig.xml | 9 + .../src/assets/favicon/favicon-16x16.png | Bin 0 -> 999 bytes .../src/assets/favicon/favicon-32x32.png | Bin 0 -> 2137 bytes .../web-new/src/assets/favicon/favicon.ico | Bin 0 -> 15086 bytes .../src/assets/favicon/mstile-150x150.png | Bin 0 -> 12198 bytes .../src/assets/favicon/safari-pinned-tab.svg | 88 + .../src/assets/favicon/site.webmanifest | 19 + .../src/examples-paths/examples-paths.json | 546 + packages/web-new/src/scripts/async-api.js | 76 + packages/web-new/src/scripts/console.js | 199 + packages/web-new/src/scripts/defaults.js | 92 + packages/web-new/src/scripts/editor.js | 425 + packages/web-new/src/scripts/examples-menu.js | 397 + packages/web-new/src/scripts/json-yaml.js | 63 + packages/web-new/src/scripts/jsonld-vis.js | 495 + packages/web-new/src/scripts/main.js | 186 + .../web-new/src/scripts/monochrome-theme.js | 71 + packages/web-new/src/scripts/open-api.js | 76 + packages/web-new/src/scripts/save-menu.js | 213 + packages/web-new/src/scripts/settings-menu.js | 146 + packages/web-new/src/scripts/util.js | 560 ++ packages/web-new/src/scripts/validation.js | 18 + packages/web-new/src/scripts/vega-vis.js | 316 + packages/web-new/src/scripts/visualize.js | 67 + packages/web-new/src/styles/_console.scss | 651 ++ .../web-new/src/styles/_control-panel.scss | 66 + packages/web-new/src/styles/_editor.scss | 182 + .../web-new/src/styles/_examples-menu.scss | 411 + .../src/styles/_json-yaml-warning.scss | 74 + packages/web-new/src/styles/_jsonld-vis.scss | 29 + packages/web-new/src/styles/_save-menu.scss | 208 + .../web-new/src/styles/_settings-menu.scss | 234 + packages/web-new/src/styles/styles.css | 2053 ++++ packages/web-new/src/styles/styles.css.map | 1 + packages/web-new/src/styles/styles.scss | 433 + packages/web-new/src/template.html | 668 ++ packages/web-new/webpack.config.js | 104 + 46 files changed, 18207 insertions(+) create mode 100644 packages/web-new/.gitattributes create mode 100644 packages/web-new/.gitignore create mode 100644 packages/web-new/external-scripts/generate-paths.js create mode 100644 packages/web-new/package-lock.json create mode 100644 packages/web-new/package.json create mode 100644 packages/web-new/server/server.js create mode 100644 packages/web-new/src/assets/favicon/android-chrome-192x192.png create mode 100644 packages/web-new/src/assets/favicon/android-chrome-384x384.png create mode 100644 packages/web-new/src/assets/favicon/apple-touch-icon.png create mode 100644 packages/web-new/src/assets/favicon/browserconfig.xml create mode 100644 packages/web-new/src/assets/favicon/favicon-16x16.png create mode 100644 packages/web-new/src/assets/favicon/favicon-32x32.png create mode 100644 packages/web-new/src/assets/favicon/favicon.ico create mode 100644 packages/web-new/src/assets/favicon/mstile-150x150.png create mode 100644 packages/web-new/src/assets/favicon/safari-pinned-tab.svg create mode 100644 packages/web-new/src/assets/favicon/site.webmanifest create mode 100644 packages/web-new/src/examples-paths/examples-paths.json create mode 100644 packages/web-new/src/scripts/async-api.js create mode 100644 packages/web-new/src/scripts/console.js create mode 100644 packages/web-new/src/scripts/defaults.js create mode 100644 packages/web-new/src/scripts/editor.js create mode 100644 packages/web-new/src/scripts/examples-menu.js create mode 100644 packages/web-new/src/scripts/json-yaml.js create mode 100644 packages/web-new/src/scripts/jsonld-vis.js create mode 100644 packages/web-new/src/scripts/main.js create mode 100644 packages/web-new/src/scripts/monochrome-theme.js create mode 100644 packages/web-new/src/scripts/open-api.js create mode 100644 packages/web-new/src/scripts/save-menu.js create mode 100644 packages/web-new/src/scripts/settings-menu.js create mode 100644 packages/web-new/src/scripts/util.js create mode 100644 packages/web-new/src/scripts/validation.js create mode 100644 packages/web-new/src/scripts/vega-vis.js create mode 100644 packages/web-new/src/scripts/visualize.js create mode 100644 packages/web-new/src/styles/_console.scss create mode 100644 packages/web-new/src/styles/_control-panel.scss create mode 100644 packages/web-new/src/styles/_editor.scss create mode 100644 packages/web-new/src/styles/_examples-menu.scss create mode 100644 packages/web-new/src/styles/_json-yaml-warning.scss create mode 100644 packages/web-new/src/styles/_jsonld-vis.scss create mode 100644 packages/web-new/src/styles/_save-menu.scss create mode 100644 packages/web-new/src/styles/_settings-menu.scss create mode 100644 packages/web-new/src/styles/styles.css create mode 100644 packages/web-new/src/styles/styles.css.map create mode 100644 packages/web-new/src/styles/styles.scss create mode 100644 packages/web-new/src/template.html create mode 100644 packages/web-new/webpack.config.js diff --git a/packages/web-new/.gitattributes b/packages/web-new/.gitattributes new file mode 100644 index 000000000..dfe077042 --- /dev/null +++ b/packages/web-new/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/packages/web-new/.gitignore b/packages/web-new/.gitignore new file mode 100644 index 000000000..76add878f --- /dev/null +++ b/packages/web-new/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/packages/web-new/external-scripts/generate-paths.js b/packages/web-new/external-scripts/generate-paths.js new file mode 100644 index 000000000..df9d39c2f --- /dev/null +++ b/packages/web-new/external-scripts/generate-paths.js @@ -0,0 +1,79 @@ +/** + * @file The `examples.js` generates a json file + * with all the links, title and descriptions of the TD and TM examples in the + * main github repository utilizing the examples folder + */ + +const fs = require('fs').promises; +const path = require('path'); +//path to where all the td/tm examples +const initialPath = "../../examples"; +//path to the get the raw files from the github +const rawFilePath = "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples" + +async function getExamples(){ + const files = await fs.readdir(initialPath) + + const examplesPaths = {} + + for(const file of files){ + examplesPaths[file] = {} + + const categories = await fs.readdir(path.join(initialPath, file)) + + //sorting them by the first number in their name + categories.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })) + + for(const category of categories){ + + const examples = await fs.readdir(path.join(initialPath, file, category)) + + //for each category, create a description with the path to the readMe file, and an examples object to store all the respective exampele + examplesPaths[file][category] = { + "description": "", + "examples": {} + } + + for(const example of examples){ + if(path.extname(example) == ".txt"){ + try { + const categoryDescription = await fs.readFile(path.join(initialPath, file, category, example), 'utf8') + examplesPaths[file][category]["description"] = categoryDescription + } catch (err) { + console.error("Failed to read file: ", err); + } + } + + if(path.extname(example) == ".jsonld"){ + const exampleData = JSON.parse(await fs.readFile(path.join(initialPath, file, category, example), 'utf8')) + const exampleTitle = exampleData["$title"] + const exampleDescription = exampleData["$description"] + examplesPaths[file][category]["examples"][example] = { + "title": exampleTitle, + "description": exampleDescription, + "path": `${rawFilePath}/${file}/${category}/${example}` + } + } + } + } + } + + return examplesPaths +} + +async function writeExamplesToFile(){ + const examplesData = await getExamples() + console.log(examplesData); + + try { + const jsonData = JSON.stringify(examplesData, null, 2) + const filePath = "./src/examples-paths/examples-paths.json" + await fs.writeFile(filePath, jsonData, 'utf-8') + console.log("File created succesfully"); + + } catch (err) { + console.error("Failed to wirte JSON file: ", err); + } +} + +writeExamplesToFile() \ No newline at end of file diff --git a/packages/web-new/package-lock.json b/packages/web-new/package-lock.json new file mode 100644 index 000000000..f0b97fc0b --- /dev/null +++ b/packages/web-new/package-lock.json @@ -0,0 +1,8891 @@ +{ + "name": "@thing-description-playground/web-new", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@thing-description-playground/web-new", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "d3": "^3.5.17", + "d3-tip": "^0.6.7", + "express": "^4.18.2", + "monaco-editor": "^0.40.0", + "papaparse": "^5.4.1", + "string-direction": "^0.1.2", + "svg-crowbar": "^0.7.0", + "vega": "^5.22.1", + "vega-embed": "^6.21.0" + }, + "devDependencies": { + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "babel-loader": "^9.1.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "html-webpack-plugin": "^5.5.3", + "json-loader": "^0.5.7", + "mini-css-extract-plugin": "^2.7.6", + "monaco-editor-webpack-plugin": "^7.1.0", + "nodemon": "^3.0.1", + "sass": "^1.64.0", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", + "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", + "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.19", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@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/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "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==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": 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, + "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/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.4", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.4.tgz", + "integrity": "sha512-MHmwBtCb7OCv1DSivz2UNJXPGU/1btAWRKlqJ2saEhVJkpkvqHMMaOpKg0v4sAbDWSQekHGvPVMM8nQ+Jen03Q==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", + "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.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/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/bonjour-service/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "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": "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/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.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "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.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001535", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001535.tgz", + "integrity": "sha512-48jLyUkiWFfhm/afF7cQPqPjaUmSraEhK4j+FCTJpgnGGEZHqyLe3hmWH7lIooZdSzXL0ReMvHz0vKDoTBsrwg==", + "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/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": 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/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/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/css-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/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/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "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/cssnano": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", + "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^6.0.1", + "lilconfig": "^2.1.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", + "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^4.0.0", + "postcss-calc": "^9.0.0", + "postcss-colormin": "^6.0.0", + "postcss-convert-values": "^6.0.0", + "postcss-discard-comments": "^6.0.0", + "postcss-discard-duplicates": "^6.0.0", + "postcss-discard-empty": "^6.0.0", + "postcss-discard-overridden": "^6.0.0", + "postcss-merge-longhand": "^6.0.0", + "postcss-merge-rules": "^6.0.1", + "postcss-minify-font-values": "^6.0.0", + "postcss-minify-gradients": "^6.0.0", + "postcss-minify-params": "^6.0.0", + "postcss-minify-selectors": "^6.0.0", + "postcss-normalize-charset": "^6.0.0", + "postcss-normalize-display-values": "^6.0.0", + "postcss-normalize-positions": "^6.0.0", + "postcss-normalize-repeat-style": "^6.0.0", + "postcss-normalize-string": "^6.0.0", + "postcss-normalize-timing-functions": "^6.0.0", + "postcss-normalize-unicode": "^6.0.0", + "postcss-normalize-url": "^6.0.0", + "postcss-normalize-whitespace": "^6.0.0", + "postcss-ordered-values": "^6.0.0", + "postcss-reduce-initial": "^6.0.0", + "postcss-reduce-transforms": "^6.0.0", + "postcss-svgo": "^6.0.0", + "postcss-unique-selectors": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", + "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, + "node_modules/d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo-projection": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", + "dependencies": { + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" + }, + "bin": { + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo-projection/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-tip": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/d3-tip/-/d3-tip-0.6.8.tgz", + "integrity": "sha512-uvikpFTvYHaQ9m+uLxVUwgUS0iHYoWenGy/n60c7IJC97SvC6LWX+iWvYedZ0Ak0e4+bjyuReX5yfqnN1uVb5A==", + "dependencies": { + "d3": "^3.5.5" + } + }, + "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/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "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/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", + "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==", + "dev": true + }, + "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==", + "peer": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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/esrecurse/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/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": 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/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "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-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + }, + "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/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "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/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "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", + "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.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "peer": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/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": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "peer": 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/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/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/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "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/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "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/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "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/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": 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/monaco-editor": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.40.0.tgz", + "integrity": "sha512-1wymccLEuFSMBvCk/jT1YDW/GuxMLYwnFwF9CDyYCxoTw2Pt379J3FUhwy9c43j51JdcxVPjwk0jm0EVDsBS2g==" + }, + "node_modules/monaco-editor-webpack-plugin": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.1.0.tgz", + "integrity": "sha512-ZjnGINHN963JQkFqjjcBtn1XBtUATDZBMgNQhDQwd78w2ukRhFXAPNgWuacaQiDZsUr4h1rWv5Mv6eriKuOSzA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.2" + }, + "peerDependencies": { + "monaco-editor": ">= 0.31.0", + "webpack": "^4.5.0 || 5.x" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "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/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/nodemon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", + "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/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/nodemon/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/nodemon/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/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/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "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/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/papaparse": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", + "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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": ">=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, + "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-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "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", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "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/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "dev": true, + "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.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", + "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", + "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", + "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", + "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", + "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", + "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", + "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", + "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", + "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", + "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", + "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", + "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", + "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", + "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", + "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", + "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", + "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", + "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", + "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", + "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", + "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", + "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", + "dev": true, + "dependencies": { + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", + "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", + "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", + "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.0.2" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", + "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "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-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": 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, + "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, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "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/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", + "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/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/simple-update-notifier/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/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/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-direction": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/string-direction/-/string-direction-0.1.2.tgz", + "integrity": "sha512-NJHQRg6GlOEMLA6jEAlSy21KaXvJDNoAid/v6fBAJbqdvOEIiPpCrIPTHnl4636wUF/IGyktX5A9eddmETb1Cw==" + }, + "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==", + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", + "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/svg-crowbar": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/svg-crowbar/-/svg-crowbar-0.7.0.tgz", + "integrity": "sha512-ZDiUjLsExz6GW7vSkW5B5yQzoST4Wy843jcaxChgFHBuj8ZcR4OLQFNU6JI8pwHeQ//NZ9Q/+QLGfRCKIiiJnw==" + }, + "node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "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/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", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vega": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.25.0.tgz", + "integrity": "sha512-lr+uj0mhYlSN3JOKbMNp1RzZBenWp9DxJ7kR3lha58AFNCzzds7pmFa7yXPbtbaGhB7Buh/t6n+Bzk3Y0VnF5g==", + "dependencies": { + "vega-crossfilter": "~4.1.1", + "vega-dataflow": "~5.7.5", + "vega-encode": "~4.9.2", + "vega-event-selector": "~3.0.1", + "vega-expression": "~5.1.0", + "vega-force": "~4.2.0", + "vega-format": "~1.1.1", + "vega-functions": "~5.13.2", + "vega-geo": "~4.4.1", + "vega-hierarchy": "~4.1.1", + "vega-label": "~1.2.1", + "vega-loader": "~4.5.1", + "vega-parser": "~6.2.0", + "vega-projection": "~1.6.0", + "vega-regression": "~1.2.0", + "vega-runtime": "~6.1.4", + "vega-scale": "~7.3.0", + "vega-scenegraph": "~4.10.2", + "vega-statistics": "~1.9.0", + "vega-time": "~2.1.1", + "vega-transforms": "~4.10.2", + "vega-typings": "~0.24.0", + "vega-util": "~1.17.2", + "vega-view": "~5.11.1", + "vega-view-transforms": "~4.5.9", + "vega-voronoi": "~4.2.1", + "vega-wordcloud": "~4.1.4" + } + }, + "node_modules/vega-canvas": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.7.tgz", + "integrity": "sha512-OkJ9CACVcN9R5Pi9uF6MZBF06pO6qFpDYHWSKBJsdHP5o724KrsgR6UvbnXFH82FdsiTOff/HqjuaG8C7FL+9Q==" + }, + "node_modules/vega-crossfilter": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.1.tgz", + "integrity": "sha512-yesvlMcwRwxrtAd9IYjuxWJJuAMI0sl7JvAFfYtuDkkGDtqfLXUcCzHIATqW6igVIE7tWwGxnbfvQLhLNgK44Q==", + "dependencies": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-dataflow": { + "version": "5.7.5", + "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.5.tgz", + "integrity": "sha512-EdsIl6gouH67+8B0f22Owr2tKDiMPNNR8lEvJDcxmFw02nXd8juimclpLvjPQriqn6ta+3Dn5txqfD117H04YA==", + "dependencies": { + "vega-format": "^1.1.1", + "vega-loader": "^4.5.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-embed": { + "version": "6.22.2", + "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.22.2.tgz", + "integrity": "sha512-JdytShq/QC9q0Q/WzHowkYR5ohN36JsNs3S6OsD7Ufmvite5XmsHKSn6vuI//n99tlrcdmCFfnMZnnZH+IESRQ==", + "bundleDependencies": [ + "yallist" + ], + "dependencies": { + "fast-json-patch": "^3.1.1", + "json-stringify-pretty-compact": "^3.0.0", + "semver": "^7.5.4", + "tslib": "^2.6.1", + "vega-interpreter": "^1.0.5", + "vega-schema-url-parser": "^2.2.0", + "vega-themes": "^2.14.0", + "vega-tooltip": "^0.32.0", + "yallist": "*" + }, + "peerDependencies": { + "vega": "^5.21.0", + "vega-lite": "*" + } + }, + "node_modules/vega-embed/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vega-embed/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vega-embed/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "inBundle": true + }, + "node_modules/vega-encode": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.2.tgz", + "integrity": "sha512-c3J0LYkgYeXQxwnYkEzL15cCFBYPRaYUon8O2SZ6O4PhH4dfFTXBzSyT8+gh8AhBd572l2yGDfxpEYA6pOqdjg==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-interpolate": "^3.0.1", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-event-selector": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.1.tgz", + "integrity": "sha512-K5zd7s5tjr1LiOOkjGpcVls8GsH/f2CWCrWcpKy74gTCp+llCdwz0Enqo013ZlGaRNjfgD/o1caJRt3GSaec4A==" + }, + "node_modules/vega-expression": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.1.0.tgz", + "integrity": "sha512-u8Rzja/cn2PEUkhQN3zUj3REwNewTA92ExrcASNKUJPCciMkHJEjESwFYuI6DWMCq4hQElQ92iosOAtwzsSTqA==", + "dependencies": { + "@types/estree": "^1.0.0", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-force": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.2.0.tgz", + "integrity": "sha512-aE2TlP264HXM1r3fl58AvZdKUWBNOGkIvn4EWyqeJdgO2vz46zSU7x7TzPG4ZLuo44cDRU5Ng3I1eQk23Asz6A==", + "dependencies": { + "d3-force": "^3.0.0", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-format": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.1.tgz", + "integrity": "sha512-Rll7YgpYbsgaAa54AmtEWrxaJqgOh5fXlvM2wewO4trb9vwM53KBv4Q/uBWCLK3LLGeBXIF6gjDt2LFuJAUtkQ==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-functions": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.2.tgz", + "integrity": "sha512-YE1Xl3Qi28kw3vdXVYgKFMo20ttd3+SdKth1jUNtBDGGdrOpvPxxFhZkVqX+7FhJ5/1UkDoAYs/cZY0nRKiYgA==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-dataflow": "^5.7.5", + "vega-expression": "^5.1.0", + "vega-scale": "^7.3.0", + "vega-scenegraph": "^4.10.2", + "vega-selections": "^5.4.1", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-geo": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.1.tgz", + "integrity": "sha512-s4WeZAL5M3ZUV27/eqSD3v0FyJz3PlP31XNSLFy4AJXHxHUeXT3qLiDHoVQnW5Om+uBCPDtTT1ROx1smGIf2aA==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-projection": "^1.6.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-hierarchy": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.1.tgz", + "integrity": "sha512-h5mbrDtPKHBBQ9TYbvEb/bCqmGTlUX97+4CENkyH21tJs7naza319B15KRK0NWOHuhbGhFmF8T0696tg+2c8XQ==", + "dependencies": { + "d3-hierarchy": "^3.1.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-interpreter": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vega-interpreter/-/vega-interpreter-1.0.5.tgz", + "integrity": "sha512-po6oTOmeQqr1tzTCdD15tYxAQLeUnOVirAysgVEemzl+vfmvcEP7jQmlc51jz0jMA+WsbmE6oJywisQPu/H0Bg==" + }, + "node_modules/vega-label": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.1.tgz", + "integrity": "sha512-n/ackJ5lc0Xs9PInCaGumYn2awomPjJ87EMVT47xNgk2bHmJoZV1Ve/1PUM6Eh/KauY211wPMrNp/9Im+7Ripg==", + "dependencies": { + "vega-canvas": "^1.2.6", + "vega-dataflow": "^5.7.3", + "vega-scenegraph": "^4.9.2", + "vega-util": "^1.15.2" + } + }, + "node_modules/vega-lite": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.15.0.tgz", + "integrity": "sha512-Eac4VBhdtwbJQWH8m2OaRba/YVZbUHlmTAiPfiF3XIapJ73rcs+gHZBE1DfYgfoGjBN+5YJUMvdgm4UE7j/Ncg==", + "peer": true, + "dependencies": { + "json-stringify-pretty-compact": "~3.0.0", + "tslib": "~2.6.2", + "vega-event-selector": "~3.0.1", + "vega-expression": "~5.1.0", + "vega-util": "~1.17.2", + "yargs": "~17.7.2" + }, + "bin": { + "vl2pdf": "bin/vl2pdf", + "vl2png": "bin/vl2png", + "vl2svg": "bin/vl2svg", + "vl2vg": "bin/vl2vg" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "vega": "^5.24.0" + } + }, + "node_modules/vega-loader": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.1.tgz", + "integrity": "sha512-qy5x32SaT0YkEujQM2yKqvLGV9XWQ2aEDSugBFTdYzu/1u4bxdUSRDREOlrJ9Km3RWIOgFiCkobPmFxo47SKuA==", + "dependencies": { + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", + "topojson-client": "^3.1.0", + "vega-format": "^1.1.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-parser": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.2.0.tgz", + "integrity": "sha512-as+QnX8Qxe9q51L1C2sVBd+YYYctP848+zEvkBT2jlI2g30aZ6Uv7sKsq7QTL6DUbhXQKR0XQtzlanckSFdaOQ==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-event-selector": "^3.0.1", + "vega-functions": "^5.13.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-projection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.6.0.tgz", + "integrity": "sha512-LGUaO/kpOEYuTlul+x+lBzyuL9qmMwP1yShdUWYLW+zXoeyGbs5OZW+NbPPwLYqJr5lpXDr/vGztFuA/6g2xvQ==", + "dependencies": { + "d3-geo": "^3.1.0", + "d3-geo-projection": "^4.0.0", + "vega-scale": "^7.3.0" + } + }, + "node_modules/vega-regression": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.2.0.tgz", + "integrity": "sha512-6TZoPlhV/280VbxACjRKqlE0Nv48z5g4CSNf1FmGGTWS1rQtElPTranSoVW4d7ET5eVQ6f9QLxNAiALptvEq+g==", + "dependencies": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.3", + "vega-statistics": "^1.9.0", + "vega-util": "^1.15.2" + } + }, + "node_modules/vega-runtime": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.4.tgz", + "integrity": "sha512-0dDYXyFLQcxPQ2OQU0WuBVYLRZnm+/CwVu6i6N4idS7R9VXIX5581EkCh3pZ20pQ/+oaA7oJ0pR9rJgJ6rukRQ==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-scale": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.3.0.tgz", + "integrity": "sha512-pMOAI2h+e1z7lsqKG+gMfR6NKN2sTcyjZbdJwntooW0uFHwjLGjMSY7kSd3nSEquF0HQ8qF7zR6gs1eRwlGimw==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-scenegraph": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.2.tgz", + "integrity": "sha512-R8m6voDZO5+etwNMcXf45afVM3XAtokMqxuDyddRl9l1YqSJfS+3u8hpolJ50c2q6ZN20BQiJwKT1o0bB7vKkA==", + "dependencies": { + "d3-path": "^3.1.0", + "d3-shape": "^3.2.0", + "vega-canvas": "^1.2.7", + "vega-loader": "^4.5.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-schema-url-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz", + "integrity": "sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw==" + }, + "node_modules/vega-selections": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.1.tgz", + "integrity": "sha512-EtYc4DvA+wXqBg9tq+kDomSoVUPCmQfS7hUxy2qskXEed79YTimt3Hcl1e1fW226I4AVDBEqTTKebmKMzbSgAA==", + "dependencies": { + "d3-array": "3.2.2", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-selections/node_modules/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vega-statistics": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.9.0.tgz", + "integrity": "sha512-GAqS7mkatpXcMCQKWtFu1eMUKLUymjInU0O8kXshWaQrVWjPIO2lllZ1VNhdgE0qGj4oOIRRS11kzuijLshGXQ==", + "dependencies": { + "d3-array": "^3.2.2" + } + }, + "node_modules/vega-themes": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.14.0.tgz", + "integrity": "sha512-9dLmsUER7gJrDp8SEYKxBFmXmpyzLlToKIjxq3HCvYjz8cnNrRGyAhvIlKWOB3ZnGvfYV+vnv3ZRElSNL31nkA==", + "peerDependencies": { + "vega": "*", + "vega-lite": "*" + } + }, + "node_modules/vega-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.1.tgz", + "integrity": "sha512-z1qbgyX0Af2kQSGFbApwBbX2meenGvsoX8Nga8uyWN8VIbiySo/xqizz1KrP6NbB6R+x5egKmkjdnyNThPeEWA==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-time": "^3.1.0", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-tooltip": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.32.0.tgz", + "integrity": "sha512-Sc4/vZsXDM9nOiHrxc8hfpc9lYc7Nr0FIYYkIi90v2d6IoE6thm6T4Exo2m7cMK4rwevwf6c4/FABwjOMIs4MQ==", + "dependencies": { + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-transforms": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.2.tgz", + "integrity": "sha512-sJELfEuYQ238PRG+GOqQch8D69RYnJevYSGLsRGQD2LxNz3j+GlUX6Pid+gUEH5HJy22Q5L0vsTl2ZNhIr4teQ==", + "dependencies": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-typings": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.24.2.tgz", + "integrity": "sha512-fW02GElYoqweCCaPqH6iH44UZnzXiX9kbm1qyecjU3k5s0vtufLI7Yuz/a/uL37mEAqTMQplBBAlk0T9e2e1Dw==", + "dependencies": { + "@types/geojson": "7946.0.4", + "vega-event-selector": "^3.0.1", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-util": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz", + "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw==" + }, + "node_modules/vega-view": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.1.tgz", + "integrity": "sha512-RoWxuoEMI7xVQJhPqNeLEHCezudsf3QkVMhH5tCovBqwBADQGqq9iWyax3ZzdyX1+P3eBgm7cnLvpqtN2hU8kA==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-timer": "^3.0.1", + "vega-dataflow": "^5.7.5", + "vega-format": "^1.1.1", + "vega-functions": "^5.13.1", + "vega-runtime": "^6.1.4", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-view-transforms": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.9.tgz", + "integrity": "sha512-NxEq4ZD4QwWGRrl2yDLnBRXM9FgCI+vvYb3ZC2+nVDtkUxOlEIKZsMMw31op5GZpfClWLbjCT3mVvzO2xaTF+g==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-voronoi": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.1.tgz", + "integrity": "sha512-zzi+fxU/SBad4irdLLsG3yhZgXWZezraGYVQfZFWe8kl7W/EHUk+Eqk/eetn4bDeJ6ltQskX+UXH3OP5Vh0Q0Q==", + "dependencies": { + "d3-delaunay": "^6.0.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "node_modules/vega-wordcloud": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.4.tgz", + "integrity": "sha512-oeZLlnjiusLAU5vhk0IIdT5QEiJE0x6cYoGNq1th+EbwgQp153t4r026fcib9oq15glHFOzf81a8hHXHSJm1Jw==", + "dependencies": { + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/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/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/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/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/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==", + "peer": 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/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==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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==", + "peer": true + }, + "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/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/packages/web-new/package.json b/packages/web-new/package.json new file mode 100644 index 000000000..79b65ce26 --- /dev/null +++ b/packages/web-new/package.json @@ -0,0 +1,45 @@ +{ + "name": "@thing-description-playground/web-new", + "version": "1.0.0", + "description": "New design for the browser GUI for the Web of Things - Thing Description Playground", + "main": "index.js", + "scripts": { + "build": "webpack", + "dev": "webpack && node server/server.js", + "server": "node server/server.js", + "examples": "node external-scripts/generate-paths.js" + }, + "author": "Eclipse Thingweb (https://thingweb.io/)", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "babel-loader": "^9.1.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "html-webpack-plugin": "^5.5.3", + "json-loader": "^0.5.7", + "mini-css-extract-plugin": "^2.7.6", + "monaco-editor-webpack-plugin": "^7.1.0", + "nodemon": "^3.0.1", + "sass": "^1.64.0", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" + }, + "dependencies": { + "d3": "^3.5.17", + "d3-tip": "^0.6.7", + "express": "^4.18.2", + "monaco-editor": "^0.40.0", + "papaparse": "^5.4.1", + "string-direction": "^0.1.2", + "svg-crowbar": "^0.7.0", + "vega": "^5.22.1", + "vega-embed": "^6.21.0" + } +} diff --git a/packages/web-new/server/server.js b/packages/web-new/server/server.js new file mode 100644 index 000000000..8ddad0cd0 --- /dev/null +++ b/packages/web-new/server/server.js @@ -0,0 +1,12 @@ +const express = require('express') +const port = 5000 + +const app = express() + +//Middleware +app.use(express.json()) +app.use(express.urlencoded({extended: false})) + +app.use('/', express.static('./dist/')) + +app.listen(port, () => console.log(`Server started on port ${port}`)) \ No newline at end of file diff --git a/packages/web-new/src/assets/favicon/android-chrome-192x192.png b/packages/web-new/src/assets/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..4744e88c2223206ab48a4bb9b13b6a131c0c4b24 GIT binary patch literal 15719 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 literal 0 HcmV?d00001 diff --git a/packages/web-new/src/assets/favicon/apple-touch-icon.png b/packages/web-new/src/assets/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d26f7c42272da36b74ee352d04728626735059d5 GIT binary patch literal 14543 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 + + + + + #33b8a4 + + + diff --git a/packages/web-new/src/assets/favicon/favicon-16x16.png b/packages/web-new/src/assets/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..2d97231c61a2a40b686bbfe73b585439b0e9d2dd GIT binary patch literal 999 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>-m!#oWVC&; z!S=<5+ZS8zT4u3pS>(~JA%{1)?OS8LYq{CZrAzK#+yCOx<@c|ch@-*fGB&BY_BCwGM&-hA=>t6QJmZG3#^=&Pq|9^GoXe7yeB(ax)hT|HXeNWcv-0PkKPTTj zU-#&C_qEe~*UtnW-n8KEl}BGcz54$3(96fomyc(h+HJIB$=0X$j=z4|e&uBJ(XGA* z*83ma;JR;()vo3L|Nm#wj;hvM0QKpKq$G(oGo^`z znX#4e85$NAa(a3eP7qKRXEvXpt*Wc6t**}}^eFLx=;V-qkf5-@(BSI~T^|fPJhQSg zU%zE=J(b?H;C~@<~t((>sR+hVWWbN8n-C^ueQB_&} zyW;mR$=~cOt5`dYJ=m&STiROPUECsfx*liP>QQm**im(rDAk=R*~=VwN_~C3!_S;B z={qxt#fl|kZF-qsUR<4H!>WZ9iUABS3<|p!JrcTl$!NmiBN9Iv{lWtR^w+Oov5swM zoGSdp(sRXgmR5-yJ6euDaB%SuVd$#T5fEVYeF*fqYKdz^NlIc#s#S7PDv)9@GB7gM zH89pSG6*rWurf8YGBDFNFt9Q(s5ma$h@v4kKP5A*61N7sHgKi%N5z)O$emAGKZCnwXXKr0wLUHx3vIVCg!0NKdU ArT_o{ literal 0 HcmV?d00001 diff --git a/packages/web-new/src/assets/favicon/favicon-32x32.png b/packages/web-new/src/assets/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..35f9eefa7b70d00e17d2feb5e8357055fd015ad9 GIT binary patch literal 2137 zcmV-f2&VUmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + diff --git a/packages/web-new/src/assets/favicon/site.webmanifest b/packages/web-new/src/assets/favicon/site.webmanifest new file mode 100644 index 000000000..b5d674038 --- /dev/null +++ b/packages/web-new/src/assets/favicon/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "TD Playground", + "short_name": "TD Playground", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#33b8a4", + "background_color": "#33b8a4", + "display": "standalone" +} diff --git a/packages/web-new/src/examples-paths/examples-paths.json b/packages/web-new/src/examples-paths/examples-paths.json new file mode 100644 index 000000000..3d3321bec --- /dev/null +++ b/packages/web-new/src/examples-paths/examples-paths.json @@ -0,0 +1,546 @@ +{ + "td": { + "1-simple-default": { + "description": "This category contains multiple simple/basic examples of Thing Description as well as its most basic components.", + "examples": { + "basic-td.td.jsonld": { + "title": "Basic TD", + "description": "This is an example of the most basic form of a td.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/basic-td.td.jsonld" + }, + "contentMedia-&-contentEncoding.td.jsonld": { + "title": "contentMedia and contentEncoding", + "description": "In some cases binary data is embedded in text-based values, e.g., a JSON string-based value embeds a base64 encoded image. The terms contentMediaType and contentEncoding can be used to clarify the context and encoding format of such name-value pairs.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/contentMedia-&-contentEncoding.td.jsonld" + }, + "contentType.td.jsonld": { + "title": "contentType", + "description": "The contentType member is used to assign a media type [RFC2046] including media type parameters as attribute-value pairs separated by a ; character.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/contentType.td.jsonld" + }, + "defaults.td.jsonld": { + "title": "All Default Values", + "description": "A basic TD with all default values.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/defaults.td.jsonld" + }, + "form-serialization.td.jsonld": { + "title": "Form Serialization", + "description": "This is an example for proper form serialization.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/form-serialization.td.jsonld" + }, + "simple-context.td.jsonld": { + "title": "@context", + "description": "A member with the name @context and a value of type string is generally used to identify the TD representation format version defined by this specification.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/1-simple-default/simple-context.td.jsonld" + } + } + }, + "2-properties": { + "description": "This category contains various examples concerning the \"properties\" interaction affordance.", + "examples": { + "properties-serializations.td.jsonld": { + "title": "Properties Serialization", + "description": "All name-value pairs of a map of PropertyAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/2-properties/properties-serializations.td.jsonld" + }, + "readOnly.td.jsonld": { + "title": "readOnly", + "description": "readOnly can be used to signal which data items are exchanged in read interactions (i.e., when reading a Property).", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/2-properties/readOnly.td.jsonld" + }, + "writeOnly.td.jsonld": { + "title": "writeOnly", + "description": "writeOnly can be used to signal which data items are exchanged in write interactions (i.e., when writing a Property).", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/2-properties/writeOnly.td.jsonld" + } + } + }, + "3-actions": { + "description": "This category contains various examples concerning the \"actions\" interaction affordance.", + "examples": { + "action-serialization.td.jsonld": { + "title": "Action Serialization", + "description": "All name-value pairs of a Map of ActionAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/3-actions/action-serialization.td.jsonld" + }, + "response.td.jsonld": { + "title": "Action Response", + "description": "In some use cases, the form metadata of the Interaction Affordance not only describes the request, but also provides metadata for the expected response. The response must be a JSON object and contain a contentType.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/3-actions/response.td.jsonld" + } + } + }, + "4-events": { + "description": "This category contains various examples concerning the \"events\" interaction affordance.", + "examples": { + "event-serialization.td.jsonld": { + "title": "Event Serialization", + "description": "All name-value pairs of a Map of EventAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/4-events/event-serialization.td.jsonld" + } + } + }, + "5-protocols": { + "description": "This category contains various examples concerning the different types of protocols that can be used with Thing Descriptions such as HTTP, Modbus, CoAP, etc.", + "examples": { + "CoAP-block-wise-no-parameters.td.jsonld": { + "title": "CoAP Block Wise No Parameters", + "description": "CoAP supports block-wise transfers to allow large resource representations to be transferred between clients and servers. This feature enables clients and servers to request or provide resource representations in smaller blocks, which can be useful when constrained network conditions make it undesirable to transfer large amounts of data at once.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-block-wise-no-parameters.td.jsonld" + }, + "CoAP-block-wise-parameters.td.jsonld": { + "title": "CoAP Block Wise Parameters", + "description": "A cov:blockwise or cov:quickblockwise member may indicate relevant parameters, such as the largest block size that may be used in a Block2 Option.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-block-wise-parameters.td.jsonld" + }, + "CoAP-content-negotiation.td.jsonld": { + "title": "CoAP Content Negotiation", + "description": "Content negotiation in CoAP is used to negotiate the representation of CoAP resources that may have different representations available. This is accomplished through the use of CoAP Accept and Content-Format options. The CoAP Accept option is used by clients to request a particular content format, while the Content-Format option is used by clients and servers to indicate the content format of the representation in requests and responses, respectively.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-content-negotiation.td.jsonld" + }, + "CoAP-hop-limit.td.jsonld": { + "title": "CoAP Hop Limit", + "description": "The CoAP Hop-Limit option [RFC8768] limits the number of hops a CoAP message can take before it is considered undeliverable. This prevents infinite message loops in CoAP networks. The cov:hopLimit member can be used to set the desired hop limit for a particular CoAP request.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-hop-limit.td.jsonld" + }, + "CoAP-observing-resources.td.jsonld": { + "title": "CoAP Observing Resources", + "description": "CoAP provides a mechanism for clients to *observe* resources [RFC7641], i.e., to request notifications from the server whenever the resource changes. This is especially useful in the Web of Things where many Things are expected to have resources that change over time, such as sensor readings.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-observing-resources.td.jsonld" + }, + "CoAP-simple-td-defaults.td.jsonld": { + "title": "CoAP Simple Defaults", + "description": "A simple Thing Description using CoAP. The target resource is specified in the Thing Description by the href member of a form and the request method (e.g., GET, PUT, POST, or DELETE) is specified using the cov:method member of a form.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-simple-td-defaults.td.jsonld" + }, + "CoAP-simple-td-no-defaults.td.jsonld": { + "title": "CoAP Simple No Defaults", + "description": "A simple Thing Description using CoAP. The target resource is specified in the Thing Description by the href member of a form and the request method (e.g., GET, PUT, POST, or DELETE) is specified using the cov:method member of a form.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/CoAP-simple-td-no-defaults.td.jsonld" + }, + "extended-forms-multiple-op.td.jsonld": { + "title": "Extended Forms Multiple op", + "description": "In the case of a forms entry that has multiple op values the usage of the htv:methodName is not permitted. A TD Processor will extend the multiple op values to separate forms entries and associates a single operation with the default assumption.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/extended-forms-multiple-op.td.jsonld" + }, + "HTTP-readproperty.td.jsonld": { + "title": "HTTP readproperty", + "description": "This example shows the binding of the readproperty operation for the HTTP.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/HTTP-readproperty.td.jsonld" + }, + "HTTP-simple-td-defaults.td.jsonld": { + "title": "HTTP Simple with Defaults", + "description": "This example shows the default values for Procol Binding based on HTTP.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/HTTP-simple-td-defaults.td.jsonld" + }, + "Modbus-multiple-operations-expanded.td.jsonld": { + "title": "Modbus Multiple Operations Expanded", + "description": "This is an example of an extended version when using multiple operations with Modbus.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/Modbus-multiple-operations-expanded.td.jsonld" + }, + "Modbus-multiple-operations.td.jsonld": { + "title": "Modbus Multiple Operations", + "description": "To describe forms with multiple operations types, the Entity keyword can be used to create a short description of the modbus endpoint. This example shows how to use the read and write property in a single coil.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/Modbus-multiple-operations.td.jsonld" + }, + "Modbus-single-coil.td.jsonld": { + "title": "Modbus Single Coil", + "description": "This example shows the minimal set of terms to configure a single coil reading using Modbus. Notice that the unitID is contained in the href as the first element of the path.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/Modbus-single-coil.td.jsonld" + }, + "subprotocol-longpoll.td.jsonld": { + "title": "Subprotocol Longpoll", + "description": "protocols may have defined Subprotocols that can be used for some interaction types. For example, to receive asynchronous notifications using HTTP, some servers may support long polling.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/5-protocols/subprotocol-longpoll.td.jsonld" + } + } + }, + "6-security-schemas": { + "description": "This category contains various examples concerning the different types of security schemas that could/should be used for a Thing Description, as well as the different ways to combine multiple security schemes.", + "examples": { + "apikey-in-body-simplified.td.jsonld": { + "title": "Apikey In Body Simplified", + "description": "It is possbile to simplify how security parameters are included in the payload by using the feature that the location referenced by a JSON pointer in a body location will be automatically inserted if it does not exist.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/apikey-in-body-simplified.td.jsonld" + }, + "apikey-in-body.td.jsonld": { + "title": "Apikey In Body", + "description": "This in an example on how to include security parameters along with the payload.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/apikey-in-body.td.jsonld" + }, + "apikey-security.td.jsonld": { + "title": "Apikey Security", + "description": "API key can be included in the request to the Thing in different ways. One way it can be used, is as a URI template where the API key should be replaced in the URI when sending an HTTPS request.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/apikey-security.td.jsonld" + }, + "basic-security.td.jsonld": { + "title": "Basic Security", + "description": "A simple security configuration specifying basic username/password authentication in the header.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/basic-security.td.jsonld" + }, + "combo-apikey-security.td.jsonld": { + "title": "Combo Apikey Security", + "description": "Multiple intances of API security schemes are also possible. These must then be used in the href in in a Form where the security scheme is active.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/combo-apikey-security.td.jsonld" + }, + "combo-security-def-allOf.td.jsonld": { + "title": "Combo Security allOf", + "description": "TDs can specify a combination of security schemes. A ComboSecurityScheme with allOf can be used to specify that all need to be satisfied to allow activation of the Interaction Affordance.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/combo-security-def-allOf.td.jsonld" + }, + "combo-security-def-oneOf.td.jsonld": { + "title": "Combo Security oneOf", + "description": "TDs can specify a combination of security schemes. To avoid redundancy in this case, e.g. repeating the details of the form elements, a ComboSecurityScheme with oneOf can be used instead.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/combo-security-def-oneOf.td.jsonld" + }, + "multiple-security-def.td.jsonld": { + "title": "Multiple Security Definitions", + "description": "A TD can also have multiple security definitions.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/multiple-security-def.td.jsonld" + }, + "multiple-security-forms.td.jsonld": { + "title": "Multiple Security Forms", + "description": "Security configurations can also be specified for different forms within the same Interaction Affordance.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/multiple-security-forms.td.jsonld" + }, + "noSec-security.td.jsonld": { + "title": "noSec Security", + "description": "Security configuration in the TD is mandatory, therefore the nosec security scheme is provided for the case that no security is needed.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/noSec-security.td.jsonld" + }, + "OAuth2-scopes.td.jsonld": { + "title": "OAuth2 Scopes", + "description": "OAuth 2.0 makes use of scopes. These are identifiers that may appear in tokens and must match with corresponding identifiers in a resource to allow access to that resource.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/6-security-schemas/OAuth2-scopes.td.jsonld" + } + } + }, + "7-complex-data-schemas": { + "description": "This category contains various examples of Thing Descriptions with more complex data schemas.", + "examples": { + "data-schema-serialization.td.jsonld": { + "title": "Data Schema Serialization", + "description": "Data schema serialization applies to PropertyAffordance instances, the values assigned to input and output in ActionAffordance instances, the values assigned to subscription, data, and cancellation in EventAffordance instances, and the value assigned to uriVariables in instances of Subclasses of InteractionAffordance.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/7-complex-data-schemas/data-schema-serialization.td.jsonld" + }, + "readOnly-&-writeOnly.td.jsonld": { + "title": "readOnly And writeOnly", + "description": "Data schema serialization applies to PropertyAffordance instances, the values assigned to input and output in ActionAffordance instances, the values assigned to subscription, data, and cancellation in EventAffordance instances, and the value assigned to uriVariables in instances of Subclasses of InteractionAffordance.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/7-complex-data-schemas/readOnly-&-writeOnly.td.jsonld" + } + } + }, + "8-meta-interactions": { + "description": "This category contains various examples of meta interactions that can be used in Thing Descriptions such as readallproperties, writeallproperties, etc.", + "examples": { + "readallproperties.td.jsonld": { + "title": "Readallproperties", + "description": "When forms are present at the top level, it can be used to describe meta interactions offered by a Thing. readallproperties is a type of meta interaction which allows the consumer to read all properties at once.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/8-meta-interactions/readallproperties.td.jsonld" + }, + "top-level-uriVariables.td.jsonld": { + "title": "Top Level uriVariables", + "description": "Thing-level uriVariables can be used here to supply further variables to the operation or to specify a list of Property Affordance names for a readmultipleproperties operation.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/8-meta-interactions/top-level-uriVariables.td.jsonld" + }, + "writeallproperties.td.jsonld": { + "title": "Writeallproperties", + "description": "When forms is present at the top level, it can be used to describe meta interactions offered by a Thing. writeallproperties is a type of meta interaction which allows the consumer to write all properties at once.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/8-meta-interactions/writeallproperties.td.jsonld" + } + } + }, + "9-versioning": { + "description": "This category contains examples that show how to manage versioning on Thing Descriptions.", + "examples": { + "versioning.td.jsonld": { + "title": "Versioning", + "description": "The version member is intended as container for additional application- and/or device-specific version information based on TD Context Extensions.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/9-versioning/versioning.td.jsonld" + } + } + }, + "10-response-and-additional-response": { + "description": "This category contains examples that show how an interaction affordance can provide additonal metadata as a response.", + "examples": { + "additional-responses.td.jsonld": { + "title": "Additional Responses", + "description": "The message received from the Thing as part of an Interaction Affordance can differ due to different reasons. Such reasons could be error cases or alternative responses for a valid response. In these cases, additionalResponses terms can be used to describe this behavior.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/10-response-and-additional-response/additional-responses.td.jsonld" + }, + "simple-response.td.jsonld": { + "title": "Simple Response", + "description": "The Interaction Affordance not only describes the request, but also provides metadata for the expected response. In such cases, the response member is used to indicate the representation format of the response payload. therefore no output schema is required, as the content type fully specifies the representation format.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/10-response-and-additional-response/simple-response.td.jsonld" + } + } + }, + "11-multilanguage": { + "description": "This category contains examples on how multiple languages as well as reading directions can be implemented on a Thing Description.", + "examples": { + "multilanguage-title-description.td.jsonld": { + "title": "Multilanguage Title and Description", + "description": "TD instances may also combine the use of title and description with titles and descriptions. title and description are seeing as the default text.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/11-multilanguage/multilanguage-title-description.td.jsonld" + }, + "multilanguage.td.jsonld": { + "title": "Multilanguage", + "description": "A TD can contain multiple languages, where the name is a valid language tag as defined by [BCP47] and the value is a human-readable string in the language indicated by the tag.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/11-multilanguage/multilanguage.td.jsonld" + }, + "string-direction.td.jsonld": { + "title": "String Direction", + "description": "Metadata can be used to determine the base direction of string values, utilizing @direction and the values rtl, ltr and null for default direcction.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/11-multilanguage/string-direction.td.jsonld" + } + } + }, + "12-uri-variables": { + "description": "This category contains examples regarding the use of URI variables in Thing Descriptions.", + "examples": { + "combined-uriVariables-href.td.jsonld": { + "title": "Combined URI variables in href", + "description": "Combined dynamic uriVariables and uriVariables in href structure.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/12-uri-variables/combined-uriVariables-href.td.jsonld" + }, + "dynaic-uriVariables.td.jsonld": { + "title": "Dynamic URI variables", + "description": "href may also carry a URI that contains dynamic variables.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/12-uri-variables/dynaic-uriVariables.td.jsonld" + }, + "uri-href-structure.td.jsonld": { + "title": "URI href Structure", + "description": "As defined in [RFC6570], uriVariables can be used for replacing the href structure.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/12-uri-variables/uri-href-structure.td.jsonld" + } + } + }, + "13-semantic-annotations": { + "description": "This category contains examples on how to use semantic annotations to allow for the use of additional vocabulary terms in a Thing Description instance.", + "examples": { + "semantic.td.jsonld": { + "title": "Semantic", + "description": "Thing Description with TD Context Extension for semantic annotations.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/13-semantic-annotations/semantic.td.jsonld" + }, + "state-information-context-extension.td.jsonld": { + "title": "State Information Context Extension", + "description": "TD Context Extensions may be used to annotate pieces of a data schema, to be able to semantically process the state information of the physical world object, which is represented by the data exchanged during an interaction.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/13-semantic-annotations/state-information-context-extension.td.jsonld" + } + } + }, + "14-non-standard": { + "description": "This category contains examples regarding how additional non-standard metadata could be used to personalize or adapt a Thing Description to a specific situtation or appplication.", + "examples": { + "additional-metadata.td.jsonld": { + "title": "Additional Metadata", + "description": "This example provides additional metadata terms from different external context files as provided in @context.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/14-non-standard/additional-metadata.td.jsonld" + }, + "location-based-metadata.td.jsonld": { + "title": "Location Based Metadata", + "description": "In some use cases location based metadata have to be provided at the interaction level, e.g., as provided as a Property that returns the latest longitude, latitude, and elevation values based on schema.org.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/14-non-standard/location-based-metadata.td.jsonld" + } + } + }, + "15-link-relation-type": { + "description": "This category contains examples regarding the possible relation links that could be used between individual or a collection of Thing Descriptions.", + "examples": { + "collection-rel.td.jsonld": { + "title": "Collection relation", + "description": "A Thing can also refer to a group in which it is collected with the collection value.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/15-link-relation-type/collection-rel.td.jsonld" + }, + "controlledBy-rel.td.jsonld": { + "title": "controlledBy Relation", + "description": "A reference can be provided that points to a Thing (e.g., a controller) that controls the underlying unit (e.g., a lamp) utilizing controlledBy.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/15-link-relation-type/controlledBy-rel.td.jsonld" + }, + "item-rel.td.jsonld": { + "title": "Item Relation", + "description": "A superordinate Thing can collect a group of Things and refer to them by using the item value.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/15-link-relation-type/item-rel.td.jsonld" + }, + "service-doc-rel.td.jsonld": { + "title": "Service-doc Relation", + "description": "To point to a developer documentation of a Thing the value service-doc can be used.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/15-link-relation-type/service-doc-rel.td.jsonld" + } + } + }, + "16-td-tm-relationships": { + "description": "This category contains examples of Thing Descriptions that would result from one or many Thing Models.", + "examples": { + "basic-td-from-tm.td.jsonld": { + "title": "Basic Thing", + "description": "This is an example of a basic Thing, which is use as a sort of template for creating a Thing Description instance of a Lamp TD.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/basic-td-from-tm.td.jsonld" + }, + "composition-top-level-td-from-tm.td.jsonld": { + "title": "Top level/parent", + "description": "If it is desired to provide information that a Thing Model consists of one or more (sub-)TMs, the links entries must use the 'rel': 'tm:submodel' that targets to the (sub-)TM. Optionally an instanceName may be provided to associate an individual name to the composed (sub-)TM. This is useful when multiple similar Thing Model definitions are composed and needs to be distinguished.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/composition-top-level-td-from-tm.td.jsonld" + }, + "extend-and-import-td-from-tm.td.jsonld": { + "title": "Smart Lamp Control with Extend and Import", + "description": "The tm:extends and the import mechanism based on tm:ref can also be used at the same time in a TM definition. This example extends the a basic TM with an On/Off property and imports the status and dim definitions from pther TMs respectively.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/extend-and-import-td-from-tm.td.jsonld" + }, + "extends-basic-td-from-tm.td.jsonld": { + "title": "Extend Thing", + "description": "A Thing Model can extend an existing Thing Model by using the tm:extends mechanism. When a Thing Model extends another Thing Model, at least one links entry with 'rel: tm:extends' that targets a Thing Model that is be extended must be used.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/extends-basic-td-from-tm.td.jsonld" + }, + "import-definition-td-from-tm.td.jsonld": { + "title": "Import Existing Definitions", + "description": "For importing pieces of definitions of one or more existing Thiing Models, the 'tm:ref' term is utilized which provides the location of an existing (sub-)definition that should be reused. This example shows a TM definition that imports the existing definition of the property onOff from another TM into the new property definition switch.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/import-definition-td-from-tm.td.jsonld" + }, + "optional-interaction-td-from-tm.td.jsonld": { + "title": "Optinal Interaction Affordances", + "description": "In some cases it is desirable to not enforce which interaction affordances are mandatory and do not necessarily need to be implemented in a Thing Description instance. If interaction models are not mandatory to be implemented in a Thing Description instance, Thing Model definitions MUST use the JSON member name tm:optional.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/optional-interaction-td-from-tm.td.jsonld" + }, + "overwrite-definitions-td-from-tm.td.jsonld": { + "title": "Overwrite Existing Definitions", + "description": "At the place the 'tm:ref' is defined, additional name-value pairs can be added. It is also permitted to override name-value pairs from the referenced definition. If the intention is to override an existing JSON name-value pair definition from tm:ref, the same JSON name MUST be used at the same level of the tm:ref declaration that provides a new value. This example shows a new TM definition that overwrites (maximum), enhances (unit), and removes (title) existing definitions.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/overwrite-definitions-td-from-tm.td.jsonld" + }, + "overwrite-optional-td-from-tm.td.jsonld": { + "title": "Overwriting Optinal Interaction Affordances", + "description": "An optional definition in a Thing Model definition can be overwritten in the case it is extended by another Thing Model through the use of tm:ref. This examples overwrites the 'tm:optional' of another TM with an optional 'overheating' event.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/overwrite-optional-td-from-tm.td.jsonld" + }, + "placeholder-td-from-tm.td.jsonld": { + "title": "Placeholder", + "description": "In a case where TD instance terms, but not their values, are known in advance, the placeholder labeling may be used in a Thing Model. The string-based pattern of the placeholder must follow a valid pattern based on the regular expression {{2}[ -~]+}{2} (e.g., {{PLACEHOLDER_IDENTIFIER}}). The characters between {{ and }} are used as identifier name of the placeholder.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/placeholder-td-from-tm.td.jsonld" + }, + "relative-imports-td-from-tm.td.jsonld": { + "title": "Relative Imports", + "description": "This Thing example re-uses and augments a 'genericTemperature' property in two more specific properties, which describe an inner and an outer temperature value, respectively.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/relative-imports-td-from-tm.td.jsonld" + }, + "submodel-led-td-from-tm.td.jsonld": { + "title": "Basic LED", + "description": "This is an example of a simple Thing Model which is utilized as a submodel of another Thing Model.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/submodel-led-td-from-tm.td.jsonld" + }, + "submodel-ventilator-td-from-tm.td.jsonld": { + "title": "Basic Ventilator", + "description": "This is an example of a simple Thing Model which is utilized as a submodel of another Thing Model.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/submodel-ventilator-td-from-tm.td.jsonld" + }, + "versioning-td-from-tm.td.jsonld": { + "title": "Versioning", + "description": "When the Thing definitions change over time, this should be reflected in the version container. The term model is used with the version container in order to provide such versioning information.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/td/16-td-tm-relationships/versioning-td-from-tm.td.jsonld" + } + } + } + }, + "tm": { + "1-basic": { + "description": "This category contains simple examples of how a Thing Model is done.", + "examples": { + "basic-on-off-tm.tm.jsonld": { + "title": "Basic Thing Model for an On and Off Thing Description", + "description": "This is an example of a simple Thing which is utilized to extend onto another Thing.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/1-basic/basic-on-off-tm.tm.jsonld" + }, + "basic-tm.tm.jsonld": { + "title": "Basic TM", + "description": "This is an example of a basic Thing, which is use as a sort of template for creating a Thing Description instance of a Lamp TD", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/1-basic/basic-tm.tm.jsonld" + } + } + }, + "2-tm-versioning": { + "description": "This category contains examples of how to handle versioning on Thing Models.", + "examples": { + "versioning.tm.jsonld": { + "title": "Versioning", + "description": "When the Thing definitions change over time, this should be reflected in the version container. The term model is used with the version container in order to provide such versioning information.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/2-tm-versioning/versioning.tm.jsonld" + } + } + }, + "3-tm-extends-imports": { + "description": "This category contains examples of how to extend a Thing Model by using other Thing Models, whether by using the extend or the import mechanism.", + "examples": { + "extend-and-import.tm.jsonld": { + "title": "Smart Lamp Control with Extend and Import", + "description": "The tm:extends and the import mechanism based on tm:ref can also be used at the same time in a TM definition. This example extends the a basic TM with an On/Off property and imports the status and dim definitions from pther TMs respectively.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/3-tm-extends-imports/extend-and-import.tm.jsonld" + }, + "extends-basic.tm.jsonld": { + "title": "Extend Thing Example", + "description": "A Thing Model can extend an existing Thing Model by using the tm:extends mechanism. When a Thing Model extends another Thing Model, at least one links entry with 'rel: tm:extends' that targets a Thing Model that is be extended must be used.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/3-tm-extends-imports/extends-basic.tm.jsonld" + }, + "import-existing-definition.tm.jsonld": { + "title": "Import Existing Definitions", + "description": "For importing pieces of definitions of one or more existing Thiing Models, the 'tm:ref' term is utilized which provides the location of an existing (sub-)definition that should be reused. This example shows a TM definition that imports the existing definition of the property onOff from another TM into the new property definition switch.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/3-tm-extends-imports/import-existing-definition.tm.jsonld" + }, + "overwrite-existing-definitions.tm.jsonld": { + "title": "Overwrite Existing Definitions", + "description": "At the place the 'tm:ref' is defined, additional name-value pairs can be added. It is also permitted to override name-value pairs from the referenced definition. If the intention is to override an existing JSON name-value pair definition from tm:ref, the same JSON name MUST be used at the same level of the tm:ref declaration that provides a new value. This example shows a new TM definition that overwrites (maximum), enhances (unit), and removes (title) existing definitions.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/3-tm-extends-imports/overwrite-existing-definitions.tm.jsonld" + }, + "relative-imports.tm.jsonld": { + "title": "Relative Imports", + "description": "This Thing example re-uses and augments a 'genericTemperature' property in two more specific properties, which describe an inner and an outer temperature value, respectively.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/3-tm-extends-imports/relative-imports.tm.jsonld" + } + } + }, + "4-tm-optional": { + "description": "This category contains examples of how to implement optional interaction affordances as well as how to overwrite them.", + "examples": { + "optional-interaction.tm.jsonld": { + "title": "Optional Interaction Affordances", + "description": "In some cases it is desirable to not enforce which interaction affordances are mandatory and do not necessarily need to be implemented in a Thing Description instance. If interaction models are not mandatory to be implemented in a Thing Description instance, Thing Model definitions MUST use the JSON member name tm:optional.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/4-tm-optional/optional-interaction.tm.jsonld" + }, + "overwrite-optional-interactions.tm.jsonld": { + "title": "Overwriting Optional Interaction Affordances", + "description": "An optional definition in a Thing Model definition can be overwritten in the case it is extended by another Thing Model through the use of tm:ref. This examples overwrites the 'tm:optional' of another TM with an optional 'overheating' event.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/4-tm-optional/overwrite-optional-interactions.tm.jsonld" + } + } + }, + "5-tm-submodel": { + "description": "This category contains examples of ways to provide information of Thing Models that consist of one or more (sub-)Thing Models.", + "examples": { + "basic-led-tm.tm.jsonld": { + "title": "Basic LED", + "description": "This is an example of a simple Thing Model which is utilized as a submodel of another Thing Model.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/5-tm-submodel/basic-led-tm.tm.jsonld" + }, + "basic-ventilation-tm.tm.jsonld": { + "title": "Basic Ventilator", + "description": "This is an example of a simple Thing Model which is utilized as a submodel of another Thing Model.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/5-tm-submodel/basic-ventilation-tm.tm.jsonld" + }, + "submodel.tm.jsonld": { + "title": "Top level/parent", + "description": "If it is desired to provide information that a Thing Model consists of one or more (sub-)TMs, the links entries must use the 'rel': 'tm:submodel' that targets to the (sub-)TM. Optionally an instanceName may be provided to associate an individual name to the composed (sub-)TM. This is useful when multiple similar Thing Model definitions are composed and needs to be distinguished.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/5-tm-submodel/submodel.tm.jsonld" + } + } + }, + "6-placeholder": { + "description": "This category contains examples of how to utilize placeholder labeling for Thing Models where the terms are known in advance but not the values.", + "examples": { + "placeholder.tm.jsonld": { + "title": "Placeholder", + "description": "In a case where TD instance terms, but not their values, are known in advance, the placeholder labeling may be used in a Thing Model. The string-based pattern of the placeholder must follow a valid pattern based on the regular expression {{2}[ -~]+}{2} (e.g., {{PLACEHOLDER_IDENTIFIER}}). The characters between {{ and }} are used as identifier name of the placeholder.", + "path": "https://raw.githubusercontent.com/eclipse-thingweb/playground/master/examples/tm/6-placeholder/placeholder.tm.jsonld" + } + } + } + } +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/async-api.js b/packages/web-new/src/scripts/async-api.js new file mode 100644 index 000000000..a327511cc --- /dev/null +++ b/packages/web-new/src/scripts/async-api.js @@ -0,0 +1,76 @@ +/** + * @file The `async-api.js` takes care of the main functionality for the + * AsyncAPI feature within the console. This include initializing the editor, + * connecting it to the local storage, as well as the main buttons within the AsyncAPI + * feature such as json, yaml conversion and the download option. + */ + +import { editor } from 'monaco-editor' +import { setFontSize, editorForm, fontSizeSlider } from './settings-menu' +import { generateTD, offerFileDownload } from './util' +import { getEditorData } from './editor' + +/******************************************************************/ +/* AsyncAPI functionality */ +/******************************************************************/ + +//AsyncAPI Elements +export const asyncApiTab = document.querySelector(".async-tab-btn") +export const asyncApiJsonBtn = document.querySelector("#async-api-json") +export const asyncApiYamlBtn = document.querySelector("#async-api-yaml") +export const asyncApiView = document.querySelector("#async-api-view") +const asyncApiDownload = document.querySelector("#async-api-download") + +/** + * Initialize the monaco editor for the AsyncAPI feature, sets it to an empty value, + * a default language of json and as a read only document. Also it connects the editor + * to the local storage to change the fontsize correspondingly + */ +async function initAsyncApiEditor() { + window.asyncApiEditor = editor.create(document.getElementById('async-api-container'), { + value: "", + language: "json", + automaticLayout: true, + readOnly: true, + formatOnPaste: true + }) + + document.onload = setFontSize(window.asyncApiEditor) + fontSizeSlider.addEventListener("input", () => { + setFontSize(window.asyncApiEditor) + }) + + //Bind the reset button form the settings to the editor and assign the specied font size + editorForm.addEventListener("reset", () => { + setFontSize(window.asyncApiEditor) + }) +} + +initAsyncApiEditor() + +//Json conversion btn +asyncApiJsonBtn.addEventListener("click", () => { + generateTD("json", window.asyncApiEditor) + asyncApiJsonBtn.disabled = true + asyncApiYamlBtn.disabled = false +}) + +//Yaml conversion btn +asyncApiYamlBtn.addEventListener("click", () => { + generateTD("yaml", window.asyncApiEditor) + asyncApiJsonBtn.disabled = false + asyncApiYamlBtn.disabled = true +}) + +//Donwload btn +asyncApiDownload.addEventListener("click", () => { + const editorData = getEditorData(window.asyncApiEditor) + const contentType = `application/${editorData[0]};charset=utf-8;` + const visualizationName = editorData[2]["info"]["title"].replace(/\s/g, "-") + + offerFileDownload( + `${visualizationName}-AsyncAPI.${editorData[0]}`, + window.asyncApiEditor.getModel().getValue(), + contentType + ) +}) diff --git a/packages/web-new/src/scripts/console.js b/packages/web-new/src/scripts/console.js new file mode 100644 index 000000000..0aebc774a --- /dev/null +++ b/packages/web-new/src/scripts/console.js @@ -0,0 +1,199 @@ +/** + * @file The `console.js` takes care of setting the main eventHandlers + * for opening and closing the corresponding visualizations as well as + * calling their respective functions when interacted with + */ + +import { openApiTab, openApiJsonBtn, openApiYamlBtn, openApiView } from './open-api' +import { asyncApiTab, asyncApiJsonBtn, asyncApiYamlBtn, asyncApiView } from './async-api' +import { defaultsView, defaultsJsonBtn, defaultsYamlBtn, defaultsAddBtn } from './defaults' +import { visualize } from './visualize' +import { validationView } from './validation' +import { convertTDYamlToJson, detectProtocolSchemes } from '../../../core/dist/web-bundle.min.js' +import { generateOAP, generateAAP, addDefaultsUtil, validate } from './util' +import { editorList, getEditorData } from './editor' + +/******************************************************************/ +/* Console functionality */ +/******************************************************************/ + +//Main console elements +const errorContainer = document.querySelector(".console__content #console-error") +const errorTxt = document.querySelector(".console-error__txt") +const eraseConsole = document.querySelector(".console__tabs .trash") +export const visualizationOptions = document.querySelectorAll(".visualization__option") +export const visualizationContainers = document.querySelectorAll(".console-view") + +eraseConsole.addEventListener("click", () => { + clearConsole() +}) + +/** + * Unchecks all visualizatin btns and hiddes all visualization containers + */ +export function clearConsole() { + visualizationContainers.forEach(container => { + container.classList.add("hidden") + }) + visualizationOptions.forEach(option => { + option.checked = false + }) + + clearVisualizationEditors() +} + +/** + * Clear the value of all the viisualization monaco editor + */ +function clearVisualizationEditors() { + window.openApiEditor.getModel().setValue('') + window.asyncApiEditor.getModel().setValue('') + window.defaultsEditor.getModel().setValue('') +} + + +//Set the behavior for each visualization tab when clicked on it +visualizationOptions.forEach(option => { + option.addEventListener("click", () => { + clearVisualizationEditors() + visualizationContainers.forEach(container => { + container.classList.add("hidden") + }) + + editorList.forEach(editorInstance => { + if (editorInstance["_domElement"].classList.contains("active")) { + const editorValue = editorInstance["_domElement"].dataset.modeId === "yaml" ? convertTDYamlToJson(editorInstance.getValue()) : editorInstance.getValue() + try { + let td = JSON.parse(editorValue) + hideConsoleError() + + if ((td["@type"] === "tm:ThingModel" && option.id === "open-api-tab") || (td["@type"] === "tm:ThingModel" && option.id === "async-api-tab") || (td["@type"] === "tm:ThingModel" && option.id === "defaults-tab")) { + showConsoleError("This function is only allowed for Thing Descriptions!") + } else { + switch (option.id) { + case "open-api-tab": + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + openApiJsonBtn.disabled = false + openApiYamlBtn.disabled = true + } else { + openApiJsonBtn.disabled = true + openApiYamlBtn.disabled = false + } + + if (td["@type"] !== "tm:ThingModel") { + enableAPIConversionWithProtocol(editorInstance) + } + + break; + + case "async-api-tab": + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + asyncApiJsonBtn.disabled = false + asyncApiYamlBtn.disabled = true + } else { + asyncApiJsonBtn.disabled = true + asyncApiYamlBtn.disabled = false + } + + if (td["@type"] !== "tm:ThingModel") { + enableAPIConversionWithProtocol(editorInstance) + } + + break; + + case "defaults-tab": + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + defaultsJsonBtn.disabled = false + defaultsYamlBtn.disabled = true + } else { + defaultsJsonBtn.disabled = true + defaultsYamlBtn.disabled = false + } + if (td["@type"] !== "tm:ThingModel") { + addDefaultsUtil(editorInstance) + defaultsAddBtn.disabled = true + defaultsView.classList.remove("hidden") + } + + break; + + case "visualize-tab": + visualize(td) + + break; + + case "validation-tab": + validationView.classList.remove("hidden") + const editorData = getEditorData(editorInstance) + validate(editorData[1], editorValue) + + break; + + default: + break; + } + + } + + } + catch (err) { + console.error(err); + errorTxt.innerText = "Invalid or Empty document" + errorContainer.classList.remove("hidden") + } + } + }) + }) +}) + + +/** + * Enable Open/Async API elements according to the protocol schemes of a TD + * @param {object} editor - currently active monaco editor + */ +function enableAPIConversionWithProtocol(editorInstance) { + let td = editorInstance.getValue() + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + td = convertTDYamlToJson(td) + } + + const protocolSchemes = detectProtocolSchemes(td) + + if (protocolSchemes) { + + if (openApiTab.checked === true) { + if (["http", "https"].some(p => protocolSchemes.includes(p))) { + generateOAP(editorInstance["_domElement"].dataset.modeId, editorInstance) + openApiView.classList.remove("hidden") + } else { + showConsoleError("Please insert a TD which uses HTTP!") + } + } + + if (asyncApiTab.checked === true) { + if (["mqtt", "mqtts"].some(p => protocolSchemes.includes(p))) { + generateAAP(editorInstance["_domElement"].dataset.modeId, editorInstance) + asyncApiView.classList.remove("hidden") + } else { + showConsoleError("Please insert a TD which uses MQTT!") + } + } + } +} + +/** + * Populates the text that should be shown by the console when theres an error + * @param { String } msg - the text that should be shown in the error view + */ +function showConsoleError(msg) { + errorTxt.innerText = msg + errorContainer.classList.remove("hidden") +} + +/** + * Hides the console error and remove the previous given text + */ +function hideConsoleError() { + errorTxt.innerText = "" + errorContainer.classList.add("hidden") +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/defaults.js b/packages/web-new/src/scripts/defaults.js new file mode 100644 index 000000000..02fcb59af --- /dev/null +++ b/packages/web-new/src/scripts/defaults.js @@ -0,0 +1,92 @@ +/** + * @file The `defaults.js` takes care of the main functionality for the + * Defaults feature within the console. This include initializing the editor, + * connecting it to the local storage, as well as the main buttons within the Defaults + * feature such as json, yaml conversion and the download option. + */ + +import { editor } from 'monaco-editor' +import { setFontSize, editorForm, fontSizeSlider } from './settings-menu' +import { generateTD, offerFileDownload, addDefaultsUtil, removeDefaultsUtil } from './util' +import { getEditorData } from './editor' + +/******************************************************************/ +/* Defaults functionality */ +/******************************************************************/ + +//Default Elements +export const defaultsJsonBtn = document.querySelector("#defaults-json") +export const defaultsYamlBtn = document.querySelector("#defaults-yaml") +export const defaultsAddBtn = document.querySelector("#defaults-add") +const defaultsRemoveBtn = document.querySelector("#defaults-remove") +const defaultsDownload = document.querySelector("#defaults-download") +export const defaultsView = document.querySelector("#defaults-view") + +/** + * Initialize the monaco editor for the Defaults feature, sets it to an empty value, + * a default language of json and as a read only document. Also it connects the editor + * to the local storage to change the fontsize correspondingly + */ +async function initDefaultsEditor() { + window.defaultsEditor = editor.create(document.getElementById('defaults-container'), { + value: "", + language: "json", + automaticLayout: true, + readOnly: true, + formatOnPaste: true + }) + + document.onload = setFontSize(window.defaultsEditor) + fontSizeSlider.addEventListener("input", () => { + setFontSize(window.defaultsEditor) + }) + + //Bind the reset button form the settings to the editor and assign the specied font size + editorForm.addEventListener("reset", () => { + setFontSize(window.defaultsEditor) + }) +} + +initDefaultsEditor() + +//Json conversion btn +defaultsJsonBtn.addEventListener("click", () => { + generateTD("json", window.defaultsEditor) + defaultsJsonBtn.disabled = true + defaultsYamlBtn.disabled = false +}) + +//Yaml conversion btn +defaultsYamlBtn.addEventListener("click", () => { + generateTD("yaml", window.defaultsEditor) + defaultsJsonBtn.disabled = false + defaultsYamlBtn.disabled = true +}) + +//Add defaults btn +defaultsAddBtn.addEventListener("click", () => { + defaultsAddBtn.disabled = true + defaultsRemoveBtn.disabled = false + addDefaultsUtil(window.defaultsEditor) +}) + +//Remove defaults btn +defaultsRemoveBtn.addEventListener("click", () => { + removeDefaultsUtil(window.defaultsEditor) + defaultsAddBtn.disabled = false + defaultsRemoveBtn.disabled = true +}) + +//Donwload btn +defaultsDownload.addEventListener("click", () => { + const editorData = getEditorData(window.defaultsEditor) + const contentType = `application/${editorData[0]};charset=utf-8;` + const visualizationName = editorData[2]["title"].replace(/\s/g, "-") + const defaultState = defaultsAddBtn.disabled === true ? 'with-Defaults' : 'without-Defaults' + + offerFileDownload( + `${visualizationName}-${defaultState}.${editorData[0]}`, + window.defaultsEditor.getModel().getValue(), + contentType + ) +}) \ No newline at end of file diff --git a/packages/web-new/src/scripts/editor.js b/packages/web-new/src/scripts/editor.js new file mode 100644 index 000000000..87efd7556 --- /dev/null +++ b/packages/web-new/src/scripts/editor.js @@ -0,0 +1,425 @@ +/** + * @file The `editor.js` contains the main functionality + * for the generated monaco editors and the surrounding elements + * such as the tab functionality. It utilizes mutiple other files and dependncies + * such as the monaco-editor dependencie, the monochrome-theme file to add the custom + * theme, some util functions, the td and tm schemas from the core @thing-description-playground + * as well as the "Validators" and the "JsonSpellChecker" from the json-spell-checker dependency + */ + +import { editor, languages, MarkerSeverity } from 'monaco-editor' +import { getEditorValue, validate } from "./util" +import { setFontSize, editorForm, fontSizeSlider } from './settings-menu' +import { autoValidateBtn, validationTab, validationView } from './validation' +import { jsonBtn, yamlBtn } from './json-yaml' +import tdSchema from '../../../core/td-schema.json' +import tmSchema from '../../../core/tm-schema.json' +import { convertTDJsonToYaml, convertTDYamlToJson } from '../../../core/dist/web-bundle.min.js' +import { configure, checkTypos } from '../../../json-spell-checker/dist/web-bundle.min.js' +import { clearConsole } from './console' + +/***********************************************************/ +/* Editor and tabs */ +/***********************************************************/ + +//Decalre all necessary item from the DOM +const addTab = document.querySelector(".ide__tabs__add") +const tabsLeftContainer = document.querySelector(".ide__tabs__left") +const ideContainer = document.querySelector(".ide__container") +let tabsLeft = document.querySelectorAll(".ide__tabs__left li:not(:last-child)") + +//Editor list array where all the generated editor will be added and referenced from +export let editorList = [] +export const ideCount = { + ideNumber: 1 +} + +//Initiate by generating the first editor and the respective tab +createIde(ideCount.ideNumber) + +//Initialized the program with an open validation view +validationTab.checked = true +validationView.classList.remove("hidden") + +/** + * Funtion which creates a tab for the respective editor + * and adds all other tab component such as the close button + * @param {Number} tabNumber - the "id" number for the tab + * @param {String} exampleName - the initial/default name shown in the tab + * @param {String} thingType - the type of the object TD or TM + */ +function createTab(tabNumber, exampleName, thingType) { + + const newTab = document.createElement("li") + //assign the tabNumber to the data-tab-id property + newTab.setAttribute("data-tab-id", tabNumber) + newTab.setAttribute('id', 'tab'); + + //Add thing type icon to the tab + const tabIcon = document.createElement("p") + tabIcon.classList.add("tab-icon") + if (thingType === "TM") { + tabIcon.innerText = "TM" + } else { + tabIcon.innerText = "TD" + } + + const tabContent = document.createElement("p") + //If there is not specified example name give the default Thing Description + tabNumber + //Else, if the the user uses TD/TM example use the example name as the tab name + if (exampleName === undefined || exampleName === "") { + tabContent.innerText = `Thing Description ${tabNumber}` + } + else { + tabContent.innerText = exampleName + } + tabContent.classList.add("content-tab") + //Add the close btn element + const closeBtn = document.createElement("div") + closeBtn.classList.add("close-tab") + //Assign icon to the close btn + const closeIcon = document.createElement("i") + closeIcon.classList.add("fa-solid", "fa-xmark") + + closeBtn.appendChild(closeIcon) + newTab.appendChild(tabIcon) + newTab.appendChild(tabContent) + newTab.appendChild(closeBtn) + + //Insert the newly created list at the end of the tab container but before the add new tab button + tabsLeftContainer.insertBefore(newTab, tabsLeftContainer.children[(tabsLeftContainer.children.length) - 1]) + tabsLeft = document.querySelectorAll(".ide__tabs__left li:not(:last-child)") + + //Once the new tab is created remove "active class from all other tab" as well as the + //contenteditable attribute and give the class "active to the new tab" + tabsLeft.forEach(tab => { + tab.classList.remove("active") + tab.children[0].removeAttribute("contenteditable") + }) + newTab.classList.add("active") +} + +/** + * Function which takes care of creating the new editor from monaco + * and appends them to the DOM + * @param {Number} ideNumber - the id which is assign to the editor in order to connect to the respective tab + * @param {Object} exampleValue - the td or tm as a json object + */ +export function createIde(ideNumber, exampleValue) { + clearConsole() + const url = getEditorValue(window.location.hash.substring(1)) + let defaultValue = {} + let editorLanguage = "json" + + if (url === "") { + // If example value is empty utilize a preset of the most basic form of a td + // else utilize the td/tm from the exampleValue + if (exampleValue === undefined) { + defaultValue = { + "@context": "https://www.w3.org/2022/wot/td/v1.1", + "id": "urn:uuid:0804d572-cce8-422a-bb7c-4412fcd56f06", + "@type": "Thing", + "title": `My Thing Template`, + "description": "This is your customizable template. Edit it to fit your Thing Description or Thing Model needs!", + "securityDefinitions": { + "basic_sc": { "scheme": "basic", "in": "header" } + }, + "security": "basic_sc", + "properties": {}, + "actions": {}, + "events": {} + } + } + else { + delete exampleValue["$title"] + delete exampleValue["$description"] + defaultValue = exampleValue + } + } + else { + editorLanguage = url.substring(2, 6) + defaultValue = JSON.parse(url.substring(6)) + //remove the hash from the url to allow new editor to be created + history.replaceState(null, null, window.location.origin + window.location.pathname); + } + + //Create the container for the new editor and add all necessary attributes for styling and identifiers + const newIde = document.createElement("div") + newIde.classList.add("editor") + newIde.setAttribute('id', `editor${ideNumber}`) + newIde.setAttribute("data-ide-id", ideNumber) + ideContainer.appendChild(newIde) + + //New monaco editor is created + initEditor(ideNumber, defaultValue, editorLanguage) + + //remove the active class from previous editor + editorList.forEach(editor => { + editor["_domElement"].classList.remove("active") + }) + + //Add active class to new editor + newIde.classList.add("active") + + //Create the new tab depending if its a TM or TD + if (defaultValue["@type"] === "tm:ThingModel") { + createTab(ideNumber, defaultValue["title"], "TM") + } + else { + createTab(ideNumber, defaultValue["title"], "TD") + } + + findFileType() +} + +/** + * Async funtion to initiate the editors + * @param {Number} ideNumber + * @param {Object} defaultValue + * @param {String} editorLanguage + */ +async function initEditor(ideNumber, editorValue, editorLanguage) { + editorValue = editorLanguage === "json" ? JSON.stringify(editorValue, null, 2) : convertTDJsonToYaml(JSON.stringify(editorValue)) + let editorInstance = editor.create(document.getElementById(`editor${ideNumber}`), { + value: editorValue, + language: editorLanguage, + automaticLayout: true, + formatOnPaste: true + }) + + //Bind the font size slider from the settings to the editor(s) and assign the specified font size + document.onload = setFontSize(editorInstance) + fontSizeSlider.addEventListener("input", () => { + setFontSize(editorInstance) + }) + + //Bind the reset button form the settings to the editor and assign the specied font size + editorForm.addEventListener("reset", () => { + setFontSize(editorInstance) + }) + + editorInstance.getModel().onDidChangeContent(_ => { + + try { + const editorValues = getEditorData(editorInstance) + changeThingIcon(editorValues[1]) + updateTabName(editorValues[2]["title"]) + + if (autoValidateBtn.checked === true && validationTab.checked === true) { + validate(editorValues[1], JSON.stringify(editorValues[2])) + }else{ + clearConsole() + } + + //Only use the spell checker if file is json + if (editorValues[0] === "json") { + //Get if thing type and set the respective schema + if (editorValues[2]["@type"] === "tm:ThingModel") { + // Configure JSON language support with schemas and schema associations + languages.json.jsonDefaults.setDiagnosticsOptions({ + validate: true, + schemas: [ + { + fileMatch: [editorInstance.getModel().uri.toString()], + schema: tmSchema, + uri: 'file:///tm-schema.json' + } + ] + }); + } + else { + languages.json.jsonDefaults.setDiagnosticsOptions({ + validate: true, + schemas: [ + { + fileMatch: [editorInstance.getModel().uri.toString()], + schema: tdSchema, + uri: 'file:///td-schema.json' + } + ] + }); + } + + markTypos(editorInstance.getModel()); + } + } catch (err) { + console.error("Not a proper JSON object"); + } + + }); + + editorList.push(editorInstance) +} + +/** + * Marks the possible typos on the editor + * @param {object} model - The model that represents the loaded Monaco editor + */ +function markTypos(model) { + const markers = [] + + configure() + const typos = checkTypos(model.getValue()) + + typos.forEach(typo => { + markers.push({ + message: typo.message, + severity: MarkerSeverity.Warning, + startLineNumber: typo.startLineNumber, + startColumn: typo.startColumn, + endLineNumber: typo.endLineNumber, + endColumn: typo.endColumn + }) + }) + + editor.setModelMarkers(model, 'typo', markers) +} + +/** + * Check for the content of the editor and return the format (json, yaml), the content and the thing type (TD, TM) + * @param { monaco object } editor + * @returns {String, String, JSON Object} , [formatType, thingType, editorContent] + */ +export function getEditorData(editorInstance) { + const formatType = editorInstance["_domElement"].dataset.modeId + const editorContent = formatType === "json" ? JSON.parse(editorInstance.getValue()) : JSON.parse(convertTDYamlToJson(editorInstance.getValue())) + const thingType = editorContent["@type"] === "tm:ThingModel" ? "tm" : "td" + + return [formatType, thingType, editorContent] +} + +/** + * Finds the current active tab and modifies the icon accordingly + * @param { string } thingType - TM or TD to modify the tab icon + */ +function changeThingIcon(thingType) { + tabsLeft.forEach(tab => { + if (tab.classList.contains("active")) { + tab.children[0].innerText = thingType.toUpperCase() + } + }) +} + +/** + * Create a new editor and respective tab when clicking on the plus tab + * Always initialized the new added thing as a TD + * Set the json btn to true + */ +addTab.addEventListener("click", () => { + createIde(++ideCount.ideNumber) + jsonBtn.checked = true +}) + +/** + * Getting and managing all event inside the tabs, such as closing and selecting each tab + * @param {event} e - click event + */ +tabsLeftContainer.addEventListener("click", (e) => { + //getting the initial target + const selectedElement = e.target + clearConsole() + + //Add the active styling when tab is clicked + if (selectedElement.id == "tab" || selectedElement.parentElement.id == "tab") { + + //Removing the active style from all tabs and contenteditable attribute + tabsLeft.forEach(tab => { + tab.classList.remove("active") + tab.children[0].removeAttribute("contenteditable") + }) + //removing the active style from all editors + editorList.forEach(ide => { + ide["_domElement"].classList.remove("active") + }) + + //if the target element is the tab itself add the active class + //else if the target element is a child of the element add the active calss to the parent element + if (selectedElement.id == "tab") { + selectedElement.classList.add("active") + } + else { + selectedElement.parentElement.classList.add("active") + } + + //Get the id of the element and setting the active style to the respective editor + if (selectedElement.dataset.tabId) { + editorList.forEach(ide => { + if (selectedElement.dataset.tabId === ide["_domElement"].dataset.ideId) { + ide["_domElement"].classList.add("active") + } + }) + } + else { + editorList.forEach(ide => { + if (selectedElement.parentElement.dataset.tabId === ide["_domElement"].dataset.ideId) { + ide["_domElement"].classList.add("active") + } + }) + } + } + + //Closing tabs only when the click event happens on the close icon of the tab + if (selectedElement.className == "close-tab" && tabsLeft.length >= 1) { + //If there is only one tab and its closed create a completely editor and tab and restart the counter + //If not the last one adjust the styling accordingly and update the amount of tabs + if (tabsLeft.length == 1) { + ideCount.ideNumber = 0 + editorList.forEach(ide => { + if (selectedElement.parentElement.dataset.tabId === ide["_domElement"].dataset.ideId) { + //remove the editor from the editor list array and from the DOM + const index = editorList.indexOf(ide) + editorList.splice(index, 1) + ide["_domElement"].remove() + } + }) + //remove tab + selectedElement.parentElement.remove() + //create new tab + createIde(++ideCount.ideNumber) + jsonBtn.checked = true + } + else { + editorList.forEach(ide => { + if (selectedElement.parentElement.dataset.tabId === ide["_domElement"].dataset.ideId) { + const index = editorList.indexOf(ide) + editorList.splice(index, 1) + ide["_domElement"].remove() + } + }) + selectedElement.parentElement.remove() + tabsLeft = document.querySelectorAll(".ide__tabs__left li:not(:last-child)") + tabsLeft[0].classList.add("active") + editorList[0]["_domElement"].classList.add("active") + } + } + + findFileType() +}) + +/** + * Find if active editor is json or yaml and change the json/yaml btns repectively + */ +function findFileType() { + editorList.forEach(editor => { + if (editor["_domElement"].classList.contains("active")) { + if (editor["_domElement"].dataset.modeId === "json") { + jsonBtn.checked = true + } + else { + yamlBtn.checked = true + } + } + }) +} + +/** + * Update the tab name depending on the title of the document + * @param { String } docTitle - title of the TD/TM document + */ +function updateTabName(docTitle) { + tabsLeft.forEach(tab => { + if (tab.classList.contains("active")) { + tab.children[1].textContent = docTitle + } + }) +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/examples-menu.js b/packages/web-new/src/scripts/examples-menu.js new file mode 100644 index 000000000..77219119c --- /dev/null +++ b/packages/web-new/src/scripts/examples-menu.js @@ -0,0 +1,397 @@ +/** + * @file The `examples-menu.js` contains the main functionality + * for the examples menu, such as displaying all the TD and TM examples, + * as well as filtering them by categories, a search function to find + * specific examples and a use a template example to directly added to an editor where it can be utilized and modified. + * In the future the option to see short snipets of the most important part of the example, might also be implemented. + */ + +import { createIde, ideCount } from "./editor" + +/***********************************************************/ +/* Examples menu */ +/***********************************************************/ +const closeExamples = document.querySelector(".examples-menu-container__close i") +const examplesMenu = document.querySelector(".examples-menu") +const examplesBtn = document.querySelector("#examples-btn") +const thingTypeSelect = document.querySelector('#thing-type') +const categorySelect = document.querySelector('#thing-category') +const filterForm = document.querySelector('.examples-menu-container__filter') +const tdExamplesContainer = document.querySelector(".examples-container__td") +const tmExamplesContainer = document.querySelector(".examples-container__tm") +const searchInput = document.querySelector(".search-input") +const tdSearchResults = tdExamplesContainer.querySelector("#filtered-results") +const tmSearchResults = tmExamplesContainer.querySelector("#filtered-results") + +/** + * Close examples menu when clicking on x icon and + * clearing all info inside the examples menu + */ +closeExamples.addEventListener("click", () => { + examplesMenu.classList.add("closed") +}) + +/** + * Open examples menu when clicking on examples btn + * as well as populating the examples and filter selects + */ +examplesBtn.addEventListener("click", () => { + examplesMenu.classList.remove("closed") + filterThingType() +}) + + +/*** Creating categories arrays and populating them with async call ***/ +let tdCategories = [] +let tmCategories = [] +getCategories() + +/** + * Get all the td and tm names, description and id from the paths file + */ +async function getCategories() { + const res = await fetch('./examples-paths/examples-paths.json') + const data = await res.json() + + const categoriesTD = Object.entries(data["td"]) + categoriesTD.forEach(category => { + + const newCategory = { + name: "", + description: "", + id: "" + } + + //Removing all "-" from the category to use as the name + newCategory["name"] = (category[0].substring(category[0].indexOf("-") + 1)).replaceAll('-', ' ') + + //Use the category as the id + newCategory["id"] = category[0] + + //get the description text + newCategory["description"] = category[1]["description"] + + //Push to the td categories array + tdCategories.push(newCategory) + }) + + const categoriesTM = Object.entries(data["tm"]) + categoriesTM.forEach(category => { + + const newCategory = { + name: "", + description: "", + id: "" + } + + //Removing all "-" from the category to use as the name + newCategory["name"] = (category[0].substring(category[0].indexOf("-") + 1)).replaceAll('-', ' ') + + //use the category as the id + newCategory["id"] = category[0] + + //get the description text + newCategory["description"] = category[1]["description"] + + //Push to the td categories array + tmCategories.push(newCategory) + }) + + populateCategories() +} + +/** + * Checks the TD/TM select and updates the categories select respectively + */ +function filterThingType() { + //Clear all elments inside the categories select + const selectOptions = [...categorySelect.options] + selectOptions.forEach(option => { + option.remove() + }) + + if (thingTypeSelect.value === "thing-description") { + tdExamplesContainer.classList.remove("hidden") + tmExamplesContainer.classList.add("hidden") + tdCategories.forEach(category => { + const opt = document.createElement('option') + opt.value = category.id + opt.innerText = category.name + categorySelect.appendChild(opt) + }) + } + + if (thingTypeSelect.value === "thing-model") { + tmExamplesContainer.classList.remove("hidden") + tdExamplesContainer.classList.add("hidden") + tmCategories.forEach(category => { + const opt = document.createElement('option') + opt.value = category.id + opt.innerText = category.name + categorySelect.appendChild(opt) + }) + } +} + +/** + * Event listeners to check for changes and scroll to the respective category + */ +thingTypeSelect.addEventListener("change", () => { + filterThingType() + const element = document.getElementById(categorySelect.value); + element.scrollIntoView({ behavior: "smooth", block: "start" }) +}) +categorySelect.addEventListener("change", () => { + const element = document.getElementById(categorySelect.value); + element.scrollIntoView({ behavior: "smooth", block: "start" }) +}) + + +/** + * Creates all the html container elements for the TD and TM categories + * and initializes the getAllExamples function + */ +function populateCategories() { + tdCategories.forEach(category => { + const categoryContainer = document.createElement('div') + categoryContainer.classList.add("examples-category") + categoryContainer.setAttribute("data-category", category.id) + categoryContainer.setAttribute("id", category.id) + tdExamplesContainer.appendChild(categoryContainer) + + const categoryTitle = document.createElement('div') + categoryTitle.classList.add("examples-category__title") + categoryContainer.appendChild(categoryTitle) + + const title = document.createElement('h3') + title.innerText = category.name + categoryTitle.appendChild(title) + + const categoryDescription = document.createElement('div') + categoryDescription.classList.add("examples-category__description") + categoryContainer.appendChild(categoryDescription) + + const description = document.createElement('p') + description.innerText = category.description + categoryDescription.appendChild(description) + + const categoryContent = document.createElement('div') + categoryContent.classList.add("examples-category__container") + categoryContainer.appendChild(categoryContent) + + getAllExamples(category.id, "td") + }) + + tmCategories.forEach(category => { + const categoryContainer = document.createElement('div') + categoryContainer.classList.add("examples-category") + categoryContainer.setAttribute("data-category", category.id) + categoryContainer.setAttribute("id", category.id) + tmExamplesContainer.appendChild(categoryContainer) + + const categoryTitle = document.createElement('div') + categoryTitle.classList.add("examples-category__title") + categoryContainer.appendChild(categoryTitle) + + const title = document.createElement('h3') + title.innerText = category.name + categoryTitle.appendChild(title) + + const categoryDescription = document.createElement('div') + categoryDescription.classList.add("examples-category__description") + categoryContainer.appendChild(categoryDescription) + + const description = document.createElement('p') + description.innerText = category.description + categoryDescription.appendChild(description) + + const categoryContent = document.createElement('div') + categoryContent.classList.add("examples-category__container") + categoryContainer.appendChild(categoryContent) + + getAllExamples(category.id, "tm") + }) +} + + +/** + * Utilizes the paths file to get all examples from github + * and calls the create example function with the id and raw path + * @param {string} categoryId - the name of the category + * @param {string} thingType - td or tm + */ +async function getAllExamples(categoryId, thingType) { + + const res = await fetch('./examples-paths/examples-paths.json') + const data = await res.json() + + const examples = Object.entries(data[thingType][categoryId]["examples"]) + + for (const example of examples) { + + //get category + const categoryContainer = document.querySelector(`[data-category='${categoryId}'] .examples-category__container`) + + //individual examples + const exampleContainer = document.createElement('div') + exampleContainer.classList.add("example") + categoryContainer.appendChild(exampleContainer) + + //create example title + const exampleName = document.createElement('div') + exampleName.classList.add("example__name") + const exampleNameIcon = document.createElement('i') + exampleNameIcon.classList.add("fa-solid", "fa-file-code") + exampleName.appendChild(exampleNameIcon) + const exampleNameTitle = document.createElement('p') + exampleNameTitle.innerText = example[1]["title"] + // exampleNameTitle.innerText = data['$title'] + exampleName.appendChild(exampleNameTitle) + exampleContainer.appendChild(exampleName) + + //add event listener to show example information and interaction btns + exampleName.addEventListener('click', () => { + exampleName.parentElement.classList.toggle("open") + }) + + //create example content + const exampleContent = document.createElement('div') + exampleContent.classList.add("example__content") + exampleContainer.appendChild(exampleContent) + + const exampleDescription = document.createElement('p') + exampleDescription.innerText = example[1]["description"] + exampleDescription.classList.add('example__description') + exampleContent.appendChild(exampleDescription) + + const exampleBtns = document.createElement('div') + exampleBtns.classList.add("example__btn") + exampleContent.appendChild(exampleBtns) + + const exampleBtnUse = document.createElement('button') + exampleBtnUse.classList.add("example__btn--use") + exampleBtns.appendChild(exampleBtnUse) + + const exampleBtnShow = document.createElement('button') + exampleBtnShow.classList.add("example__btn--show") + exampleBtns.appendChild(exampleBtnShow) + + const exampleIconShow = document.createElement('i') + exampleIconShow.classList.add("fa-solid", "fa-eye") + exampleBtnShow.appendChild(exampleIconShow) + + const exampleTxtShow = document.createElement('p') + exampleTxtShow.innerText = "Show Snipet" + exampleBtnShow.appendChild(exampleTxtShow) + + const exampleIconUse = document.createElement('i') + exampleIconUse.classList.add("fa-solid", "fa-file-pen") + exampleBtnUse.appendChild(exampleIconUse) + + const exampleTxtUse = document.createElement('p') + exampleTxtUse.innerText = "Use as Template" + exampleBtnUse.appendChild(exampleTxtUse) + + //Listener to generate an editor with the examples information + exampleBtnUse.addEventListener('click', () => { + getTemplateData(example[1]["path"]) + exampleName.parentElement.classList.toggle("open") + }) + } +} + +/** + * Gets the example data to pupulate the monaco editor and allow the user to use it as a template + */ +async function getTemplateData(path) { + const res = await fetch(path) + const data = await res.json() + createIde(++ideCount.ideNumber, data) + examplesMenu.classList.add("closed") +} + +/** + * Listener when search input is used in the examples menu + * Gets all the examples that match the inputed text to the title and + * description of the examples, clones them and adds them to the + * search result category + * @param {event} e - submit event + */ +filterForm.addEventListener("submit", (e) => { + e.preventDefault() + + //Check if the thingType select is TD or TM + if (thingTypeSelect.value === "thing-description") { + //Only ge the container for the searched results + const examplesContainer = tdSearchResults.querySelector(".examples-category__container") + //Clean all the children component + while (examplesContainer.children.length > 0) { + examplesContainer.firstElementChild.remove() + } + //Show the td examples container and hide the tm examples container + tdSearchResults.classList.remove("hidden") + tmSearchResults.classList.add("hidden") + + //Get all the categories and their title and description values + const categories = tdExamplesContainer.querySelectorAll(".examples-category:not(:first-child)") + categories.forEach(category => { + const examples = [...category.children[2].children] + examples.forEach(example => { + //If value of the search input mataches the title or description + //clone it, append it and add the respective event listeners + if ((example.firstChild.childNodes[1].innerText.toLowerCase()).includes(searchInput.value.toLowerCase()) || (example.children[1].children[0].innerText.toLowerCase()).includes(searchInput.value.toLowerCase())) { + let clonedElement = example.cloneNode(true) + clonedElement.children[0].addEventListener('click', () => { + clonedElement.classList.toggle("open") + }) + + clonedElement.querySelector(".example__btn--use").addEventListener('click', () => { + example.querySelector(".example__btn--use").click() + clonedElement.classList.toggle("open") + }) + examplesContainer.appendChild(clonedElement) + } + //If input value is empty clear all the search results and hide the category + if (searchInput.value === "") { + while (examplesContainer.children.length > 0) { + examplesContainer.firstElementChild.remove() + } + tdSearchResults.classList.add("hidden") + } + }) + }) + } + else { + const examplesContainer = tmSearchResults.querySelector(".examples-category__container") + while (examplesContainer.children.length > 0) { + examplesContainer.firstElementChild.remove() + } + tmSearchResults.classList.remove("hidden") + tdSearchResults.classList.add("hidden") + const categories = tmExamplesContainer.querySelectorAll(".examples-category:not(:first-child)") + categories.forEach(category => { + const examples = [...category.children[2].children] + examples.forEach(example => { + if ((example.firstChild.childNodes[1].innerText.toLowerCase()).includes(searchInput.value.toLowerCase()) || (example.children[1].children[0].innerText.toLowerCase()).includes(searchInput.value.toLowerCase())) { + let clonedElement = example.cloneNode(true) + clonedElement.children[0].addEventListener('click', () => { + clonedElement.classList.toggle("open") + }) + + clonedElement.querySelector(".example__btn--use").addEventListener('click', () => { + example.querySelector(".example__btn--use").click() + clonedElement.classList.toggle("open") + }) + examplesContainer.appendChild(clonedElement) + } + + if (searchInput.value === "") { + while (examplesContainer.children.length > 0) { + examplesContainer.firstElementChild.remove() + } + tmSearchResults.classList.add("hidden") + } + }) + }) + } +}) \ No newline at end of file diff --git a/packages/web-new/src/scripts/json-yaml.js b/packages/web-new/src/scripts/json-yaml.js new file mode 100644 index 000000000..38eaba7b4 --- /dev/null +++ b/packages/web-new/src/scripts/json-yaml.js @@ -0,0 +1,63 @@ +/** + * @file The `json-yaml.js` contains the main functionality + * for converting json to yaml and vice versa, utilizing the util's + * funcions and the editorList array from the editor file. + */ +import { editorList } from './editor.js' +import { generateTD } from './util.js' + +/***********************************************************/ +/* Yaml functionality */ +/***********************************************************/ + +export const yamlBtn = document.querySelector("#file-type-yaml") +export const jsonBtn = document.querySelector("#file-type-json") +const yamlWarning = document.querySelector('.json-yaml-warning') +const yamlConfirmBtn = document.querySelector("#yaml-confirm-btn") +const yamlCancelBtn = document.querySelector("#yaml-cancel-btn") +jsonBtn.checked = true + + +//Click event to show the warning text before converting the td/tm +yamlBtn.addEventListener("click", ()=> { + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + try{ + JSON.parse(editorInstance.getValue()) + } + catch(err){ + alert('TD is not a valid JSON object'); + jsonBtn.checked = true + return + } + yamlWarning.classList.remove('closed') + } + }) +}) + +//Close the warning without converting +yamlCancelBtn.addEventListener("click", () => { + yamlWarning.classList.add('closed') + jsonBtn.checked = true +}) + +//Confirm the json to yaml convertion +yamlConfirmBtn.addEventListener("click", () => { + yamlWarning.classList.add('closed') + convertJsonYaml() +}) + +jsonBtn.addEventListener("click", ()=> { + convertJsonYaml() +}) + +/** + * Get the currently active editor and its value and convert to json or yaml + */ +function convertJsonYaml(){ + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + generateTD(jsonBtn.checked === true ? "json" : "yaml", editorInstance) + } + }) +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/jsonld-vis.js b/packages/web-new/src/scripts/jsonld-vis.js new file mode 100644 index 000000000..304462110 --- /dev/null +++ b/packages/web-new/src/scripts/jsonld-vis.js @@ -0,0 +1,495 @@ +/** + * @file The `jsonld-vis.js` handles the d3 visualization for the + * graph option, by utilizin the d3 and d3-tip dependencies + */ + +import * as d3 from 'd3' +import d3Tip from 'd3-tip' +import { getDirection } from 'string-direction' + +/* eslint-disable no-underscore-dangle */ +'use strict'; +export const collapseBtn = document.getElementById('collapse-all') +export const expandBtn = document.getElementById('expand-all') + +/** + * Generate the graph visualization with d3 + * @param { json object } jsonld - the value of the current editor + * @param { html element } selector - an html element to be used as the container + * @param { json object } config - the configuration values for the visualization + */ +export function jsonldVis(jsonld, selector, config) { + if (!arguments.length) return jsonldVis; + config = config || {}; + + const h = config.h || 600 + const w = config.w || 800 + const maxLabelWidth = config.maxLabelWidth || 250 + const transitionDuration = config.transitionDuration || 750 + const transitionEase = config.transitionEase || 'cubic-in-out' + const minRadius = config.minRadius || 5 + const scalingFactor = config.scalingFactor || 2 + + let i = 0; + + const tree = d3.layout.tree() + .size([h, w]); + + const diagonal = d3.svg.diagonal() + .projection(function (d) { return [d.y, d.x]; }); + + const svg = d3.select(selector).append('svg') + .attr('width', w) + .attr('height', h) + .append('g') + .attr('transform', 'translate(' + 150 + ',0)'); + + const tip = d3Tip() + .direction(function (d) { + return d.children || d.privChildren ? 'w' : 'e'; + }) + .offset(function (d) { + return d.children || d.privChildren ? [0, -3] : [0, 3]; + }) + .attr('class', 'd3-tip') + .html(function (d) { + return '' + d.valueExtended + ''; + }); + + svg.call(tip); + + const treeData = { + // name: (jsonld.title).slice(0, 25) + "..." || `_${Math.random().toString(10).slice(-7)}`, + name: (jsonld.title).length > 22 ? (jsonld.title).slice(0, 22) + "..." : jsonld.title, + isIdNode: true, + isBlankNode: true, + children: jsonldTree(jsonld, null) + }; + + const root = treeData; + root.x0 = h / 2; + root.y0 = 0; + root.children.forEach(child => collapse(child)); + + function changeSVGWidth(newWidth) { + if (w !== newWidth) { + d3.select(selector + ' > svg').attr('width', newWidth); + } + } + + function getDirectedValue(source, key, parentKey) { + const LRI = '\u2066'; + const RLI = '\u2067'; + const TABLE = { + ar: 'rtl', + fa: 'rtl', + ps: 'rtl', + ur: 'rtl', + hy: 'ltr', + as: 'ltr', + bn: 'ltr', + zb: 'ltr', + ab: 'ltr', + be: 'ltr', + bg: 'ltr', + kk: 'ltr', + mk: 'ltr', + ru: 'ltr', + uk: 'ltr', + hi: 'ltr', + mr: 'ltr', + ne: 'ltr', + ko: 'ltr', + ma: 'ltr', + am: 'ltr', + ti: 'ltr', + ka: 'ltr', + el: 'ltr', + gu: 'ltr', + pa: 'ltr', + he: 'rtl', + iw: 'rtl', + yi: 'rtl', + ja: 'ltr', + km: 'ltr', + kn: 'ltr', + lo: 'ltr', + af: 'ltr', + ay: 'ltr', + bs: 'ltr', + ca: 'ltr', + ch: 'ltr', + cs: 'ltr', + cy: 'ltr', + da: 'ltr', + de: 'ltr', + en: 'ltr', + eo: 'ltr', + es: 'ltr', + et: 'ltr', + eu: 'ltr', + fi: 'ltr', + fj: 'ltr', + fo: 'ltr', + fr: 'ltr', + fy: 'ltr', + ga: 'ltr', + gl: 'ltr', + gn: 'ltr', + gv: 'ltr', + hr: 'ltr', + ht: 'ltr', + hu: 'ltr', + id: 'ltr', + in: 'ltr', + is: 'ltr', + it: 'ltr', + kl: 'ltr', + la: 'ltr', + lb: 'ltr', + ln: 'ltr', + lt: 'ltr', + lv: 'ltr', + mg: 'ltr', + mh: 'ltr', + mo: 'ltr', + ms: 'ltr', + mt: 'ltr', + na: 'ltr', + nb: 'ltr', + nd: 'ltr', + nl: 'ltr', + nn: 'ltr', + no: 'ltr', + nr: 'ltr', + ny: 'ltr', + om: 'ltr', + pl: 'ltr', + pt: 'ltr', + qu: 'ltr', + rm: 'ltr', + rn: 'ltr', + ro: 'ltr', + rw: 'ltr', + sg: 'ltr', + sk: 'ltr', + sl: 'ltr', + sm: 'ltr', + so: 'ltr', + sq: 'ltr', + ss: 'ltr', + st: 'ltr', + sv: 'ltr', + sw: 'ltr', + tl: 'ltr', + tn: 'ltr', + to: 'ltr', + tr: 'ltr', + ts: 'ltr', + ve: 'ltr', + vi: 'ltr', + xh: 'ltr', + zu: 'ltr', + ds: 'ltr', + gs: 'ltr', + hs: 'ltr', + me: 'ltr', + ni: 'ltr', + ns: 'ltr', + te: 'ltr', + tk: 'ltr', + tm: 'ltr', + tp: 'ltr', + tv: 'ltr', + ml: 'ltr', + my: 'ltr', + nq: 'ltr', + or: 'ltr', + si: 'ltr', + ta: 'ltr', + dv: 'rtl', + th: 'ltr', + dz: 'ltr' + }; + + const getDirectionSymbol = dir => (dir === 'ltr') ? LRI : RLI; + + if (!['title', 'description'].includes(key) && !['titles', 'descriptions'].includes(parentKey)) { + return getDirectionSymbol(getDirection(source[key].toString())) + source[key] + } + + if (parentKey === 'titles' || parentKey === 'descriptions') { + // Language tags can be compound like ar-EG or en-US, split when needed + // Also, we ignore the case for language tags + const lookupKey = (key.includes('-')) ? key.split('-')[0] : key.toLowerCase(); + const dir = TABLE[lookupKey]; + if (dir) return getDirectionSymbol(dir) + source[key]; + return getDirectionSymbol('ltr') + source[key]; + } + + let direction; + let lang; + let context = jsonld['@context']; + + if (!Array.isArray(context)) { + context = [context]; + } + + context.forEach(e => { + if (typeof e === 'object') { + if (e['@direction']) direction = e['@direction']; + if (e['@language']) lang = e['@language']; + } + }); + + if (key === 'title' || key === 'description') { + if (direction) return getDirectionSymbol(direction) + source[key]; + if (lang) { + const lookupKey = (lang.includes('-')) ? lang.split('-')[0] : lang.toLowerCase(); + const dir = TABLE[lookupKey]; + if (dir) return getDirectionSymbol(dir) + source[key]; + return getDirectionSymbol('ltr') + source[key]; + } + } + + return getDirectionSymbol(getDirection(source[key].toString())) + source[key] + } + + function jsonldTree(source, parentKey) { + const children = []; + + Object.keys(source).forEach(key => { + if (key === '@id' || key === '@context' || source[key] === null) return; + + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + children.push( + { + name: key, + children: jsonldTree(source[key], key) + } + ); + } else if (Array.isArray(source[key])) { + children.push( + { + name: key, + children: source[key].map((e, j) => { + if (typeof e === 'object') { + return { name: j, children: jsonldTree(e, j) }; + } else { + return { name: e }; + } + }) + } + ); + } else { + const stringLimit = Math.floor(maxLabelWidth / 9); + const d = (`${source[key]}`.length > stringLimit) ? { + name: key, + value: getDirectedValue(source, key, parentKey).slice(0, stringLimit) + '...', + valueExtended: getDirectedValue(source, key, parentKey) + } : { + name: key, + value: getDirectedValue(source, key, parentKey) + }; + + children.push(d); + } + }); + + return children; + } + + function update(source) { + const nodes = tree.nodes(root).reverse(); + const links = tree.links(nodes); + + nodes.forEach(function (d) { d.y = d.depth * maxLabelWidth; }); + + const node = svg.selectAll('g.node') + .data(nodes, function (d) { return d.id || (d.id = ++i); }); + + const nodeEnter = node.enter() + .append('g') + .attr('class', 'node') + .attr('transform', function (d) { return 'translate(' + source.y0 + ',' + source.x0 + ')'; }) + .on('click', click); + + nodeEnter.append('circle') + .attr('r', 0) + .style('stroke-width', function (d) { + return d.isIdNode ? '2px' : '1px'; + }) + .style('stroke', function (d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; + }) + .style('fill', function (d) { + if (d.isIdNode) { + return d.privChildren ? '#F5D76E' : 'white'; + } else { + return d.privChildren ? '#86E2D5' : 'white'; + } + }) + .on('mouseover', function (d) { if (d.valueExtended) tip.show(d); }) + .on('mouseout', tip.hide); + + nodeEnter.append('text') + .attr('x', function (d) { + const spacing = computeRadius(d) + 5; + return d.children || d.privChildren ? -spacing : spacing; + }) + .attr('dy', '4') + .attr('text-anchor', function (d) { return d.children || d.privChildren ? 'end' : 'start'; }) + .text(function (d) { return d.name + (d.value ? ': ' + d.value : ''); }) + .style('fill-opacity', 0); + + const maxSpan = Math.max.apply(Math, nodes.map(function (d) { return d.y + maxLabelWidth; })); + if (maxSpan + maxLabelWidth + 20 > w) { + changeSVGWidth(maxSpan + maxLabelWidth); + d3.select(selector).node().scrollLeft = source.y0; + } + + const nodeUpdate = node.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function (d) { return 'translate(' + d.y + ',' + d.x + ')'; }); + + nodeUpdate.select('circle') + .attr('r', function (d) { return computeRadius(d); }) + .style('stroke-width', function (d) { + return d.isIdNode ? '2px' : '1px'; + }) + .style('stroke', function (d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; + }) + .style('fill', function (d) { + if (d.isIdNode) { + return d.privChildren ? '#F5D76E' : 'white'; + } else { + return d.privChildren ? '#86E2D5' : 'white'; + } + }); + + nodeUpdate.select('text').style('fill-opacity', 1); + + const nodeExit = node.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function (d) { return 'translate(' + source.y + ',' + source.x + ')'; }) + .remove(); + + nodeExit.select('circle').attr('r', 0); + nodeExit.select('text').style('fill-opacity', 0); + + const link = svg.selectAll('path.link') + .data(links, function (d) { return d.target.id; }); + + link.enter().insert('path', 'g') + .attr('class', 'link') + .attr('d', function (d) { + const o = { x: source.x0, y: source.y0 }; + return diagonal({ source: o, target: o }); + }); + + link.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', diagonal); + + link.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', function (d) { + const o = { x: source.x, y: source.y }; + return diagonal({ source: o, target: o }); + }) + .remove(); + + nodes.forEach(function (d) { + d.x0 = d.x; + d.y0 = d.y; + }); + } + + function computeRadius(d) { + if (d.children || d.privChildren) { + return minRadius + (numEndNodes(d) / scalingFactor); + } else { + return minRadius; + } + } + + function numEndNodes(n) { + let num = 0; + if (n.children) { + n.children.forEach(function (c) { + num += numEndNodes(c); + }); + } else if (n.privChildren) { + n.privChildren.forEach(function (c) { + num += numEndNodes(c); + }); + } else { + num++; + } + return num; + } + + function click(d) { + if (d.children) { + d.privChildren = d.children; + d.children = null; + } else { + d.children = d.privChildren; + d.privChildren = null; + } + + update(d); + + // fast-forward blank nodes + if (d.children) { + d.children.forEach(function (child) { + if (child.isBlankNode && child.privChildren) { + click(child); + } + }); + } + } + + function collapse(d, toUpdate = false) { + if (d.children) { + d.privChildren = d.children; + d.privChildren.forEach(child => collapse(child)); + d.children = null; + + if (toUpdate) { + update(d); + } + } + } + + function expand(d, toUpdate = false) { + if (d.privChildren) { + d.children = d.privChildren; + d.children.forEach(child => expand(child)); + d.privChildren = null; + } else if (d.children) { + d.children.forEach(child => expand(child)); + } + + if (toUpdate) update(d); + } + + update(root); + + collapseBtn.addEventListener('click',() => { + collapseBtn.disabled = true + expandBtn.disabled = false + collapse(root, true) + }) + + expandBtn.addEventListener('click', () => { + collapseBtn.disabled = false + expandBtn.disabled = true + expand(root, true) + }) +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/main.js b/packages/web-new/src/scripts/main.js new file mode 100644 index 000000000..ad11ebd99 --- /dev/null +++ b/packages/web-new/src/scripts/main.js @@ -0,0 +1,186 @@ +/** + * @file The `main.js` takes care of setting eventHandlers + * and connecting the functionality of `util.js` with + * the html document. Furthermore it contains the code + * to integrate the monaco editor + */ + +import { visualizeTab } from './visualize' +import './editor' +import './json-yaml' +import './settings-menu' +import './save-menu' +import './examples-menu' +import './console' +import './open-api' +import './async-api' +import './defaults' +import './visualize' +import './validation' + + +/***********************************************************/ +/* Loader */ +/***********************************************************/ +//Show loader until the document is fully loaded +const loader = document.querySelector(".loader-container") +let stateCheck = setInterval(() => { + if (document.readyState === 'complete') { + clearInterval(stateCheck) + loader.classList.add("hidden") + } +}, 100) + +/***********************************************************/ +/* Resizing functionality */ +/***********************************************************/ +const textIcon = document.querySelectorAll(".text-icon") +const resizerY = document.querySelector(".horizontal-divider") +const resizerX = document.querySelector(".vertical-divider") + +/*** Horizontal sizing section ***/ + +/** + * Mouse down event listener for the resizerX element which + * then runs the onmousemoveX and the onmouseupX functions + * @param {event} e - the mousedown event + */ +resizerX.addEventListener("mousedown", (e) => { + e.preventDefault() + document.addEventListener("mousemove", onmousemoveX) + document.addEventListener("mouseup", onmouseupX) +}) + +/** + * Function to calculate the x position of the element to be + * dragged and resize the right and left elements + * @param {event} e - the mousemove event + */ +function onmousemoveX(e) { + e.preventDefault() + let clientX = e.clientX + const deltaX = clientX - (resizerX.clientX || clientX) + const l = resizerX.previousElementSibling + const r = resizerX.nextElementSibling + + if (clientX > screen.width) { + resizerX.clientX = screen.width + } + else if (clientX < 0) { + resizerX.clientX = 0 + } + else { + resizerX.clientX = clientX + + // LEFT + if (deltaX < 0) { + const w = Math.round(parseInt(getComputedStyle(l).width) + deltaX) + l.style.flex = `0 ${w < 45 ? 30 : w}px` + r.style.flex = "1 0" + if (w < 65) { + textIcon.forEach(text => { + text.classList.add("hiddenH") + }) + } + } + + // RIGHT + if (deltaX > 0) { + const w = Math.round(parseInt(getComputedStyle(l).width) + deltaX) + l.style.flex = `0 ${w > 65 ? 80 : w}px` + r.style.flex = "1 0" + if (w > 65) { + textIcon.forEach(text => { + text.classList.remove("hiddenH") + }) + } + } + } +} + +/** + * Function to remove the mousemove and mouseup events + * and stop the onmousemoveX and onmouseupX functions + * @param {event} e - the mouseup event + */ +function onmouseupX(e) { + e.preventDefault() + document.removeEventListener("mousemove", onmousemoveX) + document.removeEventListener("mouseup", onmouseupX) + delete e.clientX +} + + +/*** Vertical sizing section ***/ + +/** + * Mouse down event listener for the resizerY element which + * then runs the onmousemoveY and the onmouseupY functions + * @param {event} e - the mousedown event + */ +resizerY.addEventListener("mousedown", (e) => { + e.preventDefault() + document.addEventListener("mousemove", onmousemoveY) + document.addEventListener("mouseup", onmouseupY) +}) + +/** + * Function to calculate the y position of the element to be + * dragged and resize the top and bottom elements + * @param {event} e - the mousemove event + */ +function onmousemoveY(e) { + e.preventDefault() + const clientY = e.clientY + const deltaY = clientY - (resizerY.clientY || clientY) + const t = resizerY.previousElementSibling + const b = resizerY.nextElementSibling + + if (clientY > screen.height) { + resizerY.clientY = screen.height + } + else if (clientY < 0) { + resizerY.clientY = 0 + } + else { + resizerY.clientY = clientY + // DOWN + if (deltaY > 0) { + const h = Math.round(parseInt(getComputedStyle(b).height) - deltaY) + b.style.flex = `0 ${h < 55 ? 50 : h}px` + t.style.flex = "1 0" + if (Math.round(parseInt(getComputedStyle(t).height) + deltaY) > 290) { + textIcon.forEach(text => { + text.classList.remove("hiddenV") + }) + } + } + // UP + if (deltaY < 0) { + const h = Math.round(parseInt(getComputedStyle(t).height) + deltaY) + t.style.flex = `0 ${h < 210 ? 200 : h}px` + b.style.flex = "1 0" + if (h < 290) { + textIcon.forEach(text => { + text.classList.add("hiddenV") + }) + } + } + } +} + +/** + * Function to remove the mousemove and mouseup events + * and stop the onmousemoveY and onmouseupY functions + * @param {event} e - the mouseup event + */ +function onmouseupY(e) { + e.preventDefault() + document.removeEventListener("mousemove", onmousemoveY) + document.removeEventListener("mouseup", onmouseupY) + delete e.clientY + + if(visualizeTab.checked === true){ + visualizeTab.click() + } +} diff --git a/packages/web-new/src/scripts/monochrome-theme.js b/packages/web-new/src/scripts/monochrome-theme.js new file mode 100644 index 000000000..6d92a66b1 --- /dev/null +++ b/packages/web-new/src/scripts/monochrome-theme.js @@ -0,0 +1,71 @@ +const themeData = { + "base": "vs-dark", + "inherit": true, + "rules": [ + { 'token': '', 'foreground': 'ffffff', 'background': '549087' }, + { 'token': 'invalid', 'foreground': 'f44747' }, + { 'token': 'emphasis', 'fontStyle': 'italic' }, + { 'token': 'strong', 'fontStyle': 'bold' }, + + { 'token': 'variable', 'foreground': 'ffbb00' }, + { 'token': 'variable.predefined', 'foreground': 'ffbb00' }, + { 'token': 'variable.parameter', 'foreground': 'ffbb00' }, + { 'token': 'constant', 'foreground': 'ffbb00' }, + { 'token': 'comment', 'foreground': '7b2d8a' }, + { 'token': 'number', 'foreground': 'fffffe' }, + { 'token': 'number.hex', 'foreground': 'fffffe' }, + { 'token': 'regexp', 'foreground': 'be3989' }, + { 'token': 'annotation', 'foreground': 'cc6666' }, + { 'token': 'type', 'foreground': '00fcce' }, + + { token: 'delimiter', foreground: 'ffffff' }, + { token: 'delimiter.html', foreground: '808080' }, + { token: 'delimiter.xml', foreground: '808080' }, + + { token: 'tag', foreground: '7b2d8a' }, + { token: 'tag.id.pug', foreground: '7b2d8a' }, + { token: 'tag.class.pug', foreground: '7b2d8a' }, + { token: 'meta.scss', foreground: 'A79873' }, + { token: 'meta.tag', foreground: 'd1744f' }, + { token: 'metatag', foreground: 'DD6A6F' }, + { token: 'metatag.content.html', foreground: 'ffbb00' }, + { token: 'metatag.html', foreground: 'ffbb00' }, + { token: 'metatag.xml', foreground: 'ffbb00' }, + { token: 'metatag.php', fontStyle: 'bold' }, + + { token: 'key', foreground: 'ffbb00' }, + { token: 'string.key.json', foreground: 'ffbb00' }, + { token: 'string.value.json', foreground: 'd06c44' }, + + { token: 'attribute.name', foreground: 'ffbb00' }, + { token: 'attribute.value', foreground: 'd06c44' }, + { token: 'attribute.value.number.css', foreground: '6ca74c' }, + { token: 'attribute.value.unit.css', foreground: '6ca74c' }, + { token: 'attribute.value.hex.css', foreground: 'D4D4D4' }, + + { token: 'string', foreground: 'd06c44' }, + { token: 'string.sql', foreground: 'FF0000' }, + + { token: 'keyword', foreground: 'ffbb00' }, + { token: 'keyword.flow', foreground: 'b33ea9' }, + { token: 'keyword.json', foreground: 'd06c44' }, + { token: 'keyword.flow.scss', foreground: 'ffbb00' }, + + { token: 'operator.scss', foreground: '909090' }, + { token: 'operator.sql', foreground: 'ffbb00' }, + { token: 'operator.swift', foreground: '909090' }, + { token: 'predefined.sql', foreground: 'FF00FF' }, + ], + "colors": { + "editor.foreground": "#FFFFFF", + "editor.background": "#549087", + "editor.selectionBackground": "#73597EE0", + "editor.lineHighlightBackground": "#067362", + "editorCursor.foreground": "#FFFFFF" + } +} + +export default themeData +// export function themeData() { +// return somerandom = 24 +// } \ No newline at end of file diff --git a/packages/web-new/src/scripts/open-api.js b/packages/web-new/src/scripts/open-api.js new file mode 100644 index 000000000..1f8d10fcf --- /dev/null +++ b/packages/web-new/src/scripts/open-api.js @@ -0,0 +1,76 @@ +/** + * @file The `open-api.js` takes care of the main functionality for the + * OpenAPI feature within the console. This include initializing the editor, + * connecting it to the local storage, as well as the main buttons within the OpenAPI + * feature such as json, yaml conversion and the download option. + */ + +import { editor } from 'monaco-editor' +import { setFontSize, editorForm, fontSizeSlider } from './settings-menu' +import { generateTD, offerFileDownload } from './util' +import { getEditorData } from './editor' + +/******************************************************************/ +/* OpenAPI functionality */ +/******************************************************************/ + +//OpenAPI Elements +export const openApiTab = document.querySelector(".api-tab-btn") +export const openApiJsonBtn = document.querySelector("#open-api-json") +export const openApiYamlBtn = document.querySelector("#open-api-yaml") +export const openApiView = document.querySelector("#open-api-view") +const openApiDownload = document.querySelector("#open-api-download") + +/** + * Initialize the monaco editor for the OpenAPI feature, sets it to an empty value, + * a default language of json and as a read only document. Also it connects the editor + * to the local storage to change the fontsize correspondingly + */ +async function initOpenApiEditor() { + window.openApiEditor = editor.create(document.getElementById('open-api-container'), { + value: "", + language: "json", + automaticLayout: true, + readOnly: true, + formatOnPaste: true + }) + + document.onload = setFontSize(window.openApiEditor) + fontSizeSlider.addEventListener("input", () => { + setFontSize(window.openApiEditor) + }) + + //Bind the reset button form the settings to the editor and assign the specied font size + editorForm.addEventListener("reset", () => { + setFontSize(window.openApiEditor) + }) +} + +initOpenApiEditor() + +//Json conversion btn +openApiJsonBtn.addEventListener("click", () => { + generateTD("json", window.openApiEditor) + openApiJsonBtn.disabled = true + openApiYamlBtn.disabled = false +}) + +//Yaml conversion btn +openApiYamlBtn.addEventListener("click", () => { + generateTD("yaml", window.openApiEditor) + openApiJsonBtn.disabled = false + openApiYamlBtn.disabled = true +}) + +//Donwload btn +openApiDownload.addEventListener("click", () => { + const editorData = getEditorData(window.openApiEditor) + const contentType = `application/${editorData[0]};charset=utf-8;` + const visualizationName = editorData[2]["info"]["title"].replace(/\s/g, "-") + + offerFileDownload( + `${visualizationName}-OpenAPI.${editorData[0]}`, + window.openApiEditor.getModel().getValue(), + contentType + ) +}) \ No newline at end of file diff --git a/packages/web-new/src/scripts/save-menu.js b/packages/web-new/src/scripts/save-menu.js new file mode 100644 index 000000000..ce4295f60 --- /dev/null +++ b/packages/web-new/src/scripts/save-menu.js @@ -0,0 +1,213 @@ +/** + * @file The `save-menu.js` handle the main functionality for the save menu + * such as generating a sharable link, allowing to open such link in a new playground + * tab, or in ediTDor. As well as allowing the user to download the current TD/TM or + * save it directly in their file system. + */ + +import { save, openEditdor, offerFileDownload } from "./util" +import { editorList, getEditorData } from "./editor" + +/***********************************************************/ +/* Save Menu functionality */ +/***********************************************************/ +const saveMenu = document.querySelector(".save-menu") +const saveMenuBtn = document.querySelector("#save-btn") +const closeSaveMenu = document.querySelector(".save-menu-close i") +const shareUrlContainer = document.querySelector("#share-url-input") +const openUrlTab = document.querySelector("#open-url-tab") +const thingTypeText = document.querySelector('#thing-type-text') +const shareUrlBtn = document.querySelector("#share-url-btn") +const openEditdorBtn = document.querySelector('#open-editdor-btn') +const downloadBtn = document.querySelector("#download-btn") +const saveAsBtn = document.querySelector("#save-as-btn") +const saveAsWarning = document.querySelector(".save-warning") +let fileHandle; +openUrlTab.disabled = true +shareUrlContainer.value = "" + +//Open the save menu and change the text depending on the Thing type (TD or TM) +saveMenuBtn.addEventListener("click", () => { + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + const editorValues = getEditorData(editorInstance) + thingTypeText.innerText = editorValues[1].toUpperCase() + } + }) + saveMenu.classList.remove("closed") +}) + +//Hide save menu +closeSaveMenu.addEventListener("click", () => { + saveMenu.classList.add("closed") + shareUrlContainer.value = "" + openUrlTab.disabled = true +}) + +/** + * Get the active editor, the format type, doc type and editor + * and call the saveAsURL function + */ +shareUrlBtn.addEventListener("click", () => { + try { + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + const editorValues = getEditorData(editorInstance) + + saveAsURL(editorValues[0], editorValues[1], editorValues[2]) + } + }) + } catch (err) { + console.error(err); + shareUrlContainer.value = "Invalid JSON Object" + shareUrlContainer.classList.add("error") + setTimeout(() => { + shareUrlContainer.value = "" + shareUrlContainer.classList.remove("error") + }, 1500) + } +}) + +/** + * Get the doc type, format type and editor and calls the utils save function + * It then copies the link the url container + * @param { String } docType - tm or td + * @param { String } format - json or yaml + * @param { Object } editor - the editor reference object + */ +async function saveAsURL(formatType, thingType, editorContent){ + const URL = await save(formatType, thingType, editorContent) + if(URL !== undefined){ + shareUrlContainer.value = URL + openUrlTab.disabled = false + } +} + +/** + * Get the active editor, the format type, doc type and editor + * and call the openEditdor function from utils + */ +openEditdorBtn.addEventListener("click", () => { + try { + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + const editorValues = getEditorData(editorInstance) + + openEditdor(editorValues[0], editorValues[1], editorInstance) + } + }) + } catch (err) { + console.error(err); + shareUrlContainer.value = "Invalid JSON Object" + shareUrlContainer.classList.add("error") + setTimeout(() => { + shareUrlContainer.value = "" + shareUrlContainer.classList.remove("error") + }, 1500) + } +}) + +/** + * Open the generated sharable link in a new playground tab + */ +openUrlTab.addEventListener("click", () => { + if(shareUrlContainer.value !== "" || shareUrlContainer.value !== "Invalid JSON Object"){ + window.open(shareUrlContainer.value, '_blank'); + } +}) + +/** + * Gets the active editor, editor content type and tab name, + * then it calls the utils offerFileDownload + */ +downloadBtn.addEventListener("click", () => { + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + const editorValues = getEditorData(editorInstance) + let tabName = editorValues[2]["title"].replaceAll(' ', '-') + const contentType = `application/${editorValues[0]};charset=utf-8;` + + offerFileDownload(`${tabName}.${editorValues[0]}`, editorInstance.getValue(), contentType) + } + }) + saveMenu.classList.add("closed") +}) + +/* Save as btn functionality */ +saveAsBtn.addEventListener("click", () => { + saveAsFile() +}) + +/** + * Saves the td as a file in the file system + * @param {*} content + */ +async function saveFileInSystem(content){ + let stream = await fileHandle.createWritable() + await stream.write(content) + await stream.close() +} + +/** + * Opens the file system allows the user to input a file + * name and save it as json , jsonld or yaml + * This function only works for chrome, edge and oper as of now (26.05.2023) + */ +async function saveAsFile(){ + try{ + let fileName = "" + let editorContent = "" + let acceptOpts = {} + let acceptDesc = "" + editorList.forEach(editorInstance => { + if(editorInstance["_domElement"].classList.contains("active")){ + const editorValues = getEditorData(editorInstance) + fileName = `${editorValues[2]["title"]}.${editorValues[0]}` + editorContent = editorInstance.getValue() + acceptOpts = editorValues[0] === "json" ? { "text/plain": [".jsonld", ".json"] } : { "text/plain": [".yaml"] } + acceptDesc = editorValues[0] === "json" ? "json or jsonld files only" : "yaml files only" + } + }) + + + const opts = { + suggestedName : fileName, + types: [ + { + description: acceptDesc, + accept: acceptOpts, + }, + ], + excludeAcceptAllOption: true, + } + + fileHandle = await window.showSaveFilePicker(opts) + + saveFileInSystem(editorContent) + + }catch(err){ + const errTxt = `${err}` + if(errTxt === "AbortError: The user aborted a request.") + { + console.error(err) + } + else{ + saveAsWarning.classList.add("active") + setTimeout(() => { + saveAsWarning.classList.remove("active") + },1500) + } + } +} + +//TODO IMPORT FROM FILES +/** Experimental file manager fucntion*/ +// const visualizeView = document.querySelector("#visualize-view p") +// async function getFile() { +// // Open file picker and destructure the result the first handle +// [fileHandle] = await window.showOpenFilePicker() +// let fileData = await fileHandle.getFile() +// let text = await fileData.text() +// visualizeView.innerText = text +// console.log(JSON.parse(text)); +// } \ No newline at end of file diff --git a/packages/web-new/src/scripts/settings-menu.js b/packages/web-new/src/scripts/settings-menu.js new file mode 100644 index 000000000..0ae4c71d2 --- /dev/null +++ b/packages/web-new/src/scripts/settings-menu.js @@ -0,0 +1,146 @@ +/** + * @file The `settings.js` contains the main functionality + * for the settings menu, such as event handlers, toggle buttons, + * application preferences and themes. The preferences and themes are + * subsequently stored in the local storage + */ + +import { editor } from 'monaco-editor' +import themeData from './monochrome-theme' + +/***********************************************************/ +/* Settings menu */ +/***********************************************************/ +const closeSettings = document.querySelector(".settings__close i"); +const settingsMenu = document.querySelector(".settings-menu"); +const settingsBtn = document.querySelector("#settings-btn"); +export const editorForm = document.querySelector(".settings__editor") +const themePicker = document.querySelector("#theme-picker") +const fontSizeTxt = document.querySelector(".editor-font-size") +export const fontSizeSlider = document.querySelector("#font-size") +const autoValidateBtn = document.querySelector('#auto-validate') +const resetLoggingBtn = document.querySelector('#reset-logging') +const validateJSONLDBtn = document.querySelector('#validate-jsonld') +const tmConformanceBtn = document.querySelector('#tm-conformance') + +/***********************************************************/ +/* Set New Theme Monaco editor */ +/***********************************************************/ +editor.defineTheme('monochrome', themeData) + +//set the stored theme (if any)" +document.onload = setTheme() + + +//Bind the font size text to the slider element +fontSizeTxt.innerText = fontSizeSlider.value + +/** + * Event listeners to open and close the settings menu + */ +closeSettings.addEventListener("click", () => { + settingsMenu.classList.add("closed"); +}) + +settingsBtn.addEventListener("click", () => { + settingsMenu.classList.toggle("closed") +}) + +/** + * Event listener for reseting all the settings and preferences values + * @param {event} e - reset event + */ +editorForm.addEventListener("reset", (e) => { + e.preventDefault() + + //reset preference values + fontSizeSlider.value = 14 + fontSizeTxt.innerText = fontSizeSlider.value + themePicker.value = "light-mode" + document.documentElement.className = themePicker.value + storeTheme(themePicker.value) + storeFontSize(fontSizeSlider.value) + setMonacoTheme(themePicker.value) + + //resetting all toggle btns + autoValidateBtn.checked = false + resetLoggingBtn.checked = true + validateJSONLDBtn.checked = true + tmConformanceBtn.checked = true +}) + +/** + * Event listener to change the theme when the theme select input is changed + */ +themePicker.addEventListener("change", () => { + storeTheme(themePicker.value) + document.documentElement.className = themePicker.value + setMonacoTheme(themePicker.value) +}) + +/** + * Event listener to update the font size in the settings menu text + * and in the monaco editor when the font size input is changed + */ +fontSizeSlider.addEventListener("input", () => { + fontSizeTxt.innerText = fontSizeSlider.value + storeFontSize(fontSizeSlider.value) +}) + + +/***********************************************************/ +/* Themes picker and font picker functionality */ +/***********************************************************/ + +/** + * Store the selected themek in the localStorage + * @param {String} theme - the name of the theme + */ +function storeTheme (theme) { + localStorage.setItem("theme", theme) +} + +/** + * Store the selected font size in the localStorage + * @param {Number} fontSize - The number of the font size + */ +function storeFontSize (fontSize) { + localStorage.setItem("fontSize", fontSize) +} + +/** + * Gets the theme value from the localStorage and sets the new theme + */ +function setTheme () { + const activeTheme = localStorage.getItem("theme") === null ? 'light-mode' : localStorage.getItem("theme") + themePicker.value = activeTheme + document.documentElement.className = activeTheme + setMonacoTheme(activeTheme) +} + +/** + * Function which gets the value from the localStorage and sets the new font size + * @param {object} editor - the editor object which references the created monaco editor + */ +export function setFontSize (editorInstance) { + const activeFontSize = localStorage.getItem("fontSize") === null ? '14' : localStorage.getItem("fontSize") + fontSizeTxt.innerText = activeFontSize + fontSizeSlider.value = activeFontSize + editorInstance.updateOptions({ + fontSize: activeFontSize + }) +} + +/** + * Get the current page theme and implement it for the monaco editor as well + * @param { String } theme - the name of the current or wanted theme + */ +function setMonacoTheme(theme){ + if (theme == "dark-mode") { + editor.setTheme('vs-dark') + }else if (theme == "light-mode") { + editor.setTheme('vs') + }else{ + editor.setTheme('monochrome') + } +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/util.js b/packages/web-new/src/scripts/util.js new file mode 100644 index 000000000..aaa236bec --- /dev/null +++ b/packages/web-new/src/scripts/util.js @@ -0,0 +1,560 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + +/** + * @file The `util.js` contains the core + * functionality the `@thing-description-playground/web` offers. It takes + * care of integrating other playground packages + * and offers a few utility functions. + */ + +import { editor } from 'monaco-editor' +import { convertTDJsonToYaml, convertTDYamlToJson, tdValidator, tmValidator, compress, decompress } from '../../../core/dist/web-bundle.min.js' +import tdToOpenAPI from '../../../td_to_openapi/dist/web-bundle.min.js' +import tdToAsyncAPI from '../../../td_to_asyncapi/dist/web-bundle.min.js' +import { addDefaults, removeDefaults } from '../../../defaults/dist/web-bundle.min.js' +import { validateJsonLdBtn, tmConformanceBtn, sectionHeaders } from './validation' + + +let errorMessages = [] +/** + * Fetch the TD from the given address and return the JSON object + * @param {string} urlAddr url of the TD to fetch + */ +export function getTdUrl(urlAddr) { + return new Promise(resolve => { + + fetch(urlAddr) + .then(res => res.json()) + .then(data => { + resolve(data) + }, err => { alert("JSON could not be fetched from: " + urlAddr + "\n Error: " + err) }) + + }) +} + +//TODO : Remove function? +// /** +// * Fetch the File from the given address and return the content as string +// * @param {string} urlAddr url of the TD to fetch +// */ +// function getTextUrl(urlAddr){ +// return new Promise( resolve => { + +// fetch(urlAddr) +// .then(res => res.text()) +// .then(data => { +// resolve(data) +// }, err => {alert("Text could not be fetched from: " + urlAddr + "\n Error: " + err)}) +// }) +// } + + +/** + * Offers a given content for download as a file. + * @param {string} fileName The title of the csv file + * @param {string} content The content of the csv file + * @param {string} type The content-type to output, e.g., text/csv;charset=utf-8; + */ +export function offerFileDownload(fileName, content, type) { + + const blob = new Blob([content], { type }); + if (navigator.msSaveBlob) { // IE 10+ + navigator.msSaveBlob(blob, fileName); + } else { + const link = document.createElement("a"); + if (link.download !== undefined) { // feature detection + // Browsers that support HTML5 download attribute + const url = URL.createObjectURL(blob) + link.setAttribute("href", url) + link.setAttribute("download", fileName) + link.setAttribute("src", url.slice(5)) + link.style.visibility = "hidden"; + document.body.appendChild(link) + link.click(); + document.body.removeChild(link) + URL.revokeObjectURL(url) + } + } + +} + +/** + * Generates an TD instance from + * the TD in the Editor + * @param {"json"|"yaml"} fileType + */ +export function generateTD(fileType, editorInstance) { + return new Promise((res, rej) => { + const tdToValidate = editorInstance.getValue() + + if (tdToValidate === "") { + rej("No TD given to generate TD instance") + } + else if (fileType !== "json" && fileType !== "yaml") { + rej("Wrong content type required: " + fileType) + } + else { + try { + const content = fileType === "json" + ? JSON.stringify(JSON.parse(convertTDYamlToJson(tdToValidate)), undefined, 4) + : convertTDJsonToYaml(tdToValidate) + + editor.setModelLanguage(editorInstance.getModel(), fileType) + editorInstance.setValue(content) + } catch (err) { + rej("TD generation problem: " + err) + } + } + }) +} + +/** + * Generates an OpenAPI instance from + * the TD in the Editor + * @param {"json"|"yaml"} fileType + */ +export function generateOAP(fileType, editorInstance) { + return new Promise((res, rej) => { + const tdToValidate = fileType === "json" + ? editorInstance.getValue() + : convertTDYamlToJson(editorInstance.getValue()) + + if (tdToValidate === "") { + rej("No TD given to generate OpenAPI instance") + } + else if (fileType !== "json" && fileType !== "yaml") { + rej("Wrong content type required: " + fileType) + } + else { + tdToOpenAPI(JSON.parse(tdToValidate)).then(openAPI => { + const content = fileType === "json" ? JSON.stringify(openAPI[fileType], undefined, 4) : openAPI[fileType] + editor.setModelLanguage(window.openApiEditor.getModel(), fileType) + window.openApiEditor.getModel().setValue(content) + }, err => { rej("OpenAPI generation problem: " + err) }) + } + }) +} + +/** + * Generates an AsyncAPI instance from + * the TD in the Editor + * @param {"json"|"yaml"} fileType + */ +export function generateAAP(fileType, editorInstance) { + return new Promise((res, rej) => { + const tdToValidate = fileType === "json" + ? editorInstance.getValue() + : convertTDYamlToJson(editorInstance.getValue()) + + if (tdToValidate === "") { + rej("No TD given to generate AsyncAPI instance") + } + else if (fileType !== "json" && fileType !== "yaml") { + rej("Wrong content type required: " + fileType) + } + else { + tdToAsyncAPI(JSON.parse(tdToValidate)).then(asyncAPI => { + const content = fileType === "json" ? JSON.stringify(asyncAPI[fileType], undefined, 4) : asyncAPI[fileType] + editor.setModelLanguage(window.asyncApiEditor.getModel(), fileType) + window.asyncApiEditor.getModel().setValue(content) + }, err => { rej("AsyncAPI generation problem: " + err) }) + } + }) +} + +/** + * applies adding unset default values + * to the TD in the editor + */ +export function addDefaultsUtil(editorInstance) { + const tdToExtend = editorInstance["_domElement"].dataset.modeId === "json" + ? JSON.parse(editorInstance.getValue()) + : JSON.parse(convertTDYamlToJson(editorInstance.getValue())) + addDefaults(tdToExtend) + window.defaultsEditor.getModel().setValue(JSON.stringify(tdToExtend, undefined, 4)) + editor.setModelLanguage(window.defaultsEditor.getModel(), editorInstance["_domElement"].dataset.modeId) + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + generateTD("yaml", window.defaultsEditor) + } +} + +/** + * applies removing explicitly given + * default values from the TD + * in the editor + */ +export function removeDefaultsUtil(editorInstance) { + const tdToReduce = editorInstance["_domElement"].dataset.modeId === "json" + ? JSON.parse(editorInstance.getValue()) + : JSON.parse(convertTDYamlToJson(editorInstance.getValue())) + removeDefaults(tdToReduce) + window.defaultsEditor.getModel().setValue(JSON.stringify(tdToReduce, undefined, 4)) + editor.setModelLanguage(window.defaultsEditor.getModel(), editorInstance["_domElement"].dataset.modeId) + if (editorInstance["_domElement"].dataset.modeId === "yaml") { + generateTD("yaml", window.defaultsEditor) + } +} + +/** + * Calls the Validator of the core package and updates the status of the console categories + * @param {string} body Thing Description/Thing Model to validate + * @param {string} docType "td" or "tm" + * @param {*} source "manual" or "auto" + */ +export function validate(thingType, editorContent) { + + resetValidationStatus() + + const checkJsonLd = validateJsonLdBtn.checked + const checkTmConformance = tmConformanceBtn.checked + + const validator = thingType === "td" ? tdValidator : tmValidator + + validator(editorContent, log, { checkDefaults: true, checkJsonLd, checkTmConformance }) + .then(result => { + // console.log(result) + Object.keys(result.report).forEach(el => { + const spotName = "spot-" + el + document.getElementById(spotName).removeAttribute('open') + const resultIcon = document.getElementById(spotName).children[0].children[0] + if (result.report[el] === "passed") { + resultIcon.classList.remove("fa-spinner") + resultIcon.classList.add("fa-circle-check") + } + else if (result.report[el] === "warning") { + resultIcon.classList.remove("fa-spinner") + resultIcon.classList.add("fa-circle-exclamation") + + } + else if (result.report[el] === "failed") { + resultIcon.classList.remove("fa-spinner") + resultIcon.classList.add("fa-circle-xmark") + } + else if (result.report[el] === null) { + resultIcon.classList.remove("fa-spinner") + resultIcon.classList.add("fa-circle") + } + else { + console.error("unknown report feedback value") + } + }) + + Object.keys(result.details).forEach(el => { + const detailsName = el + "-section" + if (document.getElementById(detailsName)) { + document.getElementById(detailsName).removeAttribute('open') + const detailsIcon = document.getElementById(detailsName).children[0].children[0] + + if (result.details[el] === "passed") { + detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.add("fa-circle-check") + } + else if (result.details[el] === "warning" || result.details[el] === "not-impl") { + detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.add("fa-circle-exclamation") + } + else if (result.details[el] === "failed") { + detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.add("fa-circle-xmark") + } + else if (result.details[el] === null) { + detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.add("fa-circle") + } + else { + console.error("unknown report feedback value") + } + } + }) + + Object.keys(result.detailComments).forEach(el => { + const detailsName = el + "-section" + + if (document.querySelector(`#${detailsName} .description`)) { + const detailsDesc = document.querySelector(`#${detailsName} .description`) + + detailsDesc.textContent = result.detailComments[el] + } + }) + + populateCategory(errorMessages) + }) +} + +/** + * Resets the status of the validation headers, as well as the error message list + */ +function resetValidationStatus() { + while (errorMessages.length > 0) { + errorMessages.pop() + } + sectionHeaders.forEach(header => { + const headerIcon = header.children[0] + if (!headerIcon.classList.contains("fa-spinner")) { + headerIcon.classList.remove("fa-circle-check", "fa-circle-exclamation", "fa-circle-xmark", "fa-circle") + headerIcon.classList.add("fa-spinner") + } + }) +} + +/** + * Logs the error messages provided by the Validator + * @param { String } message - text sent from the validator + */ +function log(message) { + errorMessages.push(message) +} + +//TODO: This function should only be used for the moment being as it should be changed or adpated when the corresponding changes to the Validator have been finalized +/** + * Populates the error messages on the categories where the validation has failed or has a warning + * @param { Array } messagesList - Array of error messages + */ +function populateCategory(messagesList) { + // console.log(messagesList); + document.querySelectorAll("#spot-json, #spot-schema, #spot-defaults, #spot-jsonld, #spot-additional").forEach(category => { + const categoryContainer = category.querySelector("ul.section-content") + categoryContainer.classList.add("empty") + while (categoryContainer.children.length > 0) { + categoryContainer.children[0].remove() + } + if (category.children[0].children[0].classList.contains("fa-circle-xmark") || category.children[0].children[0].classList.contains("fa-circle-exclamation")) { + const noticePrompt = document.createElement("p") + noticePrompt.textContent = "*This feature is still in the testing phase, and it may not refer to the correct source of the error*" + noticePrompt.classList.add("notice-prompt") + categoryContainer.append(noticePrompt) + messagesList.forEach(message => { + const listElement = document.createElement("li") + listElement.textContent = message + categoryContainer.append(listElement) + }) + categoryContainer.classList.remove("empty") + } + }) +} + +/** + * Save current TD/TM as a compressed string in URL fragment. + * @param {string} docType "td" or "tm" + * @param {string} format "json" or "yaml" + */ +export async function save(formatType, thingType, editorContent) { + + const value = JSON.stringify(editorContent) + if (!value) { + alert(`No ${thingType.toUpperCase()} provided`); + return; + } + + const data = thingType + formatType + value + const compressed = compress(data) + return `${window.location.href}#${compressed}` +} + +/** + * Save current TD/TM as a compressed string in URL fragment to be opened with ediTDor. + * @param {string} docType "td" or "tm" + * @param {string} format "json" or "yaml" + */ +export async function openEditdor(formatType, thingType, editorInstance) { + + const value = formatType === "yaml" ? convertTDYamlToJson(editorInstance.getValue()) : editorInstance.getValue() + if (!value) { + alert(`No ${thingType.toUpperCase()} provided`) + return; + } + const data = thingType + formatType + value + const compressed = compress(data) + const URL = `https://eclipse.github.io/editdor/?td=${compressed}` + window.open(URL, '_blank') +} + +/** + * Given a URL fragment construct current value of an editor. + */ +export function getEditorValue(fragment) { + const data = decompress(fragment) + return data || ''; +} + +// Monaco Location Pointer + +/** + * Finds the location/path of the text in JSON from its Monaco Editor location + * @param {string} The text/keyword which is searched on the editor + * @param {ITextModel} The text model of Monaco editor + */ +export function findJSONLocationOfMonacoText(text, textModel) { + const matches = textModel.findMatches(text, false, false, false, null, false) + const results = [] + + matches.forEach(match => { + const path = searchPath(textModel, getEndPositionOfMatch(match)) + results.push({ match, path }) + }) + + return results +} + +const QUOTE = '"' +const LEFT_BRACKET = "{" +const RIGHT_BRACKET = "}" +const SEMICOLON = ":" +const LEFT_SQUARE_BRACKET = "[" +const RIGHT_SQUARE_BRACKET = "]" +const COMMA = "," + +/** + * Looks for specific characters on the model to figure out the path of the position/search text + * @param {ITextModel} textModel The text model of Monaco Edtior + * @param {IPosition} position The position on Monaco editor which consists of column and line number + * @returns A string that is the path of the searched text. Search is done with the text's position on the editor + */ +function searchPath(textModel, position) { + let path = '/' + let parentKey = '' + const stack = [] + let recordingParent = false + let isValue = true + let commaCount = 0 + + for (let i = position.lineNumber; i > 0; i--) { + const currentColumnIndex = (i === position.lineNumber ? position.column : textModel.getLineLength(i)) - 1 + const lineContent = textModel.getLineContent(i) + for (let j = currentColumnIndex; j >= 0; j--) { + const currentChar = lineContent[j] + + if (recordingParent) { + if (currentChar === QUOTE) { + if (stack[stack.length - 1] === QUOTE) { + stack.pop() + path = "/" + parentKey + path + parentKey = "" + recordingParent = false + } else { + stack.push(currentChar) + continue + } + } + + if (stack[stack.length - 1] === QUOTE) { + parentKey = currentChar + parentKey + continue + } + } else { + if (currentChar === SEMICOLON) { + recordingParent = isValue + + if (stack.length > 0) { + const top = stack[stack.length - 1] + + if (top === LEFT_SQUARE_BRACKET) { + parentKey = "/" + commaCount.toString() + stack.pop() + recordingParent = true + } + + if (top === LEFT_BRACKET) { + stack.pop() + recordingParent = true + } + } + } + + if (currentChar === LEFT_SQUARE_BRACKET) { + isValue = false + if (stack.length > 0) { + if (stack[stack.length - 1] === RIGHT_SQUARE_BRACKET) { + stack.pop() + } + + if (stack[stack.length - 1] === LEFT_BRACKET) { + stack.pop() + stack.push(currentChar) + } + } else { + commaCount = 0 + stack.push(currentChar) + } + } + + if (currentChar === LEFT_BRACKET) { + isValue = false + if (stack.length > 0 && stack[stack.length - 1] === RIGHT_BRACKET) { + stack.pop() + } else { + commaCount = 0 + stack.push(currentChar) + } + } + + if (currentChar === COMMA) { + isValue = false + if (stack.length <= 1) { + commaCount++ + } + } + + if (currentChar === RIGHT_SQUARE_BRACKET) { + isValue = false + stack.push(currentChar) + } + + if (currentChar === RIGHT_BRACKET) { + isValue = false + stack.push(currentChar) + } + } + } + } + + return path +} + +/** + * Gets the end position of a match + * @param {FindMatch} match + * @returns The object contains the end column and line number of a match + */ +function getEndPositionOfMatch(match) { + return { + column: match.range.endColumn, + lineNumber: match.range.endLineNumber + } +} + +/** + * Finds the location of the text in Monaco Editor from its JSON location/path + * @param {string} jsonPath The JSON path of the searched text + * @param {string} text The text that is being searched + * @param {ITextModel} textModel The text model of Monaco editor + * @returns The location of the text on Monaco editor by describing its column and line number range + */ +export function findMonacoLocationOfJSONText(jsonPath, text, textModel) { + const results = findJSONLocationOfMonacoText(text, textModel) + let monacoLocation = {} + + if (results) { + results.forEach(result => { + if (jsonPath.localeCompare(result.path) === 0) { + monacoLocation = result.match.range + return + } + }) + } + + return monacoLocation +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/validation.js b/packages/web-new/src/scripts/validation.js new file mode 100644 index 000000000..779837b78 --- /dev/null +++ b/packages/web-new/src/scripts/validation.js @@ -0,0 +1,18 @@ +/** + * @file The `validation.js` contains the related html elements for the validation view, as + * well as the behaviour for the validation button on the main navigation menu + */ + +export const validationView = document.querySelector("#validation-view") +export const validationTab = document.querySelector("#validation-tab") +const validationBtn = document.querySelector("#validate-btn") +export const autoValidateBtn = document.querySelector("#auto-validate") +export const resetLoggingBtn = document.querySelector("#reset-logging") +export const validateJsonLdBtn = document.querySelector("#validate-jsonld") +export const tmConformanceBtn = document.querySelector("#tm-conformance") +export const sectionHeaders = document.querySelectorAll("#validation-view .section-header") + +//Open validation with menu btn +validationBtn.addEventListener("click", () => { + validationTab.click() +}) \ No newline at end of file diff --git a/packages/web-new/src/scripts/vega-vis.js b/packages/web-new/src/scripts/vega-vis.js new file mode 100644 index 000000000..532e5cd4d --- /dev/null +++ b/packages/web-new/src/scripts/vega-vis.js @@ -0,0 +1,316 @@ +/** + * @file The `vega-vis.js` handles the vega visualization for the + * tree option, by utilizin the vega and vega-embed dependencies + */ + +import vegaEmbed from 'vega-embed' + +/** + * Initialize and generat the Vega visualization by passing the container element and the td content + * @param { html element } visContainer - Html container for the svg visualization + * @param { json object } td - Json object from the current editor + */ +export async function vegaVis(visContainer, td) { + + const treeData = [ + { + id: '0', + name: td.title, + parent: null + } + ]; + const conf = { + "$schema": "https://vega.github.io/schema/vega/v5.json", + "description": "A radial tree visualization for a W3C Thing Description.", + "width": document.getElementById("visualize-container").offsetWidth - 20, + "height": document.getElementById("visualize-container").offsetHeight - 30, + + "signals": [ + { + "name": "labels", "value": true, + "bind": { + "input": "checkbox", + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "radius", "value": 350, + "bind": { + "input": "range", + "min": 20, + "max": 800, + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "extent", "value": 360, + "bind": { + "input": "range", + "min": 0, + "max": 360, + "step": 1, + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "rotate", "value": 0, + "bind": { + "input": "range", + "min": 0, + "max": 360, + "step": 1, + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "dragPrecision", "value": 100, + "bind": { + "input": "range", + "min": 1, + "max": 100, + "step": 1, + "name": "drag precision", + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "layout", "value": "tidy", + "bind": { + "input": "radio", + "options": ["tidy", "cluster"], + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "links", "value": "line", + "bind": { + "input": "select", + "options": ["line", "curve", "diagonal", "orthogonal"], + "element": "#vega-bindings-wrapper" + } + }, + { + "name": "start", + "value": null, + "on": [ + { + "events": "mousedown", + "update": "xy()" + } + ] + }, + { + "name": "drag", + "value": null, + "on": [ + { + "events": "[mousedown, window:mouseup] > window:mousemove", + "update": "xy()" + } + ] + }, + { + "name": "originX", + "update": "width / 2", + "on": [ + { + "events": { "signal": "drag" }, + "update": "clamp((drag[0] - start[0]) / dragPrecision + originX, 0, width)" + } + ] + }, + { + "name": "originY", + "update": "height / 2", + "on": [ + { + "events": { "signal": "drag" }, + "update": "clamp((drag[1] - start[1]) / dragPrecision + originY, 0, height)" + } + ] + } + ], + + "data": [ + { + "name": "tree", + "values": treeData, + "transform": [ + { + "type": "stratify", + "key": "id", + "parentKey": "parent" + }, + { + "type": "tree", + "method": { "signal": "layout" }, + "size": [1, { "signal": "radius" }], + "as": ["alpha", "radius", "depth", "children"] + }, + { + "type": "formula", + "expr": "(rotate + extent * datum.alpha + 270) % 360", + "as": "angle" + }, + { + "type": "formula", + "expr": "PI * datum.angle / 180", + "as": "radians" + }, + { + "type": "formula", + "expr": "inrange(datum.angle, [90, 270])", + "as": "leftside" + }, + { + "type": "formula", + "expr": "originX + datum.radius * cos(datum.radians)", + "as": "x" + }, + { + "type": "formula", + "expr": "originY + datum.radius * sin(datum.radians)", + "as": "y" + } + ] + }, + { + "name": "links", + "source": "tree", + "transform": [ + { "type": "treelinks" }, + { + "type": "linkpath", + "shape": { "signal": "links" }, "orient": "radial", + "sourceX": "source.radians", "sourceY": "source.radius", + "targetX": "target.radians", "targetY": "target.radius" + } + ] + } + ], + + "scales": [ + { + "name": "color", + "type": "linear", + "range": { "scheme": "magma" }, + "domain": { "data": "tree", "field": "depth" }, + "zero": true + } + ], + + "marks": [ + { + "type": "path", + "from": { "data": "links" }, + "encode": { + "update": { + "x": { "signal": "originX" }, + "y": { "signal": "originY" }, + "path": { "field": "path" }, + "stroke": { "value": "#ccc" } + } + } + }, + { + "type": "symbol", + "from": { "data": "tree" }, + "encode": { + "enter": { + "size": { "value": 100 }, + "stroke": { "value": "#fff" } + }, + "update": { + "x": { "field": "x" }, + "y": { "field": "y" }, + "fill": { "scale": "color", "field": "depth" } + } + } + }, + { + "type": "text", + "from": { "data": "tree" }, + "encode": { + "enter": { + "text": { "field": "name" }, + "fontSize": { "value": 12 }, + "baseline": { "value": "middle" } + }, + "update": { + "x": { "field": "x" }, + "y": { "field": "y" }, + "dx": { "signal": "(datum.leftside ? -1 : 1) * 6" }, + "angle": { "signal": "datum.leftside ? datum.angle - 180 : datum.angle" }, + "align": { "signal": "datum.leftside ? 'right' : 'left'" }, + "opacity": { "signal": "labels ? 1 : 0" } + } + } + } + ] + }; + + function tdToVega(source, parent) { + Object.keys(source).forEach((key, index) => { + if (key === '@id' || key === '@context' || source[key] === null) return; + + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + treeData.push( + { + id: `${parent}_${index}`, + name: key, + parent + } + ); + + tdToVega(source[key], `${parent}_${index}`); + + } else if (Array.isArray(source[key])) { + treeData.push( + { + id: `${parent}_${index}`, + name: key, + parent + } + ); + + source[key].map((e, i) => { + if (typeof e === 'object') { + treeData.push( + { + id: `${parent}_${index}_${i}`, + name: `${i}`, + parent: `${parent}_${index}` + } + ); + + tdToVega(e, `${parent}_${index}_${i}`); + } else { + treeData.push({ + id: `${parent}_${index}_${i}`, + name: e, + parent: `${parent}_${index}` + }); + } + }); + + } else { + treeData.push({ + id: `${parent}_${index}`, + name: key, + parent + }); + } + }); + } + + tdToVega(td, treeData[0].id); + + window.vegaObj = await vegaEmbed( + visContainer, + conf, + { + actions: false, + renderer: 'svg' + } + ); +} \ No newline at end of file diff --git a/packages/web-new/src/scripts/visualize.js b/packages/web-new/src/scripts/visualize.js new file mode 100644 index 000000000..078a9d1c4 --- /dev/null +++ b/packages/web-new/src/scripts/visualize.js @@ -0,0 +1,67 @@ +/** + * @file The `visualize.js` takes care of setting eventHandlers + * and and the the main functions to initialize both the d3 and the vega + * visualizations as well as the visualization type and download buttons + */ + +import { collapseBtn, expandBtn, jsonldVis } from "./jsonld-vis.js" +import { vegaVis } from "./vega-vis.js" +import { downloadSvg, downloadPng } from 'svg-crowbar' + +export const visualizeView = document.querySelector("#visualize-view") +export const visualizeTab = document.querySelector("#visualize-tab") +const downloadSvgBtn = document.getElementById('download-svg') +const downloadPngBtn = document.getElementById('download-png') +const graphViewInput = document.querySelector("#graph-view") +const treeViewInput = document.querySelector("#tree-view") +const graphInputs = document.querySelector(".visualize-inputs__graph") +const treeInputs = document.querySelector(".visualize-inputs__tree") +const visViews = [graphViewInput, treeViewInput] + +/** + * parses the edito value, if it works, checks the the vis type + * and initializes the rescpective visualization and well as + * enabling the respective inputs + * @param { String } editorValue + */ +export function visualize(editorValue) { + collapseBtn.disabled = false + expandBtn.disabled = false + document.getElementById("visualized").innerHTML = "" + visualizeView.classList.remove("hidden") + + if (graphViewInput.checked === true) { + graphInputs.classList.remove("hidden") + treeInputs.classList.add("hidden") + jsonldVis(editorValue, "#visualized", { + h: document.getElementById("visualize-container").offsetHeight - 30, + w: document.getElementById("visualize-container").offsetWidth - 20, + maxLabelWidth: 200, + scalingFactor: 5, + }) + } else { + graphInputs.classList.add("hidden") + treeInputs.classList.remove("hidden") + + vegaVis("#visualized", editorValue) + } +} + +// Download as svg button +downloadSvgBtn.addEventListener("click", () => { + const visualizationName = graphViewInput.checked === true ? "Graph-visualization" : "Tree-visualization" + downloadSvg(document.querySelector("#visualized svg"), visualizationName) +}) + +// Download as png button +downloadPngBtn.addEventListener("click", () => { + const visualizationName = graphViewInput.checked === true ? "Graph-visualization" : "Tree-visualization" + downloadPng(document.querySelector("#visualized svg"), visualizationName) +}) + +//If the vis type is changed simulate a click on the visualize tab to call the visualize function +visViews.forEach(el => { + el.addEventListener("click", () => { + visualizeTab.click() + }) +}) \ No newline at end of file diff --git a/packages/web-new/src/styles/_console.scss b/packages/web-new/src/styles/_console.scss new file mode 100644 index 000000000..94798e2d3 --- /dev/null +++ b/packages/web-new/src/styles/_console.scss @@ -0,0 +1,651 @@ +/*** Console ***/ +.console { + overflow: hidden; + display: flex; + flex-direction: column; + + &__tabs { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid var(--clr-primary-500); + padding: 0 1rem; + height: fit-content; + + .console-controllers { + display: flex; + align-items: center; + justify-content: center; + + .trash, + .download { + padding: 1rem .5rem; + appearance: none; + border: none; + background-color: var(--clr-neutral-50); + color: var(--clr-primary-500); + transition: color 250ms ease; + + &:hover { + color: var(--clr-primary-900); + cursor: pointer; + } + + &:disabled { + color: var(--clr-neutral-300); + cursor: auto; + } + } + + .download { + margin-right: 1rem; + } + } + + .visualization { + height: 100%; + display: flex; + align-items: center; + + input[type=radio] { + appearance: none; + width: fit-content; + padding: .5rem 1rem; + background-color: var(--clr-neutral-50); + border-top-right-radius: 5px; + border-top-left-radius: 5px; + color: var(--clr-neutral-300); + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + cursor: pointer; + overflow: hidden; + transition: all 250ms ease-in-out; + + &::before { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } + + &:nth-child(1)::before { + content: 'Validation'; + } + + &:nth-child(2)::before { + content: 'OpenAPI'; + } + + &:nth-child(3)::before { + content: 'AsyncAPI'; + } + + &:nth-child(4)::before { + content: 'Defaults'; + } + + // &:nth-child(5)::before{ + // content: 'Linting'; + // } + + // &:nth-child(6)::before{ + // content: 'Canonicalize'; + // } + + &:nth-child(5)::before { + content: 'Visualize'; + } + } + + input[type=radio]:checked { + color: var(--clr-neutral-900); + } + + input[type=radio]:disabled { + color: var(--clr-neutral-200); + cursor: not-allowed; + } + + } + } + + &__content { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + + .console-error { + position: absolute; + top: 0; + left: 0; + display: grid; + place-items: center; + width: 100%; + height: 100%; + background-color: var(--clr-neutral-50); + opacity: 1; + pointer-events: all; + + p { + font-weight: var(--fw-bold); + color: var(--clr-error-900); + text-align: center; + font-size: var(--fs-sub-header); + transform: scale(1); + transition: transform 250ms var(--trans-bouncy); + } + + &.hidden { + opacity: 0; + pointer-events: none; + transition: opacity 150ms ease-in-out; + + p { + transform: scale(0); + } + } + } + + .console-view { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + opacity: 1; + pointer-events: all; + position: absolute; + top: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; + padding: 2rem; + transition: opacity 250ms ease-in-out; + + &.hidden { + width: 0; + height: 0; + opacity: 0; + pointer-events: none; + transition: opacity 0s ease-in-out; + } + + &.validation-view { + overflow: auto; + + details{ + margin-bottom: 1rem; + summary{ + .show-icon{ + transform: rotate(0); + transition: transform 250ms ease-in-out; + } + } + + .section-header { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 1rem; + cursor: pointer; + + .fa-circle-check { + color: var(--clr-success-500); + } + + .fa-circle-exclamation { + color: var(--clr-warning-500); + } + + .fa-circle-xmark { + color: var(--clr-error-500); + } + + .fa-spinner { + color: var(--clr-neutral-300); + animation: rotate 2s infinite ease-in-out; + } + + .fa-circle{ + color: var(--clr-neutral-300); + } + + .show-icon { + cursor: pointer; + } + + .title{ + font-weight: var(--fw-bold); + } + } + + .section-content, .section-additional{ + padding: 1rem 2rem; + } + + .section-content{ + list-style-position: inside; + list-style-type: disc; + + &.empty{ + padding: 0 0 1rem 0; + } + + .notice-prompt{ + color: var(--clr-neutral-300); + font-size: var(--fs-footer); + } + } + + .section-additional{ + details{ + margin-bottom: 1rem; + summary{ + .show-icon{ + transform: rotate(0); + transition: transform 250ms ease-in-out; + } + } + } + + details[open]{ + margin-bottom: 0; + summary{ + .show-icon{ + transform: rotate(-90deg); + } + } + } + } + } + + details[open]{ + margin-bottom: 0; + summary{ + .show-icon{ + transform: rotate(-90deg); + } + } + } + } + } + + + .open-api-view, + .async-api-view, + .defaults-view, + .visualize-view { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + gap: 1rem; + padding: 2rem 1rem 2rem 0; + + .open-api-container, + .async-api-container, + .defaults-container, + .visualize-container { + height: 100%; + width: calc(100% - 30rem); + } + + .open-api-inputs, + .async-api-inputs, + .defaults-inputs, + .visualize-inputs { + width: 30rem; + height: 100%; + padding: 0 1rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + overflow-y: auto; + overflow-x: hidden; + gap: 1rem; + + button { + appearance: none; + border: none; + width: 100%; + border-radius: 5px; + padding: .75rem 1.5rem; + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); + font-family: var(--ff-primary); + font-size: var(--fs-p); + cursor: pointer; + transition: background-color 250ms ease-in-out; + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; + + &:hover { + background-color: var(--clr-primary-900); + } + + &:disabled { + background-color: var(--clr-neutral-300); + cursor: auto; + } + } + + .input-field { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 5px; + overflow: hidden; + button{ + border-radius: 0; + } + } + } + } + + .defaults-view { + .defaults-inputs { + button { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + + i { + font-size: var(--fs-p); + } + } + } + } + + .visualize-view { + padding-left: 2rem; + + .visualize-container { + .visualized { + width: 100%; + height: 100%; + overflow: auto; + display: grid; + place-items: center; + + svg { + text { + font-size: 1.2rem; + font-family: var(--ff-secundary); + fill: var(--clr-neutral-900); + } + } + } + } + + .visualize-inputs { + gap: 0; + + &__type { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2rem; + margin-bottom: 1rem; + + .vis-type-option { + input[type="radio"] { + appearance: none; + width: 100%; + height: 3.25rem; + background-color: var(--clr-primary-500); + cursor: pointer; + transition: background-color 250ms ease-in-out; + position: relative; + + &:hover { + background-color: var(--clr-primary-900); + } + + &::before { + content: ''; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: grid; + place-items: center; + font-size: var(--fs-p); + font-family: var(--ff-primary); + text-transform: capitalize; + color: var(--clr-neutral-50); + } + + &:nth-child(1) { + &::before { + content: 'Graph'; + } + } + + &:nth-child(2) { + &::before { + content: 'Tree'; + } + } + } + + input[type="radio"]:checked { + background-color: var(--clr-neutral-300); + cursor: auto; + } + } + } + + &__graph, + &__tree { + width: 100%; + height: fit-content; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 2rem; + opacity: 1; + transition: width 0s, height 0s, opacity 250ms ease-in-out; + + &.hidden { + width: 0; + height: 0; + opacity: 0; + pointer-events: none; + transition: opacity 0s ease-in-out; + } + } + + &__tree { + .vega-bind { + width: 100%; + + span { + font-size: var(--fs-p); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + min-width: 3rem; + text-transform: capitalize; + + &.vega-bind-name { + min-width: 6.5rem; + } + } + + label { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + + input, + select { + width: 100%; + } + + input[type="checkbox"] { + appearance: none; + border: 2px solid var(--clr-primary-500); + cursor: pointer; + width: 100%; + border-radius: 5px; + height: 3rem; + position: relative; + background-color: var(--clr-primary-500); + transition: all 250ms ease-in-out; + + &::before { + position: absolute; + content: '\f06e'; + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + font-size: var(--fs-p); + color: var(--clr-neutral-50); + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + transition: all 500ms ease-in-out; + } + + &:hover { + background-color: var(--clr-primary-900); + border-color: var(--clr-primary-900); + } + } + + input[type="checkbox"]:checked { + &::before { + content: '\f070'; + } + } + + input[type="range"] { + appearance: none; + height: 4px; + border-radius: 50vw; + background-color: var(--clr-neutral-200); + cursor: pointer; + + &::-moz-range-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); + border: none; + } + + &::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); + } + + input[type=range]::-ms-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); + border: none; + } + } + + select { + appearance: none; + background-color: var(--clr-primary-500); + border-radius: 5px; + color: var(--clr-neutral-50); + font-size: var(--fs-p); + font-family: var(--ff-primary); + padding: .75rem 1rem; + border: none; + cursor: pointer; + } + } + + &:nth-child(6) { + + .vega-bind-radio { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 5px; + overflow: hidden; + margin-top: .5rem; + + label { + position: relative; + z-index: 0; + color: var(--clr-neutral-50); + padding: .75rem 1.5rem; + justify-content: center; + cursor: pointer; + + input[type='radio'] { + appearance: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-primary-500); + cursor: pointer; + z-index: -1; + transition: background-color 250ms ease-in-out; + + &:hover { + background-color: var(--clr-primary-900); + } + } + + input[type="radio"]:checked { + background-color: var(--clr-neutral-300); + cursor: auto; + } + } + } + } + } + } + + &__download { + width: 100%; + height: 100%; + margin-top: 2rem; + //todo: Remove the separation for the download buttons? + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + } + } + } + } +} + +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_control-panel.scss b/packages/web-new/src/styles/_control-panel.scss new file mode 100644 index 000000000..67f2aa093 --- /dev/null +++ b/packages/web-new/src/styles/_control-panel.scss @@ -0,0 +1,66 @@ +/** Control panel **/ +.control-panel { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + overflow: hidden; + width: 8rem; + + &__btn { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: var(--clr-primary-500); + background-color: inherit; + border: none; + border-bottom: 2px solid var(--clr-primary-500); + font-family: var(--ff-primary); + cursor: pointer; + transition: all 250ms ease; + + &:last-child { + border-bottom: none; + } + + &:hover { + color: var(--clr-neutral-50); + background-color: var(--clr-primary-500); + } + + i { + font-size: var(--fs-i); + } + + p { + font-weight: var(--fw-bold); + } + + .text-icon { + width: fit-content; + opacity: 1; + margin-top: 1rem; + transform: scaleX(1); + transition: opacity 250ms var(--trans-bouncy), transform 250ms var(--trans-bouncy); + } + + .text-icon.hiddenV { + opacity: 0; + margin: 0; + transform: scaleX(0); + height: 0; + flex: 0; + } + + .text-icon.hiddenH { + opacity: 0; + margin: 0; + transform: scaleX(0); + height: 0; + flex: 0; + } + } +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_editor.scss b/packages/web-new/src/styles/_editor.scss new file mode 100644 index 000000000..c194a9eac --- /dev/null +++ b/packages/web-new/src/styles/_editor.scss @@ -0,0 +1,182 @@ +/*** Editor ***/ +.ide { + &__tabs { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + ul { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + height: 100%; + + li { + height: 100%; + padding: 1rem; + text-align: left; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + background-color: var(--clr-shades-trans); + color: var(--clr-neutral-300); + margin-right: 2px; + transition: all 250ms ease; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + + span{ + font-size: 1rem; + font-weight: bold; + margin-right: 1rem; + } + + p { + font-weight: var(--fw-bold); + } + + i { + font-size: var(--fs-p); + } + + &.active { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + } + + &:hover { + .close-tab { + opacity: 1; + } + } + + &:last-child { + margin-right: 0; + } + } + } + + &__left { + max-width: 80%; + overflow-y: hidden; + overflow-x: auto; + + li:not(:last-child) { + position: relative; + padding-right: 3rem; + + .tab-icon{ + font-size: 1rem; + margin-right: 1rem; + color: var(--clr-td-300); + } + + &.active{ + .tab-icon{ + color: var(--clr-td-500); + } + } + + .close-tab { + position: absolute; + content: ''; + top: 50%; + right: 0; + width: 2rem; + height: 2rem; + transform: translate(-.5rem, -50%); + background-color: var(--clr-neutral-100); + opacity: 0; + border-radius: 5px; + display: flex; + align-items: center; + justify-content: center; + transition: all 250ms ease-in-out; + + &:hover { + background-color: var(--clr-neutral-200); + } + + i { + pointer-events: none; + font-size: 1.4rem; + height: 1.3rem; + } + } + } + + li:last-child { + min-width: 3.5rem; + transition: all 250ms ease-in-out; + + &:hover{ + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + } + } + } + + &__right{ + height: 100%; + input[type=radio]{ + appearance: none; + width: 6rem; + height: 100%; + background-color: var(--clr-shades-trans); + border-top-right-radius: 5px; + border-top-left-radius: 5px; + color: var(--clr-neutral-300); + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + cursor: pointer; + overflow: hidden; + transition: all 250ms ease-in-out; + + &::before{ + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } + + &:nth-child(1)::before{ + content: 'JSON'; + } + + &:nth-child(2)::before{ + content: 'YAML'; + } + } + + input[type=radio]:checked{ + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + } + } + } + + &__container { + .editor { + pointer-events: none; + width: 0; + height: 0; + opacity: 0; + } + + .editor.active { + pointer-events: all; + min-height: 100%; + width: 100%; + opacity: 1; + transition: opacity 300ms ease-in-out; + } + } +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_examples-menu.scss b/packages/web-new/src/styles/_examples-menu.scss new file mode 100644 index 000000000..a09bfe977 --- /dev/null +++ b/packages/web-new/src/styles/_examples-menu.scss @@ -0,0 +1,411 @@ +/**** Examples Menu ****/ +.examples-menu { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 2rem; + background-color: var(--clr-neutral-100); + display: grid; + place-items: center; + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); + + .examples-menu-container { + overflow: hidden; + background-color: var(--clr-neutral-50); + width: 100%; + height: 100%; + padding: 2rem; + border-radius: 10px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + &__close { + width: 100%; + text-align: right; + + i { + font-size: var(--fs-h4); + cursor: pointer; + } + } + + &__filter { + width: 100%; + padding: 4rem; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 2rem; + flex-wrap: wrap; + font-size: var(--fs-p); + + p { + font-weight: var(--fw-bold); + font-size: inherit; + } + + .form-field { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + label { + width: 0; + height: 0; + opacity: 0; + } + + .select-container { + position: relative; + width: 100%; + + &::after { + position: absolute; + top: 50%; + right: 2rem; + transform: translateY(-50%); + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + content: "\f0d7"; + pointer-events: none; + } + } + + select, + .search-bar, + .search-input { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + font-family: var(--ff-primary); + font-size: inherit; + } + + select, + .search-bar { + border: 2px solid var(--clr-neutral-300); + } + + select { + padding: .8rem 6rem .8rem 2rem; + appearance: none; + cursor: pointer; + } + + select { + width: 100%; + border-radius: 5px; + text-transform: capitalize; + } + + // .thing-category{ + // width: fit-content; + // } + + .search-bar { + width: 100%; + overflow: hidden; + display: flex; + align-items: center; + justify-content: flex-start; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + border-right: none; + + i { + width: fit-content; + padding: 0 1rem; + font-size: inherit; + } + + .search-input { + border: none; + width: 100%; + padding: .8rem 1rem; + appearance: none; + cursor: text; + + &:focus { + outline: none; + } + } + } + + .search-btn { + background-color: var(--clr-primary-500); + font-family: inherit; + font-size: inherit; + padding: 1rem 2rem; + border: none; + color: var(--clr-neutral-50); + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + cursor: pointer; + transition: background-color 250ms ease-in-out; + + &:hover { + background-color: var(--clr-primary-700); + } + } + } + } + + .examples-container { + display: flex; + flex-direction: row; + width: 100%; + height: 100%; + overflow-y: hidden; + + &__td, + &__tm { + width: 100%; + min-height: fit-content; + opacity: 1; + overflow-y: auto; + + transition: opacity 250ms ease-in-out 250ms, width 250ms ease-in-out 0ms, height 250ms ease-in-out 0ms; + + .examples-category { + &__title { + padding: 0 4rem; + position: relative; + z-index: 0; + + &::before { + position: absolute; + content: ''; + top: 50%; + left: 4rem; + width: calc(100% - 8rem); + height: .5rem; + background-color: var(--clr-primary-500); + z-index: -1; + + } + + h3 { + width: fit-content; + background-color: var(--clr-neutral-50); + padding: 0 1rem; + margin-left: 8rem; + text-transform: capitalize; + } + } + + &__description { + padding: 2rem 4rem 0 4rem; + + p { + font-size: var(--fs-p); + } + } + + &__container { + padding: 4rem; + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + flex-wrap: wrap; + gap: 2rem; + + .example { + background-color: var(--clr-neutral-50); + border-radius: 5px; + width: fit-content; + padding: 2rem; + box-shadow: 0px 0px 5px 0px var(--clr-shadow); + + &__name { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 2rem; + cursor: pointer; + transition: all 250ms ease-in-out 250ms; + + i { + color: var(--clr-primary-500); + } + + p { + font-weight: var(--fw-bold); + } + + } + + &__content { + pointer-events: none; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + flex-wrap: wrap; + } + + &__description { + height: 0; + opacity: 0; + font-size: var(--fs-p); + line-height: var(--lh-sub-header); + max-width: 50ch; + overflow-y: scroll; + overflow-x: hidden; + padding-right: 1rem; + transition: height 250ms ease-in-out 250ms, margin 250ms ease-in-out 250ms, opacity 250ms ease-in-out 0ms; + + } + + &__btn { + display: flex; + gap: 2rem; + height: 0; + opacity: 0; + transition: opacity 250ms ease-in-out 0ms, height 250ms ease-in-out 250ms, ; + + button { + padding: .5rem 1.5rem; + border-radius: 5px; + border: 1px solid var(--clr-neutral-300); + background-color: var(--clr-neutral-50); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + cursor: pointer; + transition: background-color 250ms ease-in-out; + + &:hover { + background-color: var(--clr-neutral-300); + } + + p { + font-size: inherit; + color: inherit; + font-family: inherit; + } + + i { + font-size: inherit; + margin-right: 1rem; + } + } + } + } + + .example.open { + + .example__name { + border-bottom: 2px solid var(--clr-primary-500); + padding-bottom: 2rem; + transition: all 250ms ease-in-out 0s; + } + + .example__content { + pointer-events: all; + } + + .example__description { + height: 9rem; + margin: 2rem 0; + opacity: 1; + transition: height 250ms ease-in-out 0s, margin 250ms ease-in-out 0s, opacity 200ms ease-in-out 250ms; + } + + .example__btn { + height: 3rem; + opacity: 1; + transition: height 250ms ease-in-out 0s, opacity 200ms ease-in-out 250ms; + } + + } + } + + &.hidden { + height: 0; + opacity: 0; + transition: opacity 100ms ease-in-out 0s, height 0s ease-in-out 250ms; + } + } + + &.hidden { + width: 0; + height: 0; + opacity: 0; + transition: opacity 100ms ease-in-out 0s, width 0s ease-in-out 250ms, height 0s ease-in-out 250ms; + } + } + } + } + + &.closed { + transform: scale(0); + opacity: 0; + pointer-events: none; + } +} + +@media screen and (min-width: 1024px) { + .examples-menu { + .examples-menu-container { + + &__filter { + width: 100%; + flex-wrap: wrap; + + .form-field { + width: calc(33% - 4rem); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + .select-container { + position: relative; + width: 100%; + + &::after { + position: absolute; + top: 50%; + right: 2rem; + transform: translateY(-50%); + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + content: "\f0d7"; + pointer-events: none; + } + } + + select { + width: 100%; + } + + // .thing-category{ + // width: fit-content; + // } + + .search-bar { + width: 100%; + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_json-yaml-warning.scss b/packages/web-new/src/styles/_json-yaml-warning.scss new file mode 100644 index 000000000..699428ba0 --- /dev/null +++ b/packages/web-new/src/styles/_json-yaml-warning.scss @@ -0,0 +1,74 @@ +.json-yaml-warning{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-shades-trans); + display: grid; + place-items: center; + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); + + &__container{ + background-color: var(--clr-neutral-50); + border-radius: 10px; + box-shadow: 0px 0px 10px 0px var(--clr-shadow); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 2rem; + + .warning-text{ + margin-bottom: 2rem; + h3{ + text-align: center; + color: var(--clr-warning-500); + margin-bottom: 1rem; + } + p{ + max-width: 40rem; + } + } + + .warning-btns{ + button{ + cursor: pointer; + border: none; + padding: .75rem 1.75rem; + border-radius: 5px; + font-size: var(--fs-p); + font-weight: var(--fw-bold); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + transition: background-color 250ms ease-in-out; + } + .confirm-btn{ + background-color: var(--clr-success-500); + margin-right: 1rem; + + &:hover{ + background-color: var(--clr-success-900); + } + } + + .cancel-btn{ + background-color: var(--clr-error-500); + + &:hover{ + background-color: var(--clr-error-900); + } + } + } + } + + &.closed{ + transform: scale(0); + opacity: 0; + pointer-events: none; + } + +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_jsonld-vis.scss b/packages/web-new/src/styles/_jsonld-vis.scss new file mode 100644 index 000000000..72a0e870d --- /dev/null +++ b/packages/web-new/src/styles/_jsonld-vis.scss @@ -0,0 +1,29 @@ +svg { + border: none; + + g{ + .node { + cursor: pointer; + } + + .link { + fill: none; + stroke: var(--clr-neutral-300); + stroke-width: 1px; + } + } +} + +.d3-tip { + font-size: var(--fs-p); + font-family: var(--ff-secundary); + color: var(--clr-neutral-900); + border: 1px solid var(--clr-neutral-300); + border-radius: 5px; + padding: 1rem 2rem; + max-width: 30rem; + word-wrap: break-word; + background-color: var(--clr-neutral-50); + text-align: left; + z-index: 10; +} diff --git a/packages/web-new/src/styles/_save-menu.scss b/packages/web-new/src/styles/_save-menu.scss new file mode 100644 index 000000000..43faa5cfd --- /dev/null +++ b/packages/web-new/src/styles/_save-menu.scss @@ -0,0 +1,208 @@ +.save-menu{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: grid; + place-items: center; + background-color: var(--clr-shades-trans); + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); + + &__container{ + width: 50rem; + border-radius: 10px; + background-color: var(--clr-neutral-50); + box-shadow: 0px 0px 10px 0px var(--clr-shadow); + padding: 2rem; + + .save-menu-close{ + width: 100%; + text-align: right; + margin-bottom: 2rem; + + i{ + font-size: var(--fs-sub-header); + cursor: pointer; + } + } + + .save-menu-title{ + p{ + color: var(--clr-neutral-900); + font-weight: var(--fw-bold); + font-size: var(--fs-sub-header); + } + margin-bottom: 3rem; + } + + .share-td{ + width: 100%; + margin-bottom: 3rem; + + & > *{ + width: 100%; + height: 4rem; + border-radius: 5px; + font-family: var(--ff-primary); + font-size: var(--fs-p); + } + + &__input{ + display: flex; + align-items: center; + justify-content: center; + width: 100%; + margin-bottom: 1rem; + + .share-url-input{ + width: 100%; + height: 4rem; + background-color: var(--clr-neutral-50); + border-top: 2px solid var(--clr-neutral-200); + border-left: 2px solid var(--clr-neutral-200); + border-bottom: 2px solid var(--clr-neutral-200); + border-right: none; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + font-family: var(--ff-primary); + font-size: var(--fs-p); + padding: 1rem; + + &.error{ + color: var(--clr-error-500); + } + + &:focus{ + outline: none; + } + } + + .open-url-tab{ + height: 4rem; + width: fit-content; + background-color: var(--clr-neutral-200); + color: var(--clr-neutral-50); + font-size: var(--fs-p); + padding: 1rem; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border: none; + cursor: pointer; + transition: background-color 250ms ease-in-out; + + &:hover{ + background-color: var(--clr-neutral-300); + } + + &:disabled{ + background-color: var(--clr-neutral-200); + cursor: default; + } + } + } + + &__btn{ + cursor: pointer; + font-weight: var(--fw-bold); + transition: all 250ms ease-in-out; + + &.share-url{ + margin-bottom: 1rem; + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); + border: none; + transition: background-color 250ms ease-in-out; + i{ + margin-right: 1rem; + } + + &:hover{ + background-color: var(--clr-primary-700); + } + } + + &.open-editdor{ + border: 2px solid var(--clr-primary-500); + background-color: transparent; + color: var(--clr-primary-500); + transition: all 250ms ease-in-out; + + &:hover{ + background-color: var(--clr-primary-700); + border-color: var(--clr-primary-700); + color: var(--clr-neutral-50); + } + } + } + } + + .save-td{ + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-bottom: .5rem; + + & > *{ + flex: 1; + height: 4rem; + border-radius: 5px; + border: none; + color: var(--clr-neutral-50); + background-color: var(--clr-primary-500); + cursor: pointer; + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + transition: background-color 250ms ease-in-out; + + &:disabled{ + background-color: var(--clr-primary-100); + cursor: not-allowed; + + &:hover{ + background-color: var(--clr-primary-100); + } + } + + i{ + margin-right: 1rem; + } + + &:hover{ + background-color: var(--clr-primary-700); + } + } + } + + .save-warning{ + margin-bottom: 3rem; + p{ + color: var(--clr-neutral-300); + font-size: var(--fs-footer); + transition: color 150ms ease-in-out; + + span{ + font-weight: var(--fw-bold); + } + } + + &.active{ + p{ + color: var(--clr-error-500); + } + } + } + } + + &.closed{ + transform: scale(0); + opacity: 0; + pointer-events: none; + } +} \ No newline at end of file diff --git a/packages/web-new/src/styles/_settings-menu.scss b/packages/web-new/src/styles/_settings-menu.scss new file mode 100644 index 000000000..751b3bf9e --- /dev/null +++ b/packages/web-new/src/styles/_settings-menu.scss @@ -0,0 +1,234 @@ +/***** settings menu *****/ + +.settings-menu { + position: absolute; + top: 0; + right: 0; + width: 50rem; + height: 100%; + background-color: var(--clr-primary-700); + border-radius: 0 0 0 10px; + padding: 4rem; + color: var(--clr-neutral-50); + transform-origin: right; + transition: width 0s ease, height 0s ease, opacity 150ms ease-in-out, transform 500ms var(--trans-bouncy); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + z-index: 100; + + .settings { + width: 100%; + + &__close { + text-align: right; + margin-bottom: 2rem; + + i { + font-size: var(--fs-h4); + cursor: pointer; + } + } + + &__title, + &__preferences { + padding-bottom: 1rem; + border-bottom: 2px solid var(--clr-neutral-50); + margin: 4rem 0; + } + + &__validate-options { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 2rem; + + .form-field { + width: calc(50% - 2rem); + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + label { + font-size: var(--fs-p); + max-width: 10ch; + } + + input[type="checkbox"] { + appearance: none; + width: 6rem; + height: 3rem; + border-radius: 50vw; + background-color: var(--clr-controls-bg); + position: relative; + transition: background-color 250ms ease-in-out; + cursor: pointer; + + &::before { + content: ''; + position: absolute; + top: .4rem; + left: .4rem; + width: 2.2rem; + height: 2.2rem; + border-radius: 50%; + background-color: var(--clr-controls); + transition: left 500ms var(--trans-bouncy); + } + } + + input[type="checkbox"]:checked { + background-color: var(--clr-success-500); + + &::before { + left: 3.2rem; + } + } + } + } + + &__editor { + width: 100%; + + .form-field { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + font-size: var(--fs-p); + margin-bottom: 2rem; + + span { + font-weight: var(--fw-bold); + } + + select { + width: 60%; + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + padding: .5rem 1rem; + border-radius: 5px; + border: none; + cursor: pointer; + font-family: var(--ff-primary); + } + + .font-range-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: 1rem; + width: 100%; + padding: 1rem 0; + + span { + width: fit-content; + } + } + + input[type="range"] { + flex: 1; + appearance: none; + height: 4px; + border-radius: 50vw; + background-color: var(--clr-controls-bg); + cursor: pointer; + + /* All the same stuff for Firefox */ + + &::-moz-range-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); + border: none; + } + + &::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); + } + + input[type=range]::-ms-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); + border: none; + } + } + + .reset-settings { + width: 100%; + border: none; + padding: 1rem 2rem; + border-radius: 5px; + background-color: var(--clr-controls-bg); + color: var(--clr-controls); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + font-family: var(--ff-primary); + cursor: pointer; + transition: background-color 250ms ease-in-out; + + &:hover { + background-color: var(--clr-primary-900); + } + + &:active { + transform: scale(0.98); + } + } + } + + .form-field:nth-child(2) { + flex-direction: column; + align-items: self-start; + } + } + } + + footer { + width: 100%; + text-align: center; + + p { + margin-bottom: 1rem; + } + + .footer-links { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + a { + font-size: 1.2rem; + padding: 0 1rem; + height: 100%; + + &:not(:last-child) { + border-right: 1px solid var(--clr-neutral-50); + } + } + } + } +} + +.settings-menu.closed { + width: 0; + height: 0; + opacity: 0; + transform: scaleX(0); + transition: transform 500ms var(--trans-bouncy), opacity 250ms ease-in-out 250ms, width 0s ease 500ms, height 0s ease 500ms; +} \ No newline at end of file diff --git a/packages/web-new/src/styles/styles.css b/packages/web-new/src/styles/styles.css new file mode 100644 index 000000000..f15a0de73 --- /dev/null +++ b/packages/web-new/src/styles/styles.css @@ -0,0 +1,2053 @@ +/*** Globals **/ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + /*Fonts styles*/ + --ff-primary: "Roboto", sans-serif; + --ff-secundary: "Open Sans", sans-serif; + /*Font weights*/ + --fw-light: 300; + --fw-regular: 400; + --fw-bold: 700; + --fw-black: 900; + /*Font sizes*/ + --fs-h1: 3.5rem; + --fs-h2: 3rem; + --fs-h3: 2.5rem; + --fs-h4: 2rem; + --fs-sub-header: 1.8rem; + --fs-p: 1.4rem; + --fs-footer: 1rem; + --fs-i: 1.8rem; + --fs-h1: clamp(3rem, 2.8rem + 0.625vw, 4rem); + --fs-h2: clamp(2.5rem, 2.3rem + 0.625vw, 3.5rem); + --fs-h3: clamp(2rem, 1.8rem + 0.625vw, 3rem); + --fs-h4: clamp(1.5rem, 1.3rem + 0.625vw, 2.5rem); + --fs-sub-header: clamp(1.4rem, 1.239rem + 0.5vw, 2.2rem); + --fs-p: clamp(1.2rem, 1.119rem + 0.25vw, 1.6rem); + --fs-footer: clamp(0.8rem, 0.7200000000000001rem + 0.24999999999999997vw, 1.2rem); + --fs-i: clamp(1.4rem, 1.279rem + 0.375vw, 2rem); + /*line heights*/ + --lh-h1: 5rem; + --lh-h2: 4.5rem; + --lh-h3: 4rem; + --lh-h4: 3.5rem; + --lh-sub-header: 3rem; + --lh-p: 2rem; + --lh-footer: 1.5rem; + --lh-i: 2.2rem; + /*colors*/ + --clr-neutral-50: #FFFFFE; + --clr-neutral-100: #E4E6E6; + --clr-neutral-200: #CACCCC; + --clr-neutral-300: #B1B3B3; + --clr-neutral-900: #141414; + --clr-primary-100: #95E5D9; + --clr-primary-300: #5ED1C0; + --clr-primary-500: #33B8A4; + --clr-primary-700: #179985; + --clr-primary-900: #067362; + --clr-shades-trans: rgba(255, 255, 255, 0.6); + --clr-shadow: rgba(0, 0, 0, 0.4); + --clr-success-100: #80F2AA; + --clr-success-300: #63E592; + --clr-success-500: #4ADE80; + --clr-success-700: #2DC464; + --clr-success-900: #16AB4C; + --clr-warning-100: #FFDE59; + --clr-warning-300: #FCD63F; + --clr-warning-500: #FACC15; + --clr-warning-700: #EDBF09; + --clr-warning-900: #E0B300; + --clr-error-100: #FAA5A5; + --clr-error-300: #FA8C8C; + --clr-error-500: #F87171; + --clr-error-700: #EB5454; + --clr-error-900: #DE3A3A; + --clr-td-300: #d6935d; + --clr-td-500: #E07A26; + --clr-controls: var(--clr-neutral-50); + --clr-controls-bg: var(--clr-primary-500); + /* transitions */ + --trans-bouncy: cubic-bezier(0.68, -0.75, 0.27, 1.75); +} + +.dark-mode { + --clr-neutral-50: #1E1E1E; + --clr-neutral-100: #4C4D4C; + --clr-neutral-200: #656666; + --clr-neutral-300: #7E807F; + --clr-neutral-900: #FFFFFE; + --clr-shades-trans: rgba(30, 30, 30, 0.7); + --clr-shadow: rgba(255, 255, 255, 0.4); +} + +.monochrome-mode { + --clr-neutral-50: #549087; + --clr-neutral-100: #4C4D4C; + --clr-neutral-200: #656666; + --clr-neutral-300: #7E807F; + --clr-neutral-900: #FFFFFE; + --clr-primary-500: #FFFFFE; + --clr-primary-700: #E4E6E6; + --clr-controls: #FFFFFE; + --clr-controls-bg: var(--clr-neutral-50); + --clr-shades-trans: rgba(84, 144, 135, 0.7); + --clr-shadow: rgba(255, 255, 255, 0.4); +} + +html { + font-size: 62.5%; + scroll-behavior: smooth; +} + +body { + background-color: var(--clr-neutral-100); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + position: relative; +} + +h1 { + font-size: var(--fs-h1); + line-height: var(--lh-h1); + font-weight: var(--fw-bold); +} + +h2 { + font-size: var(--fs-h2); + line-height: var(--lh-h2); + font-weight: var(--fw-bold); +} + +h3 { + font-size: var(--fs-h3); + line-height: var(--lh-h3); + font-weight: var(--fw-bold); +} + +h4 { + font-size: var(--fs-h4); + line-height: var(--lh-h4); + font-weight: var(--fw-bold); +} + +h5 { + font-size: var(--fs-h5); + line-height: var(--lh-h5); + font-weight: var(--fw-bold); +} + +p, +li { + font-size: var(--fs-p); + line-height: var(--lh-sub-header); + font-weight: var(--fw-regular); +} + +a { + text-decoration: none; + font-size: inherit; + color: inherit; + font-weight: var(--fw-regular); +} + +i { + font-size: var(--fs-i); +} + +ul { + list-style: none; +} + +img { + width: 100%; + height: 100%; +} + +.container { + padding: 0 2rem; + margin: 0 auto; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +/* Track */ +::-webkit-scrollbar-track { + background-color: var(--clr-neutral-50); +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: var(--clr-primary-500); + border-radius: 50vh; + border: 1px solid var(--clr-neutral-50); +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + border: none; +} + +@supports (scrollbar-color: var(--clr-primary-500) var(--clr-neutral-50)) { + * { + scrollbar-color: var(--clr-primary-500) var(--clr-neutral-50); + } +} +/***** Header *****/ +header { + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); +} +header .navbar { + min-height: 8vh; + min-height: 8svh; + max-height: 8vh; + max-height: 8svh; + padding: 1rem 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +header .navbar__logo { + width: 15rem; +} +header .navbar__logo .logo path { + fill: var(--clr-neutral-50); +} +header .navbar__title span { + font-size: var(--fs-footer); +} +header .navbar__links { + display: flex; + align-items: center; + justify-content: center; +} +header .navbar__links a { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: var(--fs-p); + transition: color 250ms ease; +} +header .navbar__links a:hover { + color: var(--clr-neutral-200); +} +header .navbar__links .cli-link { + margin-right: 3rem; +} +header .navbar__links i { + font-size: var(--fs-h4); + margin-bottom: 0.5rem; +} + +/***** Main *****/ +main { + height: 92vh; + height: 92svh; + padding: 2rem 0; + width: 100%; + position: relative; + overflow: hidden; +} +main .container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +main .control-panel, +main .console { + background-color: var(--clr-neutral-50); + border-radius: 10px; +} +main .horizontal-divider, +main .vertical-divider { + background-color: var(--clr-neutral-100); +} +main .horizontal-divider, +main .main-content, +main .console { + width: 100%; +} +main .main-content { + display: flex; + align-items: center; + justify-content: center; + min-height: 14.5rem; + height: calc(60% - 1rem); +} +main .main-content .ide, +main .main-content .control-panel, +main .main-content .vertical-divider { + height: 100%; +} +main .main-content .ide { + width: 100%; + overflow: hidden; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; +} +main .main-content .ide__container { + height: calc(100% - 3.5rem); + padding-top: 1rem; + background-color: var(--clr-neutral-50); +} +main .main-content .ide__tabs { + height: 3.5rem; +} +main .main-content .vertical-divider { + width: 2rem; + cursor: col-resize; +} +main .horizontal-divider { + height: 2rem; + cursor: row-resize; +} +main .console { + height: calc(40% - 1rem); +} + +/**Loader**/ +.loader-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-neutral-50); + display: grid; + place-items: center; + opacity: 1; + transition: opacity 500ms ease-in-out; + z-index: 100; +} +.loader-container .loader { + width: 20rem; + animation: fade 1.5s infinite ease-in-out, pulsate 1.5s infinite ease-in-out; +} +.loader-container .loader svg { + width: 100%; +} +.loader-container.hidden { + opacity: 0; + pointer-events: none; +} + +@keyframes fade { + 0% { + opacity: 1; + } + 50% { + opacity: 0.1; + } + 100% { + opacity: 1; + } +} +@keyframes pulsate { + 0% { + transform: scale(1.1); + } + 50% { + transform: scale(1); + } + 100% { + transform: scale(1.1); + } +} +/*** Main Content ***/ +/*** Editor ***/ +.ide__tabs { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +.ide__tabs ul { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + height: 100%; +} +.ide__tabs ul li { + height: 100%; + padding: 1rem; + text-align: left; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + background-color: var(--clr-shades-trans); + color: var(--clr-neutral-300); + margin-right: 2px; + transition: all 250ms ease; + overflow: hidden; + white-space: nowrap; + cursor: pointer; +} +.ide__tabs ul li span { + font-size: 1rem; + font-weight: bold; + margin-right: 1rem; +} +.ide__tabs ul li p { + font-weight: var(--fw-bold); +} +.ide__tabs ul li i { + font-size: var(--fs-p); +} +.ide__tabs ul li.active { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); +} +.ide__tabs ul li:hover .close-tab { + opacity: 1; +} +.ide__tabs ul li:last-child { + margin-right: 0; +} +.ide__tabs__left { + max-width: 80%; + overflow-y: hidden; + overflow-x: auto; +} +.ide__tabs__left li:not(:last-child) { + position: relative; + padding-right: 3rem; +} +.ide__tabs__left li:not(:last-child) .tab-icon { + font-size: 1rem; + margin-right: 1rem; + color: var(--clr-td-300); +} +.ide__tabs__left li:not(:last-child).active .tab-icon { + color: var(--clr-td-500); +} +.ide__tabs__left li:not(:last-child) .close-tab { + position: absolute; + content: ""; + top: 50%; + right: 0; + width: 2rem; + height: 2rem; + transform: translate(-0.5rem, -50%); + background-color: var(--clr-neutral-100); + opacity: 0; + border-radius: 5px; + display: flex; + align-items: center; + justify-content: center; + transition: all 250ms ease-in-out; +} +.ide__tabs__left li:not(:last-child) .close-tab:hover { + background-color: var(--clr-neutral-200); +} +.ide__tabs__left li:not(:last-child) .close-tab i { + pointer-events: none; + font-size: 1.4rem; + height: 1.3rem; +} +.ide__tabs__left li:last-child { + min-width: 3.5rem; + transition: all 250ms ease-in-out; +} +.ide__tabs__left li:last-child:hover { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); +} +.ide__tabs__right { + height: 100%; +} +.ide__tabs__right input[type=radio] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 6rem; + height: 100%; + background-color: var(--clr-shades-trans); + border-top-right-radius: 5px; + border-top-left-radius: 5px; + color: var(--clr-neutral-300); + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + cursor: pointer; + overflow: hidden; + transition: all 250ms ease-in-out; +} +.ide__tabs__right input[type=radio]::before { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.ide__tabs__right input[type=radio]:nth-child(1)::before { + content: "JSON"; +} +.ide__tabs__right input[type=radio]:nth-child(2)::before { + content: "YAML"; +} +.ide__tabs__right input[type=radio]:checked { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); +} +.ide__container .editor { + pointer-events: none; + width: 0; + height: 0; + opacity: 0; +} +.ide__container .editor.active { + pointer-events: all; + min-height: 100%; + width: 100%; + opacity: 1; + transition: opacity 300ms ease-in-out; +} + +/** Control panel **/ +.control-panel { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + overflow: hidden; + width: 8rem; +} +.control-panel__btn { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: var(--clr-primary-500); + background-color: inherit; + border: none; + border-bottom: 2px solid var(--clr-primary-500); + font-family: var(--ff-primary); + cursor: pointer; + transition: all 250ms ease; +} +.control-panel__btn:last-child { + border-bottom: none; +} +.control-panel__btn:hover { + color: var(--clr-neutral-50); + background-color: var(--clr-primary-500); +} +.control-panel__btn i { + font-size: var(--fs-i); +} +.control-panel__btn p { + font-weight: var(--fw-bold); +} +.control-panel__btn .text-icon { + width: -moz-fit-content; + width: fit-content; + opacity: 1; + margin-top: 1rem; + transform: scaleX(1); + transition: opacity 250ms var(--trans-bouncy), transform 250ms var(--trans-bouncy); +} +.control-panel__btn .text-icon.hiddenV { + opacity: 0; + margin: 0; + transform: scaleX(0); + height: 0; + flex: 0; +} +.control-panel__btn .text-icon.hiddenH { + opacity: 0; + margin: 0; + transform: scaleX(0); + height: 0; + flex: 0; +} + +/*** Console ***/ +.console { + overflow: hidden; + display: flex; + flex-direction: column; +} +.console__tabs { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid var(--clr-primary-500); + padding: 0 1rem; + height: -moz-fit-content; + height: fit-content; +} +.console__tabs .console-controllers { + display: flex; + align-items: center; + justify-content: center; +} +.console__tabs .console-controllers .trash, +.console__tabs .console-controllers .download { + padding: 1rem 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + background-color: var(--clr-neutral-50); + color: var(--clr-primary-500); + transition: color 250ms ease; +} +.console__tabs .console-controllers .trash:hover, +.console__tabs .console-controllers .download:hover { + color: var(--clr-primary-900); + cursor: pointer; +} +.console__tabs .console-controllers .trash:disabled, +.console__tabs .console-controllers .download:disabled { + color: var(--clr-neutral-300); + cursor: auto; +} +.console__tabs .console-controllers .download { + margin-right: 1rem; +} +.console__tabs .visualization { + height: 100%; + display: flex; + align-items: center; +} +.console__tabs .visualization input[type=radio] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: -moz-fit-content; + width: fit-content; + padding: 0.5rem 1rem; + background-color: var(--clr-neutral-50); + border-top-right-radius: 5px; + border-top-left-radius: 5px; + color: var(--clr-neutral-300); + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + cursor: pointer; + overflow: hidden; + transition: all 250ms ease-in-out; +} +.console__tabs .visualization input[type=radio]::before { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.console__tabs .visualization input[type=radio]:nth-child(1)::before { + content: "Validation"; +} +.console__tabs .visualization input[type=radio]:nth-child(2)::before { + content: "OpenAPI"; +} +.console__tabs .visualization input[type=radio]:nth-child(3)::before { + content: "AsyncAPI"; +} +.console__tabs .visualization input[type=radio]:nth-child(4)::before { + content: "Defaults"; +} +.console__tabs .visualization input[type=radio]:nth-child(5)::before { + content: "Visualize"; +} +.console__tabs .visualization input[type=radio]:checked { + color: var(--clr-neutral-900); +} +.console__tabs .visualization input[type=radio]:disabled { + color: var(--clr-neutral-200); + cursor: not-allowed; +} +.console__content { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; +} +.console__content .console-error { + position: absolute; + top: 0; + left: 0; + display: grid; + place-items: center; + width: 100%; + height: 100%; + background-color: var(--clr-neutral-50); + opacity: 1; + pointer-events: all; +} +.console__content .console-error p { + font-weight: var(--fw-bold); + color: var(--clr-error-900); + text-align: center; + font-size: var(--fs-sub-header); + transform: scale(1); + transition: transform 250ms var(--trans-bouncy); +} +.console__content .console-error.hidden { + opacity: 0; + pointer-events: none; + transition: opacity 150ms ease-in-out; +} +.console__content .console-error.hidden p { + transform: scale(0); +} +.console__content .console-view { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + opacity: 1; + pointer-events: all; + position: absolute; + top: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; + padding: 2rem; + transition: opacity 250ms ease-in-out; +} +.console__content .console-view.hidden { + width: 0; + height: 0; + opacity: 0; + pointer-events: none; + transition: opacity 0s ease-in-out; +} +.console__content .console-view.validation-view { + overflow: auto; +} +.console__content .console-view.validation-view details { + margin-bottom: 1rem; +} +.console__content .console-view.validation-view details summary .show-icon { + transform: rotate(0); + transition: transform 250ms ease-in-out; +} +.console__content .console-view.validation-view details .section-header { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 1rem; + cursor: pointer; +} +.console__content .console-view.validation-view details .section-header .fa-circle-check { + color: var(--clr-success-500); +} +.console__content .console-view.validation-view details .section-header .fa-circle-exclamation { + color: var(--clr-warning-500); +} +.console__content .console-view.validation-view details .section-header .fa-circle-xmark { + color: var(--clr-error-500); +} +.console__content .console-view.validation-view details .section-header .fa-spinner { + color: var(--clr-neutral-300); + animation: rotate 2s infinite ease-in-out; +} +.console__content .console-view.validation-view details .section-header .fa-circle { + color: var(--clr-neutral-300); +} +.console__content .console-view.validation-view details .section-header .show-icon { + cursor: pointer; +} +.console__content .console-view.validation-view details .section-header .title { + font-weight: var(--fw-bold); +} +.console__content .console-view.validation-view details .section-content, .console__content .console-view.validation-view details .section-additional { + padding: 1rem 2rem; +} +.console__content .console-view.validation-view details .section-content { + list-style-position: inside; + list-style-type: disc; +} +.console__content .console-view.validation-view details .section-content.empty { + padding: 0 0 1rem 0; +} +.console__content .console-view.validation-view details .section-content .notice-prompt { + color: var(--clr-neutral-300); + font-size: var(--fs-footer); +} +.console__content .console-view.validation-view details .section-additional details { + margin-bottom: 1rem; +} +.console__content .console-view.validation-view details .section-additional details summary .show-icon { + transform: rotate(0); + transition: transform 250ms ease-in-out; +} +.console__content .console-view.validation-view details .section-additional details[open] { + margin-bottom: 0; +} +.console__content .console-view.validation-view details .section-additional details[open] summary .show-icon { + transform: rotate(-90deg); +} +.console__content .console-view.validation-view details[open] { + margin-bottom: 0; +} +.console__content .console-view.validation-view details[open] summary .show-icon { + transform: rotate(-90deg); +} +.console__content .open-api-view, +.console__content .async-api-view, +.console__content .defaults-view, +.console__content .visualize-view { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + gap: 1rem; + padding: 2rem 1rem 2rem 0; +} +.console__content .open-api-view .open-api-container, +.console__content .open-api-view .async-api-container, +.console__content .open-api-view .defaults-container, +.console__content .open-api-view .visualize-container, +.console__content .async-api-view .open-api-container, +.console__content .async-api-view .async-api-container, +.console__content .async-api-view .defaults-container, +.console__content .async-api-view .visualize-container, +.console__content .defaults-view .open-api-container, +.console__content .defaults-view .async-api-container, +.console__content .defaults-view .defaults-container, +.console__content .defaults-view .visualize-container, +.console__content .visualize-view .open-api-container, +.console__content .visualize-view .async-api-container, +.console__content .visualize-view .defaults-container, +.console__content .visualize-view .visualize-container { + height: 100%; + width: calc(100% - 30rem); +} +.console__content .open-api-view .open-api-inputs, +.console__content .open-api-view .async-api-inputs, +.console__content .open-api-view .defaults-inputs, +.console__content .open-api-view .visualize-inputs, +.console__content .async-api-view .open-api-inputs, +.console__content .async-api-view .async-api-inputs, +.console__content .async-api-view .defaults-inputs, +.console__content .async-api-view .visualize-inputs, +.console__content .defaults-view .open-api-inputs, +.console__content .defaults-view .async-api-inputs, +.console__content .defaults-view .defaults-inputs, +.console__content .defaults-view .visualize-inputs, +.console__content .visualize-view .open-api-inputs, +.console__content .visualize-view .async-api-inputs, +.console__content .visualize-view .defaults-inputs, +.console__content .visualize-view .visualize-inputs { + width: 30rem; + height: 100%; + padding: 0 1rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + overflow-y: auto; + overflow-x: hidden; + gap: 1rem; +} +.console__content .open-api-view .open-api-inputs button, +.console__content .open-api-view .async-api-inputs button, +.console__content .open-api-view .defaults-inputs button, +.console__content .open-api-view .visualize-inputs button, +.console__content .async-api-view .open-api-inputs button, +.console__content .async-api-view .async-api-inputs button, +.console__content .async-api-view .defaults-inputs button, +.console__content .async-api-view .visualize-inputs button, +.console__content .defaults-view .open-api-inputs button, +.console__content .defaults-view .async-api-inputs button, +.console__content .defaults-view .defaults-inputs button, +.console__content .defaults-view .visualize-inputs button, +.console__content .visualize-view .open-api-inputs button, +.console__content .visualize-view .async-api-inputs button, +.console__content .visualize-view .defaults-inputs button, +.console__content .visualize-view .visualize-inputs button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + width: 100%; + border-radius: 5px; + padding: 0.75rem 1.5rem; + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); + font-family: var(--ff-primary); + font-size: var(--fs-p); + cursor: pointer; + transition: background-color 250ms ease-in-out; + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; +} +.console__content .open-api-view .open-api-inputs button:hover, +.console__content .open-api-view .async-api-inputs button:hover, +.console__content .open-api-view .defaults-inputs button:hover, +.console__content .open-api-view .visualize-inputs button:hover, +.console__content .async-api-view .open-api-inputs button:hover, +.console__content .async-api-view .async-api-inputs button:hover, +.console__content .async-api-view .defaults-inputs button:hover, +.console__content .async-api-view .visualize-inputs button:hover, +.console__content .defaults-view .open-api-inputs button:hover, +.console__content .defaults-view .async-api-inputs button:hover, +.console__content .defaults-view .defaults-inputs button:hover, +.console__content .defaults-view .visualize-inputs button:hover, +.console__content .visualize-view .open-api-inputs button:hover, +.console__content .visualize-view .async-api-inputs button:hover, +.console__content .visualize-view .defaults-inputs button:hover, +.console__content .visualize-view .visualize-inputs button:hover { + background-color: var(--clr-primary-900); +} +.console__content .open-api-view .open-api-inputs button:disabled, +.console__content .open-api-view .async-api-inputs button:disabled, +.console__content .open-api-view .defaults-inputs button:disabled, +.console__content .open-api-view .visualize-inputs button:disabled, +.console__content .async-api-view .open-api-inputs button:disabled, +.console__content .async-api-view .async-api-inputs button:disabled, +.console__content .async-api-view .defaults-inputs button:disabled, +.console__content .async-api-view .visualize-inputs button:disabled, +.console__content .defaults-view .open-api-inputs button:disabled, +.console__content .defaults-view .async-api-inputs button:disabled, +.console__content .defaults-view .defaults-inputs button:disabled, +.console__content .defaults-view .visualize-inputs button:disabled, +.console__content .visualize-view .open-api-inputs button:disabled, +.console__content .visualize-view .async-api-inputs button:disabled, +.console__content .visualize-view .defaults-inputs button:disabled, +.console__content .visualize-view .visualize-inputs button:disabled { + background-color: var(--clr-neutral-300); + cursor: auto; +} +.console__content .open-api-view .open-api-inputs .input-field, +.console__content .open-api-view .async-api-inputs .input-field, +.console__content .open-api-view .defaults-inputs .input-field, +.console__content .open-api-view .visualize-inputs .input-field, +.console__content .async-api-view .open-api-inputs .input-field, +.console__content .async-api-view .async-api-inputs .input-field, +.console__content .async-api-view .defaults-inputs .input-field, +.console__content .async-api-view .visualize-inputs .input-field, +.console__content .defaults-view .open-api-inputs .input-field, +.console__content .defaults-view .async-api-inputs .input-field, +.console__content .defaults-view .defaults-inputs .input-field, +.console__content .defaults-view .visualize-inputs .input-field, +.console__content .visualize-view .open-api-inputs .input-field, +.console__content .visualize-view .async-api-inputs .input-field, +.console__content .visualize-view .defaults-inputs .input-field, +.console__content .visualize-view .visualize-inputs .input-field { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 5px; + overflow: hidden; +} +.console__content .open-api-view .open-api-inputs .input-field button, +.console__content .open-api-view .async-api-inputs .input-field button, +.console__content .open-api-view .defaults-inputs .input-field button, +.console__content .open-api-view .visualize-inputs .input-field button, +.console__content .async-api-view .open-api-inputs .input-field button, +.console__content .async-api-view .async-api-inputs .input-field button, +.console__content .async-api-view .defaults-inputs .input-field button, +.console__content .async-api-view .visualize-inputs .input-field button, +.console__content .defaults-view .open-api-inputs .input-field button, +.console__content .defaults-view .async-api-inputs .input-field button, +.console__content .defaults-view .defaults-inputs .input-field button, +.console__content .defaults-view .visualize-inputs .input-field button, +.console__content .visualize-view .open-api-inputs .input-field button, +.console__content .visualize-view .async-api-inputs .input-field button, +.console__content .visualize-view .defaults-inputs .input-field button, +.console__content .visualize-view .visualize-inputs .input-field button { + border-radius: 0; +} +.console__content .defaults-view .defaults-inputs button { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; +} +.console__content .defaults-view .defaults-inputs button i { + font-size: var(--fs-p); +} +.console__content .visualize-view { + padding-left: 2rem; +} +.console__content .visualize-view .visualize-container .visualized { + width: 100%; + height: 100%; + overflow: auto; + display: grid; + place-items: center; +} +.console__content .visualize-view .visualize-container .visualized svg text { + font-size: 1.2rem; + font-family: var(--ff-secundary); + fill: var(--clr-neutral-900); +} +.console__content .visualize-view .visualize-inputs { + gap: 0; +} +.console__content .visualize-view .visualize-inputs__type { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2rem; + margin-bottom: 1rem; +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + height: 3.25rem; + background-color: var(--clr-primary-500); + cursor: pointer; + transition: background-color 250ms ease-in-out; + position: relative; +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]:hover { + background-color: var(--clr-primary-900); +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]::before { + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: grid; + place-items: center; + font-size: var(--fs-p); + font-family: var(--ff-primary); + text-transform: capitalize; + color: var(--clr-neutral-50); +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]:nth-child(1)::before { + content: "Graph"; +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]:nth-child(2)::before { + content: "Tree"; +} +.console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]:checked { + background-color: var(--clr-neutral-300); + cursor: auto; +} +.console__content .visualize-view .visualize-inputs__graph, .console__content .visualize-view .visualize-inputs__tree { + width: 100%; + height: -moz-fit-content; + height: fit-content; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 2rem; + opacity: 1; + transition: width 0s, height 0s, opacity 250ms ease-in-out; +} +.console__content .visualize-view .visualize-inputs__graph.hidden, .console__content .visualize-view .visualize-inputs__tree.hidden { + width: 0; + height: 0; + opacity: 0; + pointer-events: none; + transition: opacity 0s ease-in-out; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind { + width: 100%; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind span { + font-size: var(--fs-p); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + min-width: 3rem; + text-transform: capitalize; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind span.vega-bind-name { + min-width: 6.5rem; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input, +.console__content .visualize-view .visualize-inputs__tree .vega-bind label select { + width: 100%; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=checkbox] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: 2px solid var(--clr-primary-500); + cursor: pointer; + width: 100%; + border-radius: 5px; + height: 3rem; + position: relative; + background-color: var(--clr-primary-500); + transition: all 250ms ease-in-out; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=checkbox]::before { + position: absolute; + content: "\f06e"; + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + font-size: var(--fs-p); + color: var(--clr-neutral-50); + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + transition: all 500ms ease-in-out; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=checkbox]:hover { + background-color: var(--clr-primary-900); + border-color: var(--clr-primary-900); +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=checkbox]:checked::before { + content: "\f070"; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=range] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 4px; + border-radius: 50vw; + background-color: var(--clr-neutral-200); + cursor: pointer; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=range]::-moz-range-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); + border: none; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label input[type=range] input[type=range]::-ms-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-primary-500); + border: none; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind label select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--clr-primary-500); + border-radius: 5px; + color: var(--clr-neutral-50); + font-size: var(--fs-p); + font-family: var(--ff-primary); + padding: 0.75rem 1rem; + border: none; + cursor: pointer; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind:nth-child(6) .vega-bind-radio { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 5px; + overflow: hidden; + margin-top: 0.5rem; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind:nth-child(6) .vega-bind-radio label { + position: relative; + z-index: 0; + color: var(--clr-neutral-50); + padding: 0.75rem 1.5rem; + justify-content: center; + cursor: pointer; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind:nth-child(6) .vega-bind-radio label input[type=radio] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-primary-500); + cursor: pointer; + z-index: -1; + transition: background-color 250ms ease-in-out; +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind:nth-child(6) .vega-bind-radio label input[type=radio]:hover { + background-color: var(--clr-primary-900); +} +.console__content .visualize-view .visualize-inputs__tree .vega-bind:nth-child(6) .vega-bind-radio label input[type=radio]:checked { + background-color: var(--clr-neutral-300); + cursor: auto; +} +.console__content .visualize-view .visualize-inputs__download { + width: 100%; + height: 100%; + margin-top: 2rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; +} + +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/** Additional menus **/ +/***** settings menu *****/ +.settings-menu { + position: absolute; + top: 0; + right: 0; + width: 50rem; + height: 100%; + background-color: var(--clr-primary-700); + border-radius: 0 0 0 10px; + padding: 4rem; + color: var(--clr-neutral-50); + transform-origin: right; + transition: width 0s ease, height 0s ease, opacity 150ms ease-in-out, transform 500ms var(--trans-bouncy); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + z-index: 100; +} +.settings-menu .settings { + width: 100%; +} +.settings-menu .settings__close { + text-align: right; + margin-bottom: 2rem; +} +.settings-menu .settings__close i { + font-size: var(--fs-h4); + cursor: pointer; +} +.settings-menu .settings__title, .settings-menu .settings__preferences { + padding-bottom: 1rem; + border-bottom: 2px solid var(--clr-neutral-50); + margin: 4rem 0; +} +.settings-menu .settings__validate-options { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 2rem; +} +.settings-menu .settings__validate-options .form-field { + width: calc(50% - 2rem); + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +.settings-menu .settings__validate-options .form-field label { + font-size: var(--fs-p); + max-width: 10ch; +} +.settings-menu .settings__validate-options .form-field input[type=checkbox] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 6rem; + height: 3rem; + border-radius: 50vw; + background-color: var(--clr-controls-bg); + position: relative; + transition: background-color 250ms ease-in-out; + cursor: pointer; +} +.settings-menu .settings__validate-options .form-field input[type=checkbox]::before { + content: ""; + position: absolute; + top: 0.4rem; + left: 0.4rem; + width: 2.2rem; + height: 2.2rem; + border-radius: 50%; + background-color: var(--clr-controls); + transition: left 500ms var(--trans-bouncy); +} +.settings-menu .settings__validate-options .form-field input[type=checkbox]:checked { + background-color: var(--clr-success-500); +} +.settings-menu .settings__validate-options .form-field input[type=checkbox]:checked::before { + left: 3.2rem; +} +.settings-menu .settings__editor { + width: 100%; +} +.settings-menu .settings__editor .form-field { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + font-size: var(--fs-p); + margin-bottom: 2rem; +} +.settings-menu .settings__editor .form-field span { + font-weight: var(--fw-bold); +} +.settings-menu .settings__editor .form-field select { + width: 60%; + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + padding: 0.5rem 1rem; + border-radius: 5px; + border: none; + cursor: pointer; + font-family: var(--ff-primary); +} +.settings-menu .settings__editor .form-field .font-range-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: 1rem; + width: 100%; + padding: 1rem 0; +} +.settings-menu .settings__editor .form-field .font-range-container span { + width: -moz-fit-content; + width: fit-content; +} +.settings-menu .settings__editor .form-field input[type=range] { + flex: 1; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 4px; + border-radius: 50vw; + background-color: var(--clr-controls-bg); + cursor: pointer; + /* All the same stuff for Firefox */ +} +.settings-menu .settings__editor .form-field input[type=range]::-moz-range-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); + border: none; +} +.settings-menu .settings__editor .form-field input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); +} +.settings-menu .settings__editor .form-field input[type=range] input[type=range]::-ms-thumb { + height: 2rem; + width: 2rem; + border-radius: 50%; + background-color: var(--clr-controls); + border: none; +} +.settings-menu .settings__editor .form-field .reset-settings { + width: 100%; + border: none; + padding: 1rem 2rem; + border-radius: 5px; + background-color: var(--clr-controls-bg); + color: var(--clr-controls); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + font-family: var(--ff-primary); + cursor: pointer; + transition: background-color 250ms ease-in-out; +} +.settings-menu .settings__editor .form-field .reset-settings:hover { + background-color: var(--clr-primary-900); +} +.settings-menu .settings__editor .form-field .reset-settings:active { + transform: scale(0.98); +} +.settings-menu .settings__editor .form-field:nth-child(2) { + flex-direction: column; + align-items: self-start; +} +.settings-menu footer { + width: 100%; + text-align: center; +} +.settings-menu footer p { + margin-bottom: 1rem; +} +.settings-menu footer .footer-links { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} +.settings-menu footer .footer-links a { + font-size: 1.2rem; + padding: 0 1rem; + height: 100%; +} +.settings-menu footer .footer-links a:not(:last-child) { + border-right: 1px solid var(--clr-neutral-50); +} + +.settings-menu.closed { + width: 0; + height: 0; + opacity: 0; + transform: scaleX(0); + transition: transform 500ms var(--trans-bouncy), opacity 250ms ease-in-out 250ms, width 0s ease 500ms, height 0s ease 500ms; +} + +/**** Examples Menu ****/ +.examples-menu { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 2rem; + background-color: var(--clr-neutral-100); + display: grid; + place-items: center; + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); +} +.examples-menu .examples-menu-container { + overflow: hidden; + background-color: var(--clr-neutral-50); + width: 100%; + height: 100%; + padding: 2rem; + border-radius: 10px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.examples-menu .examples-menu-container__close { + width: 100%; + text-align: right; +} +.examples-menu .examples-menu-container__close i { + font-size: var(--fs-h4); + cursor: pointer; +} +.examples-menu .examples-menu-container__filter { + width: 100%; + padding: 4rem; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 2rem; + flex-wrap: wrap; + font-size: var(--fs-p); +} +.examples-menu .examples-menu-container__filter p { + font-weight: var(--fw-bold); + font-size: inherit; +} +.examples-menu .examples-menu-container__filter .form-field { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} +.examples-menu .examples-menu-container__filter .form-field label { + width: 0; + height: 0; + opacity: 0; +} +.examples-menu .examples-menu-container__filter .form-field .select-container { + position: relative; + width: 100%; +} +.examples-menu .examples-menu-container__filter .form-field .select-container::after { + position: absolute; + top: 50%; + right: 2rem; + transform: translateY(-50%); + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + content: "\f0d7"; + pointer-events: none; +} +.examples-menu .examples-menu-container__filter .form-field select, +.examples-menu .examples-menu-container__filter .form-field .search-bar, +.examples-menu .examples-menu-container__filter .form-field .search-input { + background-color: var(--clr-neutral-50); + color: var(--clr-neutral-900); + font-family: var(--ff-primary); + font-size: inherit; +} +.examples-menu .examples-menu-container__filter .form-field select, +.examples-menu .examples-menu-container__filter .form-field .search-bar { + border: 2px solid var(--clr-neutral-300); +} +.examples-menu .examples-menu-container__filter .form-field select { + padding: 0.8rem 6rem 0.8rem 2rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; +} +.examples-menu .examples-menu-container__filter .form-field select { + width: 100%; + border-radius: 5px; + text-transform: capitalize; +} +.examples-menu .examples-menu-container__filter .form-field .search-bar { + width: 100%; + overflow: hidden; + display: flex; + align-items: center; + justify-content: flex-start; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + border-right: none; +} +.examples-menu .examples-menu-container__filter .form-field .search-bar i { + width: -moz-fit-content; + width: fit-content; + padding: 0 1rem; + font-size: inherit; +} +.examples-menu .examples-menu-container__filter .form-field .search-bar .search-input { + border: none; + width: 100%; + padding: 0.8rem 1rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: text; +} +.examples-menu .examples-menu-container__filter .form-field .search-bar .search-input:focus { + outline: none; +} +.examples-menu .examples-menu-container__filter .form-field .search-btn { + background-color: var(--clr-primary-500); + font-family: inherit; + font-size: inherit; + padding: 1rem 2rem; + border: none; + color: var(--clr-neutral-50); + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + cursor: pointer; + transition: background-color 250ms ease-in-out; +} +.examples-menu .examples-menu-container__filter .form-field .search-btn:hover { + background-color: var(--clr-primary-700); +} +.examples-menu .examples-menu-container .examples-container { + display: flex; + flex-direction: row; + width: 100%; + height: 100%; + overflow-y: hidden; +} +.examples-menu .examples-menu-container .examples-container__td, .examples-menu .examples-menu-container .examples-container__tm { + width: 100%; + min-height: -moz-fit-content; + min-height: fit-content; + opacity: 1; + overflow-y: auto; + transition: opacity 250ms ease-in-out 250ms, width 250ms ease-in-out 0ms, height 250ms ease-in-out 0ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__title, .examples-menu .examples-menu-container .examples-container__tm .examples-category__title { + padding: 0 4rem; + position: relative; + z-index: 0; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__title::before, .examples-menu .examples-menu-container .examples-container__tm .examples-category__title::before { + position: absolute; + content: ""; + top: 50%; + left: 4rem; + width: calc(100% - 8rem); + height: 0.5rem; + background-color: var(--clr-primary-500); + z-index: -1; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__title h3, .examples-menu .examples-menu-container .examples-container__tm .examples-category__title h3 { + width: -moz-fit-content; + width: fit-content; + background-color: var(--clr-neutral-50); + padding: 0 1rem; + margin-left: 8rem; + text-transform: capitalize; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__description, .examples-menu .examples-menu-container .examples-container__tm .examples-category__description { + padding: 2rem 4rem 0 4rem; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__description p, .examples-menu .examples-menu-container .examples-container__tm .examples-category__description p { + font-size: var(--fs-p); +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container { + padding: 4rem; + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + flex-wrap: wrap; + gap: 2rem; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example { + background-color: var(--clr-neutral-50); + border-radius: 5px; + width: -moz-fit-content; + width: fit-content; + padding: 2rem; + box-shadow: 0px 0px 5px 0px var(--clr-shadow); +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__name, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__name { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 2rem; + cursor: pointer; + transition: all 250ms ease-in-out 250ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__name i, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__name i { + color: var(--clr-primary-500); +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__name p, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__name p { + font-weight: var(--fw-bold); +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__content, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__content { + pointer-events: none; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + flex-wrap: wrap; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__description, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__description { + height: 0; + opacity: 0; + font-size: var(--fs-p); + line-height: var(--lh-sub-header); + max-width: 50ch; + overflow-y: scroll; + overflow-x: hidden; + padding-right: 1rem; + transition: height 250ms ease-in-out 250ms, margin 250ms ease-in-out 250ms, opacity 250ms ease-in-out 0ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__btn, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__btn { + display: flex; + gap: 2rem; + height: 0; + opacity: 0; + transition: opacity 250ms ease-in-out 0ms, height 250ms ease-in-out 250ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__btn button, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__btn button { + padding: 0.5rem 1.5rem; + border-radius: 5px; + border: 1px solid var(--clr-neutral-300); + background-color: var(--clr-neutral-50); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + cursor: pointer; + transition: background-color 250ms ease-in-out; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__btn button:hover, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__btn button:hover { + background-color: var(--clr-neutral-300); +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__btn button p, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__btn button p { + font-size: inherit; + color: inherit; + font-family: inherit; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example__btn button i, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example__btn button i { + font-size: inherit; + margin-right: 1rem; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example.open .example__name, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example.open .example__name { + border-bottom: 2px solid var(--clr-primary-500); + padding-bottom: 2rem; + transition: all 250ms ease-in-out 0s; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example.open .example__content, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example.open .example__content { + pointer-events: all; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example.open .example__description, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example.open .example__description { + height: 9rem; + margin: 2rem 0; + opacity: 1; + transition: height 250ms ease-in-out 0s, margin 250ms ease-in-out 0s, opacity 200ms ease-in-out 250ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category__container .example.open .example__btn, .examples-menu .examples-menu-container .examples-container__tm .examples-category__container .example.open .example__btn { + height: 3rem; + opacity: 1; + transition: height 250ms ease-in-out 0s, opacity 200ms ease-in-out 250ms; +} +.examples-menu .examples-menu-container .examples-container__td .examples-category.hidden, .examples-menu .examples-menu-container .examples-container__tm .examples-category.hidden { + height: 0; + opacity: 0; + transition: opacity 100ms ease-in-out 0s, height 0s ease-in-out 250ms; +} +.examples-menu .examples-menu-container .examples-container__td.hidden, .examples-menu .examples-menu-container .examples-container__tm.hidden { + width: 0; + height: 0; + opacity: 0; + transition: opacity 100ms ease-in-out 0s, width 0s ease-in-out 250ms, height 0s ease-in-out 250ms; +} +.examples-menu.closed { + transform: scale(0); + opacity: 0; + pointer-events: none; +} + +@media screen and (min-width: 1024px) { + .examples-menu .examples-menu-container__filter { + width: 100%; + flex-wrap: wrap; + } + .examples-menu .examples-menu-container__filter .form-field { + width: calc(33% - 4rem); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + } + .examples-menu .examples-menu-container__filter .form-field .select-container { + position: relative; + width: 100%; + } + .examples-menu .examples-menu-container__filter .form-field .select-container::after { + position: absolute; + top: 50%; + right: 2rem; + transform: translateY(-50%); + display: inline-block; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font: var(--fa-font-solid); + content: "\f0d7"; + pointer-events: none; + } + .examples-menu .examples-menu-container__filter .form-field select { + width: 100%; + } + .examples-menu .examples-menu-container__filter .form-field .search-bar { + width: 100%; + } +} +.save-menu { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: grid; + place-items: center; + background-color: var(--clr-shades-trans); + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); +} +.save-menu__container { + width: 50rem; + border-radius: 10px; + background-color: var(--clr-neutral-50); + box-shadow: 0px 0px 10px 0px var(--clr-shadow); + padding: 2rem; +} +.save-menu__container .save-menu-close { + width: 100%; + text-align: right; + margin-bottom: 2rem; +} +.save-menu__container .save-menu-close i { + font-size: var(--fs-sub-header); + cursor: pointer; +} +.save-menu__container .save-menu-title { + margin-bottom: 3rem; +} +.save-menu__container .save-menu-title p { + color: var(--clr-neutral-900); + font-weight: var(--fw-bold); + font-size: var(--fs-sub-header); +} +.save-menu__container .share-td { + width: 100%; + margin-bottom: 3rem; +} +.save-menu__container .share-td > * { + width: 100%; + height: 4rem; + border-radius: 5px; + font-family: var(--ff-primary); + font-size: var(--fs-p); +} +.save-menu__container .share-td__input { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + margin-bottom: 1rem; +} +.save-menu__container .share-td__input .share-url-input { + width: 100%; + height: 4rem; + background-color: var(--clr-neutral-50); + border-top: 2px solid var(--clr-neutral-200); + border-left: 2px solid var(--clr-neutral-200); + border-bottom: 2px solid var(--clr-neutral-200); + border-right: none; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + font-family: var(--ff-primary); + font-size: var(--fs-p); + padding: 1rem; +} +.save-menu__container .share-td__input .share-url-input.error { + color: var(--clr-error-500); +} +.save-menu__container .share-td__input .share-url-input:focus { + outline: none; +} +.save-menu__container .share-td__input .open-url-tab { + height: 4rem; + width: -moz-fit-content; + width: fit-content; + background-color: var(--clr-neutral-200); + color: var(--clr-neutral-50); + font-size: var(--fs-p); + padding: 1rem; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border: none; + cursor: pointer; + transition: background-color 250ms ease-in-out; +} +.save-menu__container .share-td__input .open-url-tab:hover { + background-color: var(--clr-neutral-300); +} +.save-menu__container .share-td__input .open-url-tab:disabled { + background-color: var(--clr-neutral-200); + cursor: default; +} +.save-menu__container .share-td__btn { + cursor: pointer; + font-weight: var(--fw-bold); + transition: all 250ms ease-in-out; +} +.save-menu__container .share-td__btn.share-url { + margin-bottom: 1rem; + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); + border: none; + transition: background-color 250ms ease-in-out; +} +.save-menu__container .share-td__btn.share-url i { + margin-right: 1rem; +} +.save-menu__container .share-td__btn.share-url:hover { + background-color: var(--clr-primary-700); +} +.save-menu__container .share-td__btn.open-editdor { + border: 2px solid var(--clr-primary-500); + background-color: transparent; + color: var(--clr-primary-500); + transition: all 250ms ease-in-out; +} +.save-menu__container .share-td__btn.open-editdor:hover { + background-color: var(--clr-primary-700); + border-color: var(--clr-primary-700); + color: var(--clr-neutral-50); +} +.save-menu__container .save-td { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-bottom: 0.5rem; +} +.save-menu__container .save-td > * { + flex: 1; + height: 4rem; + border-radius: 5px; + border: none; + color: var(--clr-neutral-50); + background-color: var(--clr-primary-500); + cursor: pointer; + font-family: var(--ff-primary); + font-size: var(--fs-p); + font-weight: var(--fw-bold); + transition: background-color 250ms ease-in-out; +} +.save-menu__container .save-td > *:disabled { + background-color: var(--clr-primary-100); + cursor: not-allowed; +} +.save-menu__container .save-td > *:disabled:hover { + background-color: var(--clr-primary-100); +} +.save-menu__container .save-td > * i { + margin-right: 1rem; +} +.save-menu__container .save-td > *:hover { + background-color: var(--clr-primary-700); +} +.save-menu__container .save-warning { + margin-bottom: 3rem; +} +.save-menu__container .save-warning p { + color: var(--clr-neutral-300); + font-size: var(--fs-footer); + transition: color 150ms ease-in-out; +} +.save-menu__container .save-warning p span { + font-weight: var(--fw-bold); +} +.save-menu__container .save-warning.active p { + color: var(--clr-error-500); +} +.save-menu.closed { + transform: scale(0); + opacity: 0; + pointer-events: none; +} + +.json-yaml-warning { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-shades-trans); + display: grid; + place-items: center; + opacity: 1; + transform: scale(1); + pointer-events: all; + transition: all 500ms var(--trans-bouncy); +} +.json-yaml-warning__container { + background-color: var(--clr-neutral-50); + border-radius: 10px; + box-shadow: 0px 0px 10px 0px var(--clr-shadow); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 2rem; +} +.json-yaml-warning__container .warning-text { + margin-bottom: 2rem; +} +.json-yaml-warning__container .warning-text h3 { + text-align: center; + color: var(--clr-warning-500); + margin-bottom: 1rem; +} +.json-yaml-warning__container .warning-text p { + max-width: 40rem; +} +.json-yaml-warning__container .warning-btns button { + cursor: pointer; + border: none; + padding: 0.75rem 1.75rem; + border-radius: 5px; + font-size: var(--fs-p); + font-weight: var(--fw-bold); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + transition: background-color 250ms ease-in-out; +} +.json-yaml-warning__container .warning-btns .confirm-btn { + background-color: var(--clr-success-500); + margin-right: 1rem; +} +.json-yaml-warning__container .warning-btns .confirm-btn:hover { + background-color: var(--clr-success-900); +} +.json-yaml-warning__container .warning-btns .cancel-btn { + background-color: var(--clr-error-500); +} +.json-yaml-warning__container .warning-btns .cancel-btn:hover { + background-color: var(--clr-error-900); +} +.json-yaml-warning.closed { + transform: scale(0); + opacity: 0; + pointer-events: none; +} + +/** Visualizations **/ +svg { + border: none; +} +svg g .node { + cursor: pointer; +} +svg g .link { + fill: none; + stroke: var(--clr-neutral-300); + stroke-width: 1px; +} + +.d3-tip { + font-size: var(--fs-p); + font-family: var(--ff-secundary); + color: var(--clr-neutral-900); + border: 1px solid var(--clr-neutral-300); + border-radius: 5px; + padding: 1rem 2rem; + max-width: 30rem; + word-wrap: break-word; + background-color: var(--clr-neutral-50); + text-align: left; + z-index: 10; +}/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/packages/web-new/src/styles/styles.css.map b/packages/web-new/src/styles/styles.css.map new file mode 100644 index 000000000..bb9d22321 --- /dev/null +++ b/packages/web-new/src/styles/styles.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.scss","styles.css","_editor.scss","_control-panel.scss","_console.scss","_settings-menu.scss","_examples-menu.scss","_save-menu.scss","_json-yaml-warning.scss","_jsonld-vis.scss"],"names":[],"mappings":"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","file":"styles.css"} \ No newline at end of file diff --git a/packages/web-new/src/styles/styles.scss b/packages/web-new/src/styles/styles.scss new file mode 100644 index 000000000..4fa45b6ac --- /dev/null +++ b/packages/web-new/src/styles/styles.scss @@ -0,0 +1,433 @@ +/*** Globals **/ +*, +*::before, +*::after { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + /*Fonts styles*/ + --ff-primary: 'Roboto', sans-serif; + --ff-secundary: 'Open Sans', sans-serif; + + /*Font weights*/ + --fw-light: 300; + --fw-regular: 400; + --fw-bold: 700; + --fw-black: 900; + + /*Font sizes*/ + //default font size fallback values + --fs-h1: 3.5rem; + --fs-h2: 3rem; + --fs-h3: 2.5rem; + --fs-h4: 2rem; + --fs-sub-header: 1.8rem; + --fs-p: 1.4rem; + --fs-footer: 1rem; + --fs-i: 1.8rem; + + //responsive font size values + --fs-h1: clamp(3rem, 2.8rem + 0.625vw, 4rem); + --fs-h2: clamp(2.5rem, 2.3rem + 0.625vw, 3.5rem); + --fs-h3: clamp(2rem, 1.8rem + 0.625vw, 3rem); + --fs-h4: clamp(1.5rem, 1.3rem + 0.625vw, 2.5rem); + --fs-sub-header: clamp(1.4rem, 1.239rem + 0.5vw, 2.2rem); + --fs-p: clamp(1.2rem, 1.119rem + 0.25vw, 1.6rem); + --fs-footer: clamp(0.8rem, 0.7200000000000001rem + 0.24999999999999997vw, 1.2rem); + --fs-i: clamp(1.4rem, 1.279rem + 0.375vw, 2rem); + + /*line heights*/ + --lh-h1: 5rem; + --lh-h2: 4.5rem; + --lh-h3: 4rem; + --lh-h4: 3.5rem; + --lh-sub-header: 3rem; + --lh-p: 2rem; + --lh-footer: 1.5rem; + --lh-i: 2.2rem; + + /*colors*/ + //neutrals + --clr-neutral-50: #FFFFFE; + --clr-neutral-100: #E4E6E6; + --clr-neutral-200: #CACCCC; + --clr-neutral-300: #B1B3B3; + --clr-neutral-900: #141414; + + //primary + --clr-primary-100: #95E5D9; + --clr-primary-300: #5ED1C0; + --clr-primary-500: #33B8A4; + --clr-primary-700: #179985; + --clr-primary-900: #067362; + + //shades + --clr-shades-trans: rgba(255, 255, 255, 0.6); + --clr-shadow: rgba(0, 0, 0, 0.4); + + //success + --clr-success-100: #80F2AA; + --clr-success-300: #63E592; + --clr-success-500: #4ADE80; + --clr-success-700: #2DC464; + --clr-success-900: #16AB4C; + + //warning + --clr-warning-100: #FFDE59; + --clr-warning-300: #FCD63F; + --clr-warning-500: #FACC15; + --clr-warning-700: #EDBF09; + --clr-warning-900: #E0B300; + + //error + --clr-error-100: #FAA5A5; + --clr-error-300: #FA8C8C; + --clr-error-500: #F87171; + --clr-error-700: #EB5454; + --clr-error-900: #DE3A3A; + + //td + --clr-td-300: #d6935d; + --clr-td-500: #E07A26; + + //settings menu + --clr-controls: var(--clr-neutral-50); + --clr-controls-bg: var(--clr-primary-500); + + /* transitions */ + --trans-bouncy: cubic-bezier(0.68, -0.75, 0.27, 1.75); +} + +//IDE Themes +.dark-mode { + --clr-neutral-50: #1E1E1E; + --clr-neutral-100: #4C4D4C; + --clr-neutral-200: #656666; + --clr-neutral-300: #7E807F; + --clr-neutral-900: #FFFFFE; + + --clr-shades-trans: rgba(30, 30, 30, 0.7); + --clr-shadow: rgba(255, 255, 255, 0.4); +} + +.monochrome-mode { + --clr-neutral-50: #549087; + --clr-neutral-100: #4C4D4C; + --clr-neutral-200: #656666; + --clr-neutral-300: #7E807F; + --clr-neutral-900: #FFFFFE; + + --clr-primary-500: #FFFFFE; + --clr-primary-700: #E4E6E6; + + --clr-controls: #FFFFFE; + --clr-controls-bg: var(--clr-neutral-50); + + --clr-shades-trans: rgba(84, 144, 135, 0.7); + --clr-shadow: rgba(255, 255, 255, 0.4); +} + +html { + font-size: 62.5%; + scroll-behavior: smooth; +} + +body { + background-color: var(--clr-neutral-100); + font-family: var(--ff-primary); + color: var(--clr-neutral-900); + position: relative; +} + +h1 { + font-size: var(--fs-h1); + line-height: var(--lh-h1); + font-weight: var(--fw-bold); +} + +h2 { + font-size: var(--fs-h2); + line-height: var(--lh-h2); + font-weight: var(--fw-bold); +} + +h3 { + font-size: var(--fs-h3); + line-height: var(--lh-h3); + font-weight: var(--fw-bold); +} + +h4 { + font-size: var(--fs-h4); + line-height: var(--lh-h4); + font-weight: var(--fw-bold); +} + +h5 { + font-size: var(--fs-h5); + line-height: var(--lh-h5); + font-weight: var(--fw-bold); +} + +p, +li { + font-size: var(--fs-p); + line-height: var(--lh-sub-header); + font-weight: var(--fw-regular); +} + +a { + text-decoration: none; + font-size: inherit; + color: inherit; + font-weight: var(--fw-regular); +} + +i { + font-size: var(--fs-i); +} + +ul { + list-style: none; +} + +img { + width: 100%; + height: 100%; +} + +.container { + padding: 0 2rem; + margin: 0 auto; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +/* Track */ +::-webkit-scrollbar-track { + background-color: var(--clr-neutral-50); +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: var(--clr-primary-500); + border-radius: 50vh; + border: 1px solid var(--clr-neutral-50); +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + border: none; +} + +@supports (scrollbar-color: var(--clr-primary-500) var(--clr-neutral-50)){ + *{ + scrollbar-color: var(--clr-primary-500) var(--clr-neutral-50); + } +} + + +/***** Header *****/ +header { + background-color: var(--clr-primary-500); + color: var(--clr-neutral-50); + + .navbar { + min-height: 8vh; + min-height: 8svh; + max-height: 8vh; + max-height: 8svh; + padding: 1rem 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + &__logo { + width: 15rem; + + .logo { + path { + fill: var(--clr-neutral-50); + } + } + } + + &__title{ + span{ + font-size: var(--fs-footer); + } + } + + &__links { + display: flex; + align-items: center; + justify-content: center; + + a { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: var(--fs-p); + transition: color 250ms ease; + + &:hover { + color: var(--clr-neutral-200); + } + } + + .cli-link { + margin-right: 3rem; + } + + i { + font-size: var(--fs-h4); + margin-bottom: .5rem; + } + } + } +} + +/***** Main *****/ + +main { + height: 92vh; + height: 92svh; + padding: 2rem 0; + width: 100%; + position: relative; + overflow: hidden; + + .container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .control-panel, + .console { + background-color: var(--clr-neutral-50); + border-radius: 10px; + } + + .horizontal-divider, + .vertical-divider { + background-color: var(--clr-neutral-100); + } + + .horizontal-divider, + .main-content, + .console { + width: 100%; + } + + .main-content { + display: flex; + align-items: center; + justify-content: center; + min-height: 14.5rem; + height: calc(60% - 1rem); + + .ide, + .control-panel, + .vertical-divider { + height: 100%; + } + + .ide { + width: 100%; + overflow: hidden; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + + &__container { + height: calc(100% - 3.5rem); + padding-top: 1rem; + background-color: var(--clr-neutral-50); + } + + &__tabs { + height: 3.5rem; + } + } + + .vertical-divider { + width: 2rem; + cursor: col-resize; + } + } + + .horizontal-divider { + height: 2rem; + cursor: row-resize; + } + + .console { + height: calc(40% - 1rem); + } +} + +/**Loader**/ +.loader-container{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--clr-neutral-50); + display: grid; + place-items: center; + opacity: 1; + transition: opacity 500ms ease-in-out; + z-index: 100; + + .loader{ + width: 20rem; + animation: fade 1.5s infinite ease-in-out, pulsate 1.5s infinite ease-in-out; + svg{ + width: 100% + } + } + + &.hidden{ + opacity: 0; + pointer-events: none; + } +} + +@keyframes fade{ + 0%{opacity: 1;} + 50%{opacity: .1;} + 100%{opacity: 1;} +} + +@keyframes pulsate{ + 0%{transform: scale(1.1);} + 50%{transform: scale(1);} + 100%{transform: scale(1.1);} +} + +/*** Main Content ***/ + +@import "editor"; +@import "control-panel"; +@import "console"; + +/** Additional menus **/ +@import "settings-menu"; +@import "examples-menu"; +@import "save-menu"; +@import "json-yaml-warning"; + +/** Visualizations **/ +@import "jsonld-vis" \ No newline at end of file diff --git a/packages/web-new/src/template.html b/packages/web-new/src/template.html new file mode 100644 index 000000000..4ccf65912 --- /dev/null +++ b/packages/web-new/src/template.html @@ -0,0 +1,668 @@ + + + + + + + + TD Playground + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
+ + + + + + + +
+
+
+
+
    +
  • + +
  • +
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + +
+
+
+ +
+
+
+ +
+

Settings

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+

Preferences

+
+
+ + +
+ +
+ +
+ 6 + + 40 +
+
+ +
+ +
+
+
+ + +
+ + +
+
+
+ +
+ +
+

Filter by:

+
+ +
+ +
+
+
+ +
+ +
+
+
+ + + +
+
+ +
+
+ +
+ + +
+
+
+ + +
+
+
+ +
+ +
+

Share this TD by creating a link or donwload it to your device! +

+
+ + + +
+ + +
+ +
+

*The Save as function is currently only available for Chrome, Edge and + Opera*

+
+ +
+
+ + +
+
+
+

Warning!

+

YAML conversion for TD is still experimental. If you still wish to continue, please confirm by + clicking on the button.

+
+
+ + +
+
+
+ +
+ + + \ No newline at end of file diff --git a/packages/web-new/webpack.config.js b/packages/web-new/webpack.config.js new file mode 100644 index 000000000..cd0c5606d --- /dev/null +++ b/packages/web-new/webpack.config.js @@ -0,0 +1,104 @@ +/** + * @file The `webpack.config.js` takes care of all the configuration values for webpack + * to bundle and compile all the necessary modules. This includes bundling all the multiple + * js files as well as the external modules and dependencies. Once its set to production it also + * works as a minifier to further optimize the code and create an optimized production-ready dist folder. + */ + +const path = require('path') +const HtmlWebpackPlugin = require('html-webpack-plugin') +// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin +const CopyWebpackPlugin = require('copy-webpack-plugin') +const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); + +module.exports = { + mode: 'development', + entry: { + bundle: path.resolve(__dirname, 'src/scripts/main.js'), + styles: path.resolve(__dirname, 'src/styles/styles.css'), + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name][contenthash].js', + clean: true, + assetModuleFilename: '[name][ext]', + }, + devtool: 'source-map', + devServer: { + static: { + directory: path.resolve(__dirname, 'dist') + }, + port: 3000, + open: true, + hot: true, + compress: true, + historyApiFallback: true, + }, + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + }, + { + test: /\.(png|svg|jpg|jpeg|gif|ico)$/i, + type: 'asset/resource' + }, + { + test:/\.scss$/, + use: ['style-loader','css-loader','sass-loader'], + }, + { + test: /\.css$/i, + use: [MiniCssExtractPlugin.loader, 'css-loader'], + }, + { + test: /\.ttf$/, + type: 'asset/resource' + }, + { + test: /\.json$/, + use: 'json-loader', + type: 'javascript/auto', // Necessary for Webpack 5 + }, + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + title: 'Webpack App', + filename: 'index.html', + template: 'src/template.html', + favicon: 'src/assets/favicon/favicon.ico' + }), + // new BundleAnalyzerPlugin(), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/assets/favicon', + to: 'favicon', + }, + { + from: './src/examples-paths', + to: 'examples-paths', + }, + ], + }), + new MonacoWebpackPlugin(), + new MiniCssExtractPlugin({ + filename: '[name].[contenthash].css', + }) + ], + optimization: { + minimizer: [ + new CssMinimizerPlugin(), + ] + } +} \ No newline at end of file From 28185c2878ffe50a91ed6f0af4345490a8c601ba Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Mon, 18 Sep 2023 20:54:22 +0200 Subject: [PATCH 02/12] fixes to the generate path js and package.json --- packages/web-new/external-scripts/generate-paths.js | 5 ++--- packages/web-new/package.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/web-new/external-scripts/generate-paths.js b/packages/web-new/external-scripts/generate-paths.js index df9d39c2f..e4641ccee 100644 --- a/packages/web-new/external-scripts/generate-paths.js +++ b/packages/web-new/external-scripts/generate-paths.js @@ -63,16 +63,15 @@ async function getExamples(){ async function writeExamplesToFile(){ const examplesData = await getExamples() - console.log(examplesData); try { const jsonData = JSON.stringify(examplesData, null, 2) const filePath = "./src/examples-paths/examples-paths.json" await fs.writeFile(filePath, jsonData, 'utf-8') - console.log("File created succesfully"); + console.log("File created succesfully") } catch (err) { - console.error("Failed to wirte JSON file: ", err); + console.error("Failed to wirte JSON file: ", err) } } diff --git a/packages/web-new/package.json b/packages/web-new/package.json index 79b65ce26..4932cf72e 100644 --- a/packages/web-new/package.json +++ b/packages/web-new/package.json @@ -4,7 +4,7 @@ "description": "New design for the browser GUI for the Web of Things - Thing Description Playground", "main": "index.js", "scripts": { - "build": "webpack", + "build": "node external-scripts/generate-paths.js && webpack", "dev": "webpack && node server/server.js", "server": "node server/server.js", "examples": "node external-scripts/generate-paths.js" From 36cbff3987c06e24ecafbac95931be9cf65acaaa Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Mon, 18 Sep 2023 21:11:40 +0200 Subject: [PATCH 03/12] removed gitignore --- packages/web-new/.gitattributes | 2 -- packages/web-new/.gitignore | 2 -- 2 files changed, 4 deletions(-) delete mode 100644 packages/web-new/.gitattributes delete mode 100644 packages/web-new/.gitignore diff --git a/packages/web-new/.gitattributes b/packages/web-new/.gitattributes deleted file mode 100644 index dfe077042..000000000 --- a/packages/web-new/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/packages/web-new/.gitignore b/packages/web-new/.gitignore deleted file mode 100644 index 76add878f..000000000 --- a/packages/web-new/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file From fe665f197ff789dcdff1eecae0889c5b9d581712 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 19 Sep 2023 15:08:22 +0200 Subject: [PATCH 04/12] fixed deleted git files, package.json for web-new --- .gitattributes | 2 +- .gitignore | 2 +- packages/web-new/package.json | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.gitattributes b/.gitattributes index 75c48d21c..8c1a980c8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -31,4 +31,4 @@ LICENSE text eol=lf *.gif binary *.jpg binary *.node binary -*.png binary +*.png binary \ No newline at end of file diff --git a/.gitignore b/.gitignore index 06bc37ca4..ab58cf437 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,4 @@ log.json eslint-results.sarif # junit test results -junit-tests.xml +junit-tests.xml \ No newline at end of file diff --git a/packages/web-new/package.json b/packages/web-new/package.json index 4932cf72e..f6086088d 100644 --- a/packages/web-new/package.json +++ b/packages/web-new/package.json @@ -1,16 +1,25 @@ { "name": "@thing-description-playground/web-new", + "author": "Eclipse Thingweb (https://thingweb.io/)", + "license": "EPL-2.0 OR W3C-20150513", "version": "1.0.0", "description": "New design for the browser GUI for the Web of Things - Thing Description Playground", + "homepage": "https://github.com/eclipse-thingweb/playground#readme", + "bugs": { + "url": "https://github.com/eclipse-thingweb/playground/issues" + }, "main": "index.js", + "repository": { + "type": "git", + "url": "https://github.com/eclipse-thingweb/playground.git", + "directory": "packages/web-new" + }, "scripts": { "build": "node external-scripts/generate-paths.js && webpack", "dev": "webpack && node server/server.js", "server": "node server/server.js", "examples": "node external-scripts/generate-paths.js" }, - "author": "Eclipse Thingweb (https://thingweb.io/)", - "license": "ISC", "devDependencies": { "@babel/core": "^7.22.9", "@babel/preset-env": "^7.22.9", @@ -42,4 +51,4 @@ "vega": "^5.22.1", "vega-embed": "^6.21.0" } -} +} \ No newline at end of file From 9e3bee6da14c8fb97c61fd8171be79da7975ea2c Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 19 Sep 2023 15:41:00 +0200 Subject: [PATCH 05/12] added license headers --- .vscode/templates/scss.lict | 12 +++++++++++ .../external-scripts/generate-paths.js | 15 ++++++++++++++ packages/web-new/server/server.js | 15 ++++++++++++++ packages/web-new/src/scripts/async-api.js | 15 ++++++++++++++ packages/web-new/src/scripts/console.js | 15 ++++++++++++++ packages/web-new/src/scripts/defaults.js | 15 ++++++++++++++ packages/web-new/src/scripts/editor.js | 15 ++++++++++++++ packages/web-new/src/scripts/examples-menu.js | 15 ++++++++++++++ packages/web-new/src/scripts/json-yaml.js | 15 ++++++++++++++ packages/web-new/src/scripts/jsonld-vis.js | 15 ++++++++++++++ packages/web-new/src/scripts/main.js | 15 ++++++++++++++ .../web-new/src/scripts/monochrome-theme.js | 20 +++++++++++++++---- packages/web-new/src/scripts/open-api.js | 15 ++++++++++++++ packages/web-new/src/scripts/save-menu.js | 15 ++++++++++++++ packages/web-new/src/scripts/settings-menu.js | 15 ++++++++++++++ packages/web-new/src/scripts/validation.js | 15 ++++++++++++++ packages/web-new/src/scripts/vega-vis.js | 15 ++++++++++++++ packages/web-new/src/scripts/visualize.js | 15 ++++++++++++++ packages/web-new/src/styles/_console.scss | 15 ++++++++++++++ .../web-new/src/styles/_control-panel.scss | 15 ++++++++++++++ packages/web-new/src/styles/_editor.scss | 15 ++++++++++++++ .../web-new/src/styles/_examples-menu.scss | 15 ++++++++++++++ .../src/styles/_json-yaml-warning.scss | 15 ++++++++++++++ packages/web-new/src/styles/_jsonld-vis.scss | 15 ++++++++++++++ packages/web-new/src/styles/_save-menu.scss | 15 ++++++++++++++ .../web-new/src/styles/_settings-menu.scss | 15 ++++++++++++++ packages/web-new/src/styles/styles.css | 15 ++++++++++++++ packages/web-new/src/styles/styles.scss | 15 ++++++++++++++ packages/web-new/src/template.html | 15 ++++++++++++++ packages/web-new/webpack.config.js | 15 ++++++++++++++ 30 files changed, 448 insertions(+), 4 deletions(-) create mode 100644 .vscode/templates/scss.lict diff --git a/.vscode/templates/scss.lict b/.vscode/templates/scss.lict new file mode 100644 index 000000000..a71fb750d --- /dev/null +++ b/.vscode/templates/scss.lict @@ -0,0 +1,12 @@ +Copyright (c) %(CreationYear) Contributors to the Eclipse Foundation + +See the NOTICE file(s) distributed with this work for additional +information regarding copyright ownership. + +This program and the accompanying materials are made available under the +terms of the Eclipse Public License v. 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and +Document License (2015-05-13) which is available at +https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + +SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 \ No newline at end of file diff --git a/packages/web-new/external-scripts/generate-paths.js b/packages/web-new/external-scripts/generate-paths.js index e4641ccee..c04d96117 100644 --- a/packages/web-new/external-scripts/generate-paths.js +++ b/packages/web-new/external-scripts/generate-paths.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `examples.js` generates a json file * with all the links, title and descriptions of the TD and TM examples in the diff --git a/packages/web-new/server/server.js b/packages/web-new/server/server.js index 8ddad0cd0..43b066e46 100644 --- a/packages/web-new/server/server.js +++ b/packages/web-new/server/server.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + const express = require('express') const port = 5000 diff --git a/packages/web-new/src/scripts/async-api.js b/packages/web-new/src/scripts/async-api.js index a327511cc..9a1c00fb8 100644 --- a/packages/web-new/src/scripts/async-api.js +++ b/packages/web-new/src/scripts/async-api.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `async-api.js` takes care of the main functionality for the * AsyncAPI feature within the console. This include initializing the editor, diff --git a/packages/web-new/src/scripts/console.js b/packages/web-new/src/scripts/console.js index 0aebc774a..7e1b6ec9e 100644 --- a/packages/web-new/src/scripts/console.js +++ b/packages/web-new/src/scripts/console.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `console.js` takes care of setting the main eventHandlers * for opening and closing the corresponding visualizations as well as diff --git a/packages/web-new/src/scripts/defaults.js b/packages/web-new/src/scripts/defaults.js index 02fcb59af..183dd7d79 100644 --- a/packages/web-new/src/scripts/defaults.js +++ b/packages/web-new/src/scripts/defaults.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `defaults.js` takes care of the main functionality for the * Defaults feature within the console. This include initializing the editor, diff --git a/packages/web-new/src/scripts/editor.js b/packages/web-new/src/scripts/editor.js index 87efd7556..799a73952 100644 --- a/packages/web-new/src/scripts/editor.js +++ b/packages/web-new/src/scripts/editor.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `editor.js` contains the main functionality * for the generated monaco editors and the surrounding elements diff --git a/packages/web-new/src/scripts/examples-menu.js b/packages/web-new/src/scripts/examples-menu.js index 77219119c..48db62f84 100644 --- a/packages/web-new/src/scripts/examples-menu.js +++ b/packages/web-new/src/scripts/examples-menu.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `examples-menu.js` contains the main functionality * for the examples menu, such as displaying all the TD and TM examples, diff --git a/packages/web-new/src/scripts/json-yaml.js b/packages/web-new/src/scripts/json-yaml.js index 38eaba7b4..b0e9f199d 100644 --- a/packages/web-new/src/scripts/json-yaml.js +++ b/packages/web-new/src/scripts/json-yaml.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `json-yaml.js` contains the main functionality * for converting json to yaml and vice versa, utilizing the util's diff --git a/packages/web-new/src/scripts/jsonld-vis.js b/packages/web-new/src/scripts/jsonld-vis.js index 304462110..dffe043c1 100644 --- a/packages/web-new/src/scripts/jsonld-vis.js +++ b/packages/web-new/src/scripts/jsonld-vis.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `jsonld-vis.js` handles the d3 visualization for the * graph option, by utilizin the d3 and d3-tip dependencies diff --git a/packages/web-new/src/scripts/main.js b/packages/web-new/src/scripts/main.js index ad11ebd99..abeb2d0a5 100644 --- a/packages/web-new/src/scripts/main.js +++ b/packages/web-new/src/scripts/main.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `main.js` takes care of setting eventHandlers * and connecting the functionality of `util.js` with diff --git a/packages/web-new/src/scripts/monochrome-theme.js b/packages/web-new/src/scripts/monochrome-theme.js index 6d92a66b1..0aa4078b7 100644 --- a/packages/web-new/src/scripts/monochrome-theme.js +++ b/packages/web-new/src/scripts/monochrome-theme.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + const themeData = { "base": "vs-dark", "inherit": true, @@ -65,7 +80,4 @@ const themeData = { } } -export default themeData -// export function themeData() { -// return somerandom = 24 -// } \ No newline at end of file +export default themeData \ No newline at end of file diff --git a/packages/web-new/src/scripts/open-api.js b/packages/web-new/src/scripts/open-api.js index 1f8d10fcf..dde078683 100644 --- a/packages/web-new/src/scripts/open-api.js +++ b/packages/web-new/src/scripts/open-api.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `open-api.js` takes care of the main functionality for the * OpenAPI feature within the console. This include initializing the editor, diff --git a/packages/web-new/src/scripts/save-menu.js b/packages/web-new/src/scripts/save-menu.js index ce4295f60..a7b2fa5de 100644 --- a/packages/web-new/src/scripts/save-menu.js +++ b/packages/web-new/src/scripts/save-menu.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `save-menu.js` handle the main functionality for the save menu * such as generating a sharable link, allowing to open such link in a new playground diff --git a/packages/web-new/src/scripts/settings-menu.js b/packages/web-new/src/scripts/settings-menu.js index 0ae4c71d2..ab17889cf 100644 --- a/packages/web-new/src/scripts/settings-menu.js +++ b/packages/web-new/src/scripts/settings-menu.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `settings.js` contains the main functionality * for the settings menu, such as event handlers, toggle buttons, diff --git a/packages/web-new/src/scripts/validation.js b/packages/web-new/src/scripts/validation.js index 779837b78..2e20f5adb 100644 --- a/packages/web-new/src/scripts/validation.js +++ b/packages/web-new/src/scripts/validation.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `validation.js` contains the related html elements for the validation view, as * well as the behaviour for the validation button on the main navigation menu diff --git a/packages/web-new/src/scripts/vega-vis.js b/packages/web-new/src/scripts/vega-vis.js index 532e5cd4d..9cbc28a4b 100644 --- a/packages/web-new/src/scripts/vega-vis.js +++ b/packages/web-new/src/scripts/vega-vis.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `vega-vis.js` handles the vega visualization for the * tree option, by utilizin the vega and vega-embed dependencies diff --git a/packages/web-new/src/scripts/visualize.js b/packages/web-new/src/scripts/visualize.js index 078a9d1c4..f34246f92 100644 --- a/packages/web-new/src/scripts/visualize.js +++ b/packages/web-new/src/scripts/visualize.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `visualize.js` takes care of setting eventHandlers * and and the the main functions to initialize both the d3 and the vega diff --git a/packages/web-new/src/styles/_console.scss b/packages/web-new/src/styles/_console.scss index 94798e2d3..b67ad99ac 100644 --- a/packages/web-new/src/styles/_console.scss +++ b/packages/web-new/src/styles/_console.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /*** Console ***/ .console { overflow: hidden; diff --git a/packages/web-new/src/styles/_control-panel.scss b/packages/web-new/src/styles/_control-panel.scss index 67f2aa093..fa5ddc328 100644 --- a/packages/web-new/src/styles/_control-panel.scss +++ b/packages/web-new/src/styles/_control-panel.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** Control panel **/ .control-panel { display: flex; diff --git a/packages/web-new/src/styles/_editor.scss b/packages/web-new/src/styles/_editor.scss index c194a9eac..81ea23cb1 100644 --- a/packages/web-new/src/styles/_editor.scss +++ b/packages/web-new/src/styles/_editor.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /*** Editor ***/ .ide { &__tabs { diff --git a/packages/web-new/src/styles/_examples-menu.scss b/packages/web-new/src/styles/_examples-menu.scss index a09bfe977..07a25be5d 100644 --- a/packages/web-new/src/styles/_examples-menu.scss +++ b/packages/web-new/src/styles/_examples-menu.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /**** Examples Menu ****/ .examples-menu { position: absolute; diff --git a/packages/web-new/src/styles/_json-yaml-warning.scss b/packages/web-new/src/styles/_json-yaml-warning.scss index 699428ba0..a51e850c8 100644 --- a/packages/web-new/src/styles/_json-yaml-warning.scss +++ b/packages/web-new/src/styles/_json-yaml-warning.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + .json-yaml-warning{ position: absolute; top: 0; diff --git a/packages/web-new/src/styles/_jsonld-vis.scss b/packages/web-new/src/styles/_jsonld-vis.scss index 72a0e870d..35186d70e 100644 --- a/packages/web-new/src/styles/_jsonld-vis.scss +++ b/packages/web-new/src/styles/_jsonld-vis.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + svg { border: none; diff --git a/packages/web-new/src/styles/_save-menu.scss b/packages/web-new/src/styles/_save-menu.scss index 43faa5cfd..be1b3ad9e 100644 --- a/packages/web-new/src/styles/_save-menu.scss +++ b/packages/web-new/src/styles/_save-menu.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + .save-menu{ position: absolute; top: 0; diff --git a/packages/web-new/src/styles/_settings-menu.scss b/packages/web-new/src/styles/_settings-menu.scss index 751b3bf9e..07b329979 100644 --- a/packages/web-new/src/styles/_settings-menu.scss +++ b/packages/web-new/src/styles/_settings-menu.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /***** settings menu *****/ .settings-menu { diff --git a/packages/web-new/src/styles/styles.css b/packages/web-new/src/styles/styles.css index f15a0de73..190351a50 100644 --- a/packages/web-new/src/styles/styles.css +++ b/packages/web-new/src/styles/styles.css @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /*** Globals **/ *, *::before, diff --git a/packages/web-new/src/styles/styles.scss b/packages/web-new/src/styles/styles.scss index 4fa45b6ac..fd6c61c54 100644 --- a/packages/web-new/src/styles/styles.scss +++ b/packages/web-new/src/styles/styles.scss @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /*** Globals **/ *, *::before, diff --git a/packages/web-new/src/template.html b/packages/web-new/src/template.html index 4ccf65912..d94ceedab 100644 --- a/packages/web-new/src/template.html +++ b/packages/web-new/src/template.html @@ -1,3 +1,18 @@ + + diff --git a/packages/web-new/webpack.config.js b/packages/web-new/webpack.config.js index cd0c5606d..1114a469d 100644 --- a/packages/web-new/webpack.config.js +++ b/packages/web-new/webpack.config.js @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ + /** * @file The `webpack.config.js` takes care of all the configuration values for webpack * to bundle and compile all the necessary modules. This includes bundling all the multiple From 89b42379e9080dc4fb93b559dfcb554d32fb50f5 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:35:06 +0200 Subject: [PATCH 06/12] json/yaml interaction bug fixed --- packages/web-new/src/scripts/editor.js | 4 +-- packages/web-new/src/scripts/json-yaml.js | 40 ++++++++++++++++------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/packages/web-new/src/scripts/editor.js b/packages/web-new/src/scripts/editor.js index 799a73952..c2b93aed9 100644 --- a/packages/web-new/src/scripts/editor.js +++ b/packages/web-new/src/scripts/editor.js @@ -134,7 +134,7 @@ export function createIde(ideNumber, exampleValue) { "@context": "https://www.w3.org/2022/wot/td/v1.1", "id": "urn:uuid:0804d572-cce8-422a-bb7c-4412fcd56f06", "@type": "Thing", - "title": `My Thing Template`, + "title": `Thing Template`, "description": "This is your customizable template. Edit it to fit your Thing Description or Thing Model needs!", "securityDefinitions": { "basic_sc": { "scheme": "basic", "in": "header" } @@ -258,7 +258,7 @@ async function initEditor(ideNumber, editorValue, editorLanguage) { markTypos(editorInstance.getModel()); } } catch (err) { - console.error("Not a proper JSON object"); + console.error("Invalid JSON object"); } }); diff --git a/packages/web-new/src/scripts/json-yaml.js b/packages/web-new/src/scripts/json-yaml.js index b0e9f199d..2b1b14a6e 100644 --- a/packages/web-new/src/scripts/json-yaml.js +++ b/packages/web-new/src/scripts/json-yaml.js @@ -20,6 +20,7 @@ */ import { editorList } from './editor.js' import { generateTD } from './util.js' +import { getEditorData } from './editor.js' /***********************************************************/ /* Yaml functionality */ @@ -34,18 +35,18 @@ jsonBtn.checked = true //Click event to show the warning text before converting the td/tm -yamlBtn.addEventListener("click", ()=> { +yamlBtn.addEventListener("click", () => { editorList.forEach(editorInstance => { - if(editorInstance["_domElement"].classList.contains("active")){ - try{ + if (editorInstance["_domElement"].classList.contains("active") && editorInstance["_domElement"]["dataset"]["modeId"] == "json") { + try { JSON.parse(editorInstance.getValue()) + yamlWarning.classList.remove('closed') } - catch(err){ + catch (err) { alert('TD is not a valid JSON object'); jsonBtn.checked = true return } - yamlWarning.classList.remove('closed') } }) }) @@ -62,17 +63,34 @@ yamlConfirmBtn.addEventListener("click", () => { convertJsonYaml() }) -jsonBtn.addEventListener("click", ()=> { - convertJsonYaml() +jsonBtn.addEventListener("click", () => { + editorList.forEach(editorInstance => { + if (editorInstance["_domElement"].classList.contains("active") && editorInstance["_domElement"]["dataset"]["modeId"] == "yaml") { + try { + getEditorData(editorInstance) + convertJsonYaml() + } + catch (err) { + alert('TD is not a valid YAML object'); + yamlBtn.checked = true + return + } + } + }) }) /** - * Get the currently active editor and its value and convert to json or yaml + * Get the currently active editor and convert it to json or yaml */ -function convertJsonYaml(){ +function convertJsonYaml() { editorList.forEach(editorInstance => { - if(editorInstance["_domElement"].classList.contains("active")){ - generateTD(jsonBtn.checked === true ? "json" : "yaml", editorInstance) + if (editorInstance["_domElement"].classList.contains("active")) { + try { + const editorData = getEditorData(editorInstance) + generateTD(editorData[0] === "json" ? "yaml" : "json", editorInstance) + } catch (err) { + console.error(err) + } } }) } \ No newline at end of file From 2d225a2f2d00a823ca5913f0e3ddf05344035830 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:13:07 +0200 Subject: [PATCH 07/12] read me file --- packages/web-new/README.md | 111 ++++++++++++++++++++ packages/web-new/src/styles/styles.css | 113 ++++++++++++++++++++- packages/web-new/src/styles/styles.css.map | 2 +- 3 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 packages/web-new/README.md diff --git a/packages/web-new/README.md b/packages/web-new/README.md new file mode 100644 index 000000000..e54fa5607 --- /dev/null +++ b/packages/web-new/README.md @@ -0,0 +1,111 @@ +# @thing-description-playground/**WEB-NEW** + +This package provides the new web interface of the Web of Things Playground. It uses the functionality of the `core` package to validate Thing Descriptions and Models. You can find more information about the Thingweb-Playground [here](https://github.com/eclipse-thingweb/playground). + +## Main Features + +- Validation of TDs and TMs +- Multiple editors +- JSON and YAML conversion +- An examples menu to use as templates +- A save menu, where your currently opened TD/TM can be: + - Exported as an URL either on a new tab/browser or on the [ediTDor] (https://eclipse.github.io/editdor/) website + - Downloaded directly + - Saved in a specific folder within your file system (This function is only available on `Chrome`, `Edge` and `Opera`) +- A preferences menu within the settings, where the color theme, and font size can be change +- OpenAPI conversion +- AsyncAPI conversion +- A defaults view where all defaults can be added or removed from your current TD +- Visualize view, where your current TD/TM can be represented visually as a Graph or Tree, as well as downloaded as either SVG or PNG + +## License + +Licensed under the MIT license, see [License](../../LICENSE.md). + +## How to use + +- Online: It is hosted [here](http://plugfest.thingweb.io/playground-new/) + - Simply paste a TD or utilize an example from the examples menu and click on validate + - The validation process will then start on the bottom console, where more information will be provided in case of errors or warnings + +## Testing with Playwright + +## Webpack functionality and bundling + +This package is built by utilizing webpack, allowing to bundle and compile the projects JavaScript and CSS files. It also handles asset management and optimization. Below are the steps to understand the current configuration: + +### 1. Introduction + +The `webpack.config.js` file is used to set up Webpack for the project. It manages various aspects of the build process, including bundling JavaScript and CSS file, handling assets like images and fonts, and optimizing code for production. + +### 2. Required Dependencies + +- `path`: This is a built-in Node.js module for handling file paths +- `HtmlWebpackPlugin`: A Webpack plugin for generating HTML files +- `CopyWebpackPlugin`: A Webpack plugin for copying files and directories during the build process +- `MonacoWebpackPlugin`: A Webpack plugin for integrating the Monaco code editor +- `MiniCssExtractPlugin`: A Webpack plugin for extracting CSS into separate files +- `CssMinimizerPlugin`: A Webpack plugin for minimizing CSS files + +### 3. Webpack Configuration Obejct + +**3.1 Entry Points** +- `entry`: Specifies the entry points for your application. In this case, there are two entry points: 'bundle' for JavaScript and 'styles' for CSS + +**3.2 Output** +- `output`: Specifies where Webpack should output the bundled files. The path property defines the output directory as 'dist', and the filename property determines the naming pattern for generated files. [name] is a placeholder for the entry point name, and [contenthash] is a unique hash based on file content +- `clean`: Tells Webpack to clean the 'dist' directory before each build +- `assetModuleFilename`: Specifies the filename for asset files + +**3.3 Development Server** +- `devServer`: Configures the development server with settings such as the port, enabling hot module replacement, compressing assets, and enabling history API fallback + +**3.4 Module Rules** +- `module`: Defines rules for how Webpack should process different file types. There are rules for JavaScript, images, CSS, and more. For example, it uses Babel to transpile JavaScript, handles image assets, and processes CSS with style loaders and sass loaders + +**3.5 Plugins** +- `plugins`: Lists the plugins used in the build process. Key plugins include + - `HtmlWebpackPlugin` for generating HTML files, + - `CopyWebpackPlugin` for copying assets, + - `MonacoWebpackPlugin` for the Monaco code editor integration, and + - `MiniCssExtractPlugin` for extracting CSS into separate files + +**3.6 Optimization** +- `optimization`: Contains settings for optimizing the build, including minimizing CSS using `CssMinimizerPlugin` + + +## Deployment + +Requires [Lerna](https://www.npmjs.com/package/lerna) to be installed globally (`npm install -g lerna`). + +1. Clone the repo +2. Install the monorepo (allows linking unpublished versions) +3. Install the web package locally to ensure that e.g. `core` dependency is not just a symlink + +```sh +git clone git@github.com:eclipse-thingweb/playground.git +cd playground +lerna bootstrap +cd ./packages/web-new +npm install +``` + +Finally the web application can be deployed in production or in development mode: + +### Development mode + +1. Utilze the command `npm run dev` which will start the webpack-dev-server in development mode, open your default browser and serve the application according to the configuaration specified in the `webpack.config.js` file. + +```sh +npm run dev +``` + +### Production mode + +1. Build the project with the command `npm run build` which will automatically set the mode to production +2. Finally utilize the command `npm run serve` to serve the application utilizing express as the server + +```sh +npm run build +npm run serve +``` \ No newline at end of file diff --git a/packages/web-new/src/styles/styles.css b/packages/web-new/src/styles/styles.css index 190351a50..d61bbf379 100644 --- a/packages/web-new/src/styles/styles.css +++ b/packages/web-new/src/styles/styles.css @@ -12,7 +12,6 @@ * * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 */ - /*** Globals **/ *, *::before, @@ -384,6 +383,20 @@ main .console { } } /*** Main Content ***/ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ /*** Editor ***/ .ide__tabs { display: flex; @@ -537,6 +550,20 @@ main .console { transition: opacity 300ms ease-in-out; } +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ /** Control panel **/ .control-panel { display: flex; @@ -597,6 +624,20 @@ main .console { flex: 0; } +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ /*** Console ***/ .console { overflow: hidden; @@ -1243,6 +1284,20 @@ main .console { } } /** Additional menus **/ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ /***** settings menu *****/ .settings-menu { position: absolute; @@ -1450,6 +1505,20 @@ main .console { transition: transform 500ms var(--trans-bouncy), opacity 250ms ease-in-out 250ms, width 0s ease 500ms, height 0s ease 500ms; } +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ /**** Examples Menu ****/ .examples-menu { position: absolute; @@ -1795,6 +1864,20 @@ main .console { width: 100%; } } +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ .save-menu { position: absolute; top: 0; @@ -1975,6 +2058,20 @@ main .console { pointer-events: none; } +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ .json-yaml-warning { position: absolute; top: 0; @@ -2041,6 +2138,20 @@ main .console { } /** Visualizations **/ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the W3C Software Notice and + * Document License (2015-05-13) which is available at + * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document. + * + * SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 + */ svg { border: none; } diff --git a/packages/web-new/src/styles/styles.css.map b/packages/web-new/src/styles/styles.css.map index bb9d22321..1f478747b 100644 --- a/packages/web-new/src/styles/styles.css.map +++ b/packages/web-new/src/styles/styles.css.map @@ -1 +1 @@ -{"version":3,"sources":["styles.scss","styles.css","_editor.scss","_control-panel.scss","_console.scss","_settings-menu.scss","_examples-menu.scss","_save-menu.scss","_json-yaml-warning.scss","_jsonld-vis.scss"],"names":[],"mappings":"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","file":"styles.css"} \ No newline at end of file +{"version":3,"sources":["styles.scss","styles.css","_editor.scss","_control-panel.scss","_console.scss","_settings-menu.scss","_examples-menu.scss","_save-menu.scss","_json-yaml-warning.scss","_jsonld-vis.scss"],"names":[],"mappings":"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","file":"styles.css"} \ No newline at end of file From 61a1cdf8ee2f6b80ec407ef28014c9d0852e59b9 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:16:43 +0200 Subject: [PATCH 08/12] webpack and package file fixes --- packages/web-new/package.json | 6 +++--- packages/web-new/webpack.config.js | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/web-new/package.json b/packages/web-new/package.json index f6086088d..7b5a6bd2c 100644 --- a/packages/web-new/package.json +++ b/packages/web-new/package.json @@ -15,9 +15,9 @@ "directory": "packages/web-new" }, "scripts": { - "build": "node external-scripts/generate-paths.js && webpack", - "dev": "webpack && node server/server.js", - "server": "node server/server.js", + "build": "node external-scripts/generate-paths.js && webpack --mode production", + "dev": "webpack-dev-server --mode development --config webpack.config.js", + "serve": "node server/server.js", "examples": "node external-scripts/generate-paths.js" }, "devDependencies": { diff --git a/packages/web-new/webpack.config.js b/packages/web-new/webpack.config.js index 1114a469d..aa92f7cf0 100644 --- a/packages/web-new/webpack.config.js +++ b/packages/web-new/webpack.config.js @@ -29,7 +29,6 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); module.exports = { - mode: 'development', entry: { bundle: path.resolve(__dirname, 'src/scripts/main.js'), styles: path.resolve(__dirname, 'src/styles/styles.css'), From e43b8bb1aaad086769369e8c93b02b0152e0d13f Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:09:31 +0200 Subject: [PATCH 09/12] dev and production modes with webpack --- packages/web-new/README.md | 4 +- packages/web-new/package.json | 2 +- packages/web-new/webpack.config.js | 169 +++++++++++++++-------------- 3 files changed, 92 insertions(+), 83 deletions(-) diff --git a/packages/web-new/README.md b/packages/web-new/README.md index e54fa5607..690ddc07d 100644 --- a/packages/web-new/README.md +++ b/packages/web-new/README.md @@ -58,7 +58,7 @@ The `webpack.config.js` file is used to set up Webpack for the project. It manag - `assetModuleFilename`: Specifies the filename for asset files **3.3 Development Server** -- `devServer`: Configures the development server with settings such as the port, enabling hot module replacement, compressing assets, and enabling history API fallback +- `devServer`: Configures the development server with settings such as the port, compressing assets, and enabling history API fallback **3.4 Module Rules** - `module`: Defines rules for how Webpack should process different file types. There are rules for JavaScript, images, CSS, and more. For example, it uses Babel to transpile JavaScript, handles image assets, and processes CSS with style loaders and sass loaders @@ -94,7 +94,7 @@ Finally the web application can be deployed in production or in development mode ### Development mode -1. Utilze the command `npm run dev` which will start the webpack-dev-server in development mode, open your default browser and serve the application according to the configuaration specified in the `webpack.config.js` file. +1. Utilze the command `npm run dev` which will start the webpack-dev-server in development mode, generate source maps for easier debuging, open your default browser and serve the application. ```sh npm run dev diff --git a/packages/web-new/package.json b/packages/web-new/package.json index 7b5a6bd2c..dd89fd07c 100644 --- a/packages/web-new/package.json +++ b/packages/web-new/package.json @@ -16,7 +16,7 @@ }, "scripts": { "build": "node external-scripts/generate-paths.js && webpack --mode production", - "dev": "webpack-dev-server --mode development --config webpack.config.js", + "dev": "webpack serve --mode development", "serve": "node server/server.js", "examples": "node external-scripts/generate-paths.js" }, diff --git a/packages/web-new/webpack.config.js b/packages/web-new/webpack.config.js index aa92f7cf0..f380e2956 100644 --- a/packages/web-new/webpack.config.js +++ b/packages/web-new/webpack.config.js @@ -28,91 +28,100 @@ const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); -module.exports = { - entry: { - bundle: path.resolve(__dirname, 'src/scripts/main.js'), - styles: path.resolve(__dirname, 'src/styles/styles.css'), - }, - output: { - path: path.resolve(__dirname, 'dist'), - filename: '[name][contenthash].js', - clean: true, - assetModuleFilename: '[name][ext]', - }, - devtool: 'source-map', - devServer: { - static: { - directory: path.resolve(__dirname, 'dist') +module.exports = (env, argv) => { + + const isDevMode = argv.mode === "development" + + const config = { + entry: { + bundle: path.resolve(__dirname, 'src/scripts/main.js'), + styles: path.resolve(__dirname, 'src/styles/styles.css'), }, - port: 3000, - open: true, - hot: true, - compress: true, - historyApiFallback: true, - }, - module: { - rules: [ - { - test: /\.js$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env'] - } - } - }, - { - test: /\.(png|svg|jpg|jpeg|gif|ico)$/i, - type: 'asset/resource' - }, - { - test:/\.scss$/, - use: ['style-loader','css-loader','sass-loader'], - }, - { - test: /\.css$/i, - use: [MiniCssExtractPlugin.loader, 'css-loader'], - }, - { - test: /\.ttf$/, - type: 'asset/resource' - }, - { - test: /\.json$/, - use: 'json-loader', - type: 'javascript/auto', // Necessary for Webpack 5 + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name][contenthash].js', + clean: true, + assetModuleFilename: '[name][ext]', + }, + devtool: isDevMode ? 'source-map' : false, + devServer: isDevMode ? + { + static: { + directory: path.resolve(__dirname, 'dist') }, - ] - }, - plugins: [ - new HtmlWebpackPlugin({ - title: 'Webpack App', - filename: 'index.html', - template: 'src/template.html', - favicon: 'src/assets/favicon/favicon.ico' - }), - // new BundleAnalyzerPlugin(), - new CopyWebpackPlugin({ - patterns: [ + port: 3000, + open: true, + hot: false, + compress: true, + historyApiFallback: true, + } + : {}, + module: { + rules: [ { - from: './src/assets/favicon', - to: 'favicon', + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } }, { - from: './src/examples-paths', - to: 'examples-paths', + test: /\.(png|svg|jpg|jpeg|gif|ico)$/i, + type: 'asset/resource' }, - ], - }), - new MonacoWebpackPlugin(), - new MiniCssExtractPlugin({ - filename: '[name].[contenthash].css', - }) - ], - optimization: { - minimizer: [ - new CssMinimizerPlugin(), - ] + { + test: /\.scss$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.css$/i, + use: [MiniCssExtractPlugin.loader, 'css-loader'], + }, + { + test: /\.ttf$/, + type: 'asset/resource' + }, + { + test: /\.json$/, + use: 'json-loader', + type: 'javascript/auto', // Necessary for Webpack 5 + }, + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + title: 'Webpack App', + filename: 'index.html', + template: 'src/template.html', + favicon: 'src/assets/favicon/favicon.ico' + }), + // new BundleAnalyzerPlugin(), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/assets/favicon', + to: 'favicon', + }, + { + from: './src/examples-paths', + to: 'examples-paths', + }, + ], + }), + new MonacoWebpackPlugin(), + new MiniCssExtractPlugin({ + filename: '[name].[contenthash].css', + }) + ], + optimization: { + minimizer: [ + new CssMinimizerPlugin(), + ] + } } + + return config } \ No newline at end of file From 13a1753c63357d3ae73e5bd427ddada6724be176 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:34:30 +0200 Subject: [PATCH 10/12] openapi name fixes --- .prettierignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierignore b/.prettierignore index b2789364c..3643cf413 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,5 +3,5 @@ package-lock.json coverage .nyc_output **/out -packages/td_to_openAPI/examples/openapi.yaml +packages/td_to_openapi/examples/openapi.yaml packages/td_to_asyncapi/examples/asyncapi.yaml \ No newline at end of file From eedfdb41f4b0b8ff02252283ecf98df9cda8eef7 Mon Sep 17 00:00:00 2001 From: Sergio Eduardo Castro Ceballos <72516762+SergioCasCeb@users.noreply.github.com> Date: Tue, 26 Sep 2023 20:13:34 +0200 Subject: [PATCH 11/12] fixed styling for the console and console messages --- packages/web-new/src/scripts/util.js | 32 +- packages/web-new/src/styles/_console.scss | 106 +- packages/web-new/src/styles/styles.css | 92 +- packages/web-new/src/styles/styles.css.map | 2 +- packages/web-new/src/template.html | 1345 ++++++++++---------- 5 files changed, 810 insertions(+), 767 deletions(-) diff --git a/packages/web-new/src/scripts/util.js b/packages/web-new/src/scripts/util.js index aaa236bec..2bb5db7c1 100644 --- a/packages/web-new/src/scripts/util.js +++ b/packages/web-new/src/scripts/util.js @@ -231,21 +231,20 @@ export function validate(thingType, editorContent) { document.getElementById(spotName).removeAttribute('open') const resultIcon = document.getElementById(spotName).children[0].children[0] if (result.report[el] === "passed") { - resultIcon.classList.remove("fa-spinner") + resultIcon.classList.remove("fa-circle") resultIcon.classList.add("fa-circle-check") } else if (result.report[el] === "warning") { - resultIcon.classList.remove("fa-spinner") + resultIcon.classList.remove("fa-circle") resultIcon.classList.add("fa-circle-exclamation") } else if (result.report[el] === "failed") { - resultIcon.classList.remove("fa-spinner") + resultIcon.classList.remove("fa-circle") resultIcon.classList.add("fa-circle-xmark") } else if (result.report[el] === null) { - resultIcon.classList.remove("fa-spinner") - resultIcon.classList.add("fa-circle") + //do nothing } else { console.error("unknown report feedback value") @@ -259,20 +258,19 @@ export function validate(thingType, editorContent) { const detailsIcon = document.getElementById(detailsName).children[0].children[0] if (result.details[el] === "passed") { - detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.remove("fa-circle") detailsIcon.classList.add("fa-circle-check") } else if (result.details[el] === "warning" || result.details[el] === "not-impl") { - detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.remove("fa-circle") detailsIcon.classList.add("fa-circle-exclamation") } else if (result.details[el] === "failed") { - detailsIcon.classList.remove("fa-spinner") + detailsIcon.classList.remove("fa-circle") detailsIcon.classList.add("fa-circle-xmark") } else if (result.details[el] === null) { - detailsIcon.classList.remove("fa-spinner") - detailsIcon.classList.add("fa-circle") + //do nothing } else { console.error("unknown report feedback value") @@ -303,9 +301,9 @@ function resetValidationStatus() { } sectionHeaders.forEach(header => { const headerIcon = header.children[0] - if (!headerIcon.classList.contains("fa-spinner")) { + if (!headerIcon.classList.contains("fa-circle")) { headerIcon.classList.remove("fa-circle-check", "fa-circle-exclamation", "fa-circle-xmark", "fa-circle") - headerIcon.classList.add("fa-spinner") + headerIcon.classList.add("fa-circle") } }) } @@ -342,6 +340,16 @@ function populateCategory(messagesList) { categoryContainer.append(listElement) }) categoryContainer.classList.remove("empty") + } else if (category.children[0].children[0].classList.contains("fa-circle-check")){ + const successMessage = document.createElement("li") + successMessage.textContent = "Validated Successfully" + categoryContainer.append(successMessage) + categoryContainer.classList.remove("empty") + }else{ + const nullMessage = document.createElement("li") + nullMessage.textContent = "A previous validation has failed or it is only available for Thing Descriptions" + categoryContainer.append(nullMessage) + categoryContainer.classList.remove("empty") } }) } diff --git a/packages/web-new/src/styles/_console.scss b/packages/web-new/src/styles/_console.scss index b67ad99ac..272d43754 100644 --- a/packages/web-new/src/styles/_console.scss +++ b/packages/web-new/src/styles/_console.scss @@ -175,8 +175,7 @@ position: absolute; top: 0; right: 0; - overflow-y: auto; - overflow-x: hidden; + overflow: hidden; padding: 2rem; transition: opacity 250ms ease-in-out; @@ -187,14 +186,20 @@ pointer-events: none; transition: opacity 0s ease-in-out; } + } - &.validation-view { - overflow: auto; + .validation-view { + .validation-container { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; - details{ + details { margin-bottom: 1rem; - summary{ - .show-icon{ + + summary { + .show-icon { transform: rotate(0); transition: transform 250ms ease-in-out; } @@ -206,70 +211,68 @@ justify-content: flex-start; gap: 1rem; cursor: pointer; - + .fa-circle-check { color: var(--clr-success-500); } - + .fa-circle-exclamation { color: var(--clr-warning-500); } - + .fa-circle-xmark { color: var(--clr-error-500); } - - .fa-spinner { - color: var(--clr-neutral-300); - animation: rotate 2s infinite ease-in-out; - } - - .fa-circle{ + + .fa-circle { color: var(--clr-neutral-300); } - + .show-icon { cursor: pointer; } - - .title{ + + .title { font-weight: var(--fw-bold); } } - .section-content, .section-additional{ + .section-content, + .section-additional { padding: 1rem 2rem; } - .section-content{ + .section-content { list-style-position: inside; list-style-type: disc; - &.empty{ + &.empty { padding: 0 0 1rem 0; } - .notice-prompt{ + .notice-prompt { color: var(--clr-neutral-300); font-size: var(--fs-footer); } } - .section-additional{ - details{ + .section-additional { + details { margin-bottom: 1rem; - summary{ - .show-icon{ + + summary { + .show-icon { transform: rotate(0); transition: transform 250ms ease-in-out; } } } - - details[open]{ + + details[open] { margin-bottom: 0; - summary{ - .show-icon{ + + summary { + .show-icon { transform: rotate(-90deg); } } @@ -277,14 +280,16 @@ } } - details[open]{ + details[open] { margin-bottom: 0; - summary{ - .show-icon{ + + summary { + .show-icon { transform: rotate(-90deg); } } } + } } @@ -327,12 +332,14 @@ appearance: none; border: none; width: 100%; + height: 3.25rem; border-radius: 5px; padding: .75rem 1.5rem; background-color: var(--clr-primary-500); color: var(--clr-neutral-50); font-family: var(--ff-primary); font-size: var(--fs-p); + font-weight: var(--fw-bold); cursor: pointer; transition: background-color 250ms ease-in-out; display: flex; @@ -352,16 +359,27 @@ .input-field { width: 100%; + min-height: 3.25rem; display: flex; align-items: center; justify-content: center; gap: 2px; border-radius: 5px; overflow: hidden; - button{ + + button { border-radius: 0; } } + + .view-download{ + width: 100%; + height: 100%; + min-height: 3.25rem; + display: flex; + align-items: flex-end; + justify-content: center; + } } } @@ -416,7 +434,7 @@ input[type="radio"] { appearance: none; width: 100%; - height: 3.25rem; + min-height: 3.25rem; background-color: var(--clr-primary-500); cursor: pointer; transition: background-color 250ms ease-in-out; @@ -427,7 +445,7 @@ } &::before { - content: ''; + position: absolute; top: 0; left: 0; width: 100%; @@ -436,6 +454,7 @@ place-items: center; font-size: var(--fs-p); font-family: var(--ff-primary); + font-weight: var(--fw-bold); text-transform: capitalize; color: var(--clr-neutral-50); } @@ -644,7 +663,6 @@ width: 100%; height: 100%; margin-top: 2rem; - //todo: Remove the separation for the download buttons? display: flex; flex-direction: column; align-items: center; @@ -653,14 +671,4 @@ } } } -} - -@keyframes rotate { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } } \ No newline at end of file diff --git a/packages/web-new/src/styles/styles.css b/packages/web-new/src/styles/styles.css index d61bbf379..082ece368 100644 --- a/packages/web-new/src/styles/styles.css +++ b/packages/web-new/src/styles/styles.css @@ -779,8 +779,7 @@ main .console { position: absolute; top: 0; right: 0; - overflow-y: auto; - overflow-x: hidden; + overflow: hidden; padding: 2rem; transition: opacity 250ms ease-in-out; } @@ -791,76 +790,76 @@ main .console { pointer-events: none; transition: opacity 0s ease-in-out; } -.console__content .console-view.validation-view { - overflow: auto; +.console__content .validation-view .validation-container { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; } -.console__content .console-view.validation-view details { +.console__content .validation-view .validation-container details { margin-bottom: 1rem; } -.console__content .console-view.validation-view details summary .show-icon { +.console__content .validation-view .validation-container details summary .show-icon { transform: rotate(0); transition: transform 250ms ease-in-out; } -.console__content .console-view.validation-view details .section-header { +.console__content .validation-view .validation-container details .section-header { display: flex; align-items: center; justify-content: flex-start; gap: 1rem; cursor: pointer; } -.console__content .console-view.validation-view details .section-header .fa-circle-check { +.console__content .validation-view .validation-container details .section-header .fa-circle-check { color: var(--clr-success-500); } -.console__content .console-view.validation-view details .section-header .fa-circle-exclamation { +.console__content .validation-view .validation-container details .section-header .fa-circle-exclamation { color: var(--clr-warning-500); } -.console__content .console-view.validation-view details .section-header .fa-circle-xmark { +.console__content .validation-view .validation-container details .section-header .fa-circle-xmark { color: var(--clr-error-500); } -.console__content .console-view.validation-view details .section-header .fa-spinner { - color: var(--clr-neutral-300); - animation: rotate 2s infinite ease-in-out; -} -.console__content .console-view.validation-view details .section-header .fa-circle { +.console__content .validation-view .validation-container details .section-header .fa-circle { color: var(--clr-neutral-300); } -.console__content .console-view.validation-view details .section-header .show-icon { +.console__content .validation-view .validation-container details .section-header .show-icon { cursor: pointer; } -.console__content .console-view.validation-view details .section-header .title { +.console__content .validation-view .validation-container details .section-header .title { font-weight: var(--fw-bold); } -.console__content .console-view.validation-view details .section-content, .console__content .console-view.validation-view details .section-additional { +.console__content .validation-view .validation-container details .section-content, +.console__content .validation-view .validation-container details .section-additional { padding: 1rem 2rem; } -.console__content .console-view.validation-view details .section-content { +.console__content .validation-view .validation-container details .section-content { list-style-position: inside; list-style-type: disc; } -.console__content .console-view.validation-view details .section-content.empty { +.console__content .validation-view .validation-container details .section-content.empty { padding: 0 0 1rem 0; } -.console__content .console-view.validation-view details .section-content .notice-prompt { +.console__content .validation-view .validation-container details .section-content .notice-prompt { color: var(--clr-neutral-300); font-size: var(--fs-footer); } -.console__content .console-view.validation-view details .section-additional details { +.console__content .validation-view .validation-container details .section-additional details { margin-bottom: 1rem; } -.console__content .console-view.validation-view details .section-additional details summary .show-icon { +.console__content .validation-view .validation-container details .section-additional details summary .show-icon { transform: rotate(0); transition: transform 250ms ease-in-out; } -.console__content .console-view.validation-view details .section-additional details[open] { +.console__content .validation-view .validation-container details .section-additional details[open] { margin-bottom: 0; } -.console__content .console-view.validation-view details .section-additional details[open] summary .show-icon { +.console__content .validation-view .validation-container details .section-additional details[open] summary .show-icon { transform: rotate(-90deg); } -.console__content .console-view.validation-view details[open] { +.console__content .validation-view .validation-container details[open] { margin-bottom: 0; } -.console__content .console-view.validation-view details[open] summary .show-icon { +.console__content .validation-view .validation-container details[open] summary .show-icon { transform: rotate(-90deg); } .console__content .open-api-view, @@ -941,12 +940,14 @@ main .console { appearance: none; border: none; width: 100%; + height: 3.25rem; border-radius: 5px; padding: 0.75rem 1.5rem; background-color: var(--clr-primary-500); color: var(--clr-neutral-50); font-family: var(--ff-primary); font-size: var(--fs-p); + font-weight: var(--fw-bold); cursor: pointer; transition: background-color 250ms ease-in-out; display: flex; @@ -1008,6 +1009,7 @@ main .console { .console__content .visualize-view .defaults-inputs .input-field, .console__content .visualize-view .visualize-inputs .input-field { width: 100%; + min-height: 3.25rem; display: flex; align-items: center; justify-content: center; @@ -1033,6 +1035,29 @@ main .console { .console__content .visualize-view .visualize-inputs .input-field button { border-radius: 0; } +.console__content .open-api-view .open-api-inputs .view-download, +.console__content .open-api-view .async-api-inputs .view-download, +.console__content .open-api-view .defaults-inputs .view-download, +.console__content .open-api-view .visualize-inputs .view-download, +.console__content .async-api-view .open-api-inputs .view-download, +.console__content .async-api-view .async-api-inputs .view-download, +.console__content .async-api-view .defaults-inputs .view-download, +.console__content .async-api-view .visualize-inputs .view-download, +.console__content .defaults-view .open-api-inputs .view-download, +.console__content .defaults-view .async-api-inputs .view-download, +.console__content .defaults-view .defaults-inputs .view-download, +.console__content .defaults-view .visualize-inputs .view-download, +.console__content .visualize-view .open-api-inputs .view-download, +.console__content .visualize-view .async-api-inputs .view-download, +.console__content .visualize-view .defaults-inputs .view-download, +.console__content .visualize-view .visualize-inputs .view-download { + width: 100%; + height: 100%; + min-height: 3.25rem; + display: flex; + align-items: flex-end; + justify-content: center; +} .console__content .defaults-view .defaults-inputs button { display: flex; align-items: center; @@ -1073,7 +1098,7 @@ main .console { -moz-appearance: none; appearance: none; width: 100%; - height: 3.25rem; + min-height: 3.25rem; background-color: var(--clr-primary-500); cursor: pointer; transition: background-color 250ms ease-in-out; @@ -1083,7 +1108,7 @@ main .console { background-color: var(--clr-primary-900); } .console__content .visualize-view .visualize-inputs__type .vis-type-option input[type=radio]::before { - content: ""; + position: absolute; top: 0; left: 0; width: 100%; @@ -1092,6 +1117,7 @@ main .console { place-items: center; font-size: var(--fs-p); font-family: var(--ff-primary); + font-weight: var(--fw-bold); text-transform: capitalize; color: var(--clr-neutral-50); } @@ -1275,14 +1301,6 @@ main .console { justify-content: flex-end; } -@keyframes rotate { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} /** Additional menus **/ /* * Copyright (c) 2023 Contributors to the Eclipse Foundation diff --git a/packages/web-new/src/styles/styles.css.map b/packages/web-new/src/styles/styles.css.map index 1f478747b..79cb2a97f 100644 --- a/packages/web-new/src/styles/styles.css.map +++ b/packages/web-new/src/styles/styles.css.map @@ -1 +1 @@ -{"version":3,"sources":["styles.scss","styles.css","_editor.scss","_control-panel.scss","_console.scss","_settings-menu.scss","_examples-menu.scss","_save-menu.scss","_json-yaml-warning.scss","_jsonld-vis.scss"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;EAAA;AAeA,eAAA;AACA;;;EAII,sBAAA;EACA,SAAA;EACA,UAAA;ACAJ;;ADGA;EACI,eAAA;EACA,kCAAA;EACA,uCAAA;EAEA,eAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,eAAA;EAEA,aAAA;EAEA,eAAA;EACA,aAAA;EACA,eAAA;EACA,aAAA;EACA,uBAAA;EACA,cAAA;EACA,iBAAA;EACA,cAAA;EAGA,4CAAA;EACA,gDAAA;EACA,4CAAA;EACA,gDAAA;EACA,wDAAA;EACA,gDAAA;EACA,iFAAA;EACA,+CAAA;EAEA,eAAA;EACA,aAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,cAAA;EAEA,SAAA;EAEA,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAGA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAGA,4CAAA;EACA,gCAAA;EAGA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAGA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAGA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EAGA,qBAAA;EACA,qBAAA;EAGA,qCAAA;EACA,yCAAA;EAEA,gBAAA;EACA,qDAAA;ACvBJ;;AD2BA;EACI,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAEA,yCAAA;EACA,sCAAA;ACzBJ;;AD4BA;EACI,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EAEA,0BAAA;EACA,0BAAA;EAEA,uBAAA;EACA,wCAAA;EAEA,2CAAA;EACA,sCAAA;AC5BJ;;AD+BA;EACI,gBAAA;EACA,uBAAA;AC5BJ;;AD+BA;EACI,wCAAA;EACA,8BAAA;EACA,6BAAA;EACA,kBAAA;AC5BJ;;AD+BA;EACI,uBAAA;EACA,yBAAA;EACA,2BAAA;AC5BJ;;AD+BA;EACI,uBAAA;EACA,yBAAA;EACA,2BAAA;AC5BJ;;AD+BA;EACI,uBAAA;EACA,yBAAA;EACA,2BAAA;AC5BJ;;AD+BA;EACI,uBAAA;EACA,yBAAA;EACA,2BAAA;AC5BJ;;AD+BA;EACI,uBAAA;EACA,yBAAA;EACA,2BAAA;AC5BJ;;AD+BA;;EAEI,sBAAA;EACA,iCAAA;EACA,8BAAA;AC5BJ;;AD+BA;EACI,qBAAA;EACA,kBAAA;EACA,cAAA;EACA,8BAAA;AC5BJ;;AD+BA;EACI,sBAAA;AC5BJ;;AD+BA;EACI,gBAAA;AC5BJ;;AD+BA;EACI,WAAA;EACA,YAAA;AC5BJ;;AD+BA;EACI,eAAA;EACA,cAAA;AC5BJ;;AD+BA;EACI,UAAA;EACA,WAAA;AC5BJ;;AD+BA,UAAA;AACA;EACI,uCAAA;AC5BJ;;AD+BA,WAAA;AACA;EACI,kCAAA;EACA,mBAAA;EACA,uCAAA;AC5BJ;;AD+BA,oBAAA;AACA;EACI,YAAA;AC5BJ;;AD+BA;EACI;IACI,6DAAA;EC5BN;AACF;ADgCA,mBAAA;AACA;EACI,wCAAA;EACA,4BAAA;AC9BJ;ADgCI;EACI,eAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;AC9BR;ADgCQ;EACI,YAAA;AC9BZ;ADiCgB;EACI,2BAAA;AC/BpB;ADqCY;EACI,2BAAA;ACnChB;ADuCQ;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;ACrCZ;ADuCY;EACI,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,sBAAA;EACA,4BAAA;ACrChB;ADuCgB;EACI,6BAAA;ACrCpB;ADyCY;EACI,kBAAA;ACvChB;AD0CY;EACI,uBAAA;EACA,qBAAA;ACxChB;;AD8CA,iBAAA;AAEA;EACI,YAAA;EACA,aAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;AC5CJ;AD8CI;EACI,YAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;AC5CR;AD+CI;;EAEI,uCAAA;EACA,mBAAA;AC7CR;ADgDI;;EAEI,wCAAA;AC9CR;ADiDI;;;EAGI,WAAA;AC/CR;ADkDI;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;EACA,wBAAA;AChDR;ADkDQ;;;EAGI,YAAA;AChDZ;ADmDQ;EACI,WAAA;EACA,gBAAA;EACA,+BAAA;EACA,gCAAA;ACjDZ;ADmDY;EACI,2BAAA;EACA,iBAAA;EACA,uCAAA;ACjDhB;ADoDY;EACI,cAAA;AClDhB;ADsDQ;EACI,WAAA;EACA,kBAAA;ACpDZ;ADwDI;EACI,YAAA;EACA,kBAAA;ACtDR;ADyDI;EACI,wBAAA;ACvDR;;AD2DA,WAAA;AACA;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,uCAAA;EACA,aAAA;EACA,mBAAA;EACA,UAAA;EACA,qCAAA;EACA,YAAA;ACxDJ;AD0DI;EACI,YAAA;EACA,4EAAA;ACxDR;ADyDQ;EACI,WAAA;ACvDZ;AD2DI;EACI,UAAA;EACA,oBAAA;ACzDR;;AD6DA;EACI;IAAG,UAAA;ECzDL;ED0DE;IAAI,YAAA;ECvDN;EDwDE;IAAK,UAAA;ECrDP;AACF;ADuDA;EACI;IAAG,qBAAA;ECpDL;EDqDE;IAAI,mBAAA;EClDN;EDmDE;IAAK,qBAAA;EChDP;AACF;ADkDA,qBAAA;AElbA;;;;;;;;;;;;;EAAA;AAeA,eAAA;AAEI;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;ADiYR;AC/XQ;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,yBAAA;EACA,YAAA;ADiYZ;AC/XY;EACI,YAAA;EACA,aAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,2BAAA;EACA,4BAAA;EACA,yCAAA;EACA,6BAAA;EACA,iBAAA;EACA,0BAAA;EACA,gBAAA;EACA,mBAAA;EACA,eAAA;ADiYhB;AC/XgB;EACI,eAAA;EACA,iBAAA;EACA,kBAAA;ADiYpB;AC9XgB;EACI,2BAAA;ADgYpB;AC7XgB;EACI,sBAAA;AD+XpB;AC5XgB;EACI,uCAAA;EACA,6BAAA;AD8XpB;AC1XoB;EACI,UAAA;AD4XxB;ACxXgB;EACI,eAAA;AD0XpB;ACrXQ;EACI,cAAA;EACA,kBAAA;EACA,gBAAA;ADuXZ;ACrXY;EACI,kBAAA;EACA,mBAAA;ADuXhB;ACrXgB;EACI,eAAA;EACA,kBAAA;EACA,wBAAA;ADuXpB;ACnXoB;EACI,wBAAA;ADqXxB;ACjXgB;EACI,kBAAA;EACA,WAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,mCAAA;EACA,wCAAA;EACA,UAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iCAAA;ADmXpB;ACjXoB;EACI,wCAAA;ADmXxB;AChXoB;EACI,oBAAA;EACA,iBAAA;EACA,cAAA;ADkXxB;AC7WY;EACI,iBAAA;EACA,iCAAA;AD+WhB;AC7WgB;EACI,uCAAA;EACA,6BAAA;AD+WpB;AC1WQ;EACI,YAAA;AD4WZ;AC3WY;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,yCAAA;EACA,4BAAA;EACA,2BAAA;EACA,6BAAA;EACA,8BAAA;EACA,sBAAA;EACA,2BAAA;EACA,eAAA;EACA,gBAAA;EACA,iCAAA;AD6WhB;AC3WgB;EACI,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;AD6WpB;AC1WgB;EACI,eAAA;AD4WpB;ACzWgB;EACI,eAAA;AD2WpB;ACvWY;EACI,uCAAA;EACA,6BAAA;ADyWhB;ACnWQ;EACI,oBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;ADqWZ;AClWQ;EACI,mBAAA;EACA,gBAAA;EACA,WAAA;EACA,UAAA;EACA,qCAAA;ADoWZ;;AEriBA;;;;;;;;;;;;;EAAA;AAeA,oBAAA;AACA;EACI,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,8BAAA;EACA,gBAAA;EACA,WAAA;AFuiBJ;AEriBI;EACI,YAAA;EACA,WAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,6BAAA;EACA,yBAAA;EACA,YAAA;EACA,+CAAA;EACA,8BAAA;EACA,eAAA;EACA,0BAAA;AFuiBR;AEriBQ;EACI,mBAAA;AFuiBZ;AEpiBQ;EACI,4BAAA;EACA,wCAAA;AFsiBZ;AEniBQ;EACI,sBAAA;AFqiBZ;AEliBQ;EACI,2BAAA;AFoiBZ;AEjiBQ;EACI,uBAAA;EAAA,kBAAA;EACA,UAAA;EACA,gBAAA;EACA,oBAAA;EACA,kFAAA;AFmiBZ;AEhiBQ;EACI,UAAA;EACA,SAAA;EACA,oBAAA;EACA,SAAA;EACA,OAAA;AFkiBZ;AE/hBQ;EACI,UAAA;EACA,SAAA;EACA,oBAAA;EACA,SAAA;EACA,OAAA;AFiiBZ;;AG9mBA;;;;;;;;;;;;;EAAA;AAeA,gBAAA;AACA;EACI,gBAAA;EACA,aAAA;EACA,sBAAA;AHgnBJ;AG9mBI;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,+CAAA;EACA,eAAA;EACA,wBAAA;EAAA,mBAAA;AHgnBR;AG9mBQ;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;AHgnBZ;AG9mBY;;EAEI,oBAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,YAAA;EACA,uCAAA;EACA,6BAAA;EACA,4BAAA;AHgnBhB;AG9mBgB;;EACI,6BAAA;EACA,eAAA;AHinBpB;AG9mBgB;;EACI,6BAAA;EACA,YAAA;AHinBpB;AG7mBY;EACI,kBAAA;AH+mBhB;AG3mBQ;EACI,YAAA;EACA,aAAA;EACA,mBAAA;AH6mBZ;AG3mBY;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,uBAAA;EAAA,kBAAA;EACA,oBAAA;EACA,uCAAA;EACA,4BAAA;EACA,2BAAA;EACA,6BAAA;EACA,8BAAA;EACA,sBAAA;EACA,2BAAA;EACA,eAAA;EACA,gBAAA;EACA,iCAAA;AH6mBhB;AG3mBgB;EACI,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;AH6mBpB;AG1mBgB;EACI,qBAAA;AH4mBpB;AGzmBgB;EACI,kBAAA;AH2mBpB;AGxmBgB;EACI,mBAAA;AH0mBpB;AGvmBgB;EACI,mBAAA;AHymBpB;AG9lBgB;EACI,oBAAA;AHgmBpB;AG5lBY;EACI,6BAAA;AH8lBhB;AG3lBY;EACI,6BAAA;EACA,mBAAA;AH6lBhB;AGvlBI;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;AHylBR;AGvlBQ;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;EACA,YAAA;EACA,uCAAA;EACA,UAAA;EACA,mBAAA;AHylBZ;AGvlBY;EACI,2BAAA;EACA,2BAAA;EACA,kBAAA;EACA,+BAAA;EACA,mBAAA;EACA,+CAAA;AHylBhB;AGtlBY;EACI,UAAA;EACA,oBAAA;EACA,qCAAA;AHwlBhB;AGtlBgB;EACI,mBAAA;AHwlBpB;AGnlBQ;EACI,WAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,UAAA;EACA,mBAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;EACA,qCAAA;AHqlBZ;AGnlBY;EACI,QAAA;EACA,SAAA;EACA,UAAA;EACA,oBAAA;EACA,kCAAA;AHqlBhB;AGllBY;EACI,cAAA;AHolBhB;AGllBgB;EACI,mBAAA;AHolBpB;AGllBwB;EACI,oBAAA;EACA,uCAAA;AHolB5B;AGhlBoB;EACI,aAAA;EACA,mBAAA;EACA,2BAAA;EACA,SAAA;EACA,eAAA;AHklBxB;AGhlBwB;EACI,6BAAA;AHklB5B;AG/kBwB;EACI,6BAAA;AHilB5B;AG9kBwB;EACI,2BAAA;AHglB5B;AG7kBwB;EACI,6BAAA;EACA,yCAAA;AH+kB5B;AG5kBwB;EACI,6BAAA;AH8kB5B;AG3kBwB;EACI,eAAA;AH6kB5B;AG1kBwB;EACI,2BAAA;AH4kB5B;AGxkBoB;EACI,kBAAA;AH0kBxB;AGvkBoB;EACI,2BAAA;EACA,qBAAA;AHykBxB;AGvkBwB;EACI,mBAAA;AHykB5B;AGtkBwB;EACI,6BAAA;EACA,2BAAA;AHwkB5B;AGnkBwB;EACI,mBAAA;AHqkB5B;AGnkBgC;EACI,oBAAA;EACA,uCAAA;AHqkBpC;AGhkBwB;EACI,gBAAA;AHkkB5B;AGhkBgC;EACI,yBAAA;AHkkBpC;AG3jBgB;EACI,gBAAA;AH6jBpB;AG3jBwB;EACI,yBAAA;AH6jB5B;AGrjBQ;;;;EAII,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,2BAAA;EACA,SAAA;EACA,yBAAA;AHujBZ;AGrjBY;;;;;;;;;;;;;;;;EAII,YAAA;EACA,yBAAA;AHmkBhB;AGhkBY;;;;;;;;;;;;;;;;EAII,YAAA;EACA,YAAA;EACA,eAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,2BAAA;EACA,gBAAA;EACA,kBAAA;EACA,SAAA;AH8kBhB;AG5kBgB;;;;;;;;;;;;;;;;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,uBAAA;EACA,wCAAA;EACA,4BAAA;EACA,8BAAA;EACA,sBAAA;EACA,eAAA;EACA,8CAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,SAAA;AH6lBpB;AG3lBoB;;;;;;;;;;;;;;;;EACI,wCAAA;AH4mBxB;AGzmBoB;;;;;;;;;;;;;;;;EACI,wCAAA;EACA,YAAA;AH0nBxB;AGtnBgB;;;;;;;;;;;;;;;;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,QAAA;EACA,kBAAA;EACA,gBAAA;AHuoBpB;AGtoBoB;;;;;;;;;;;;;;;;EACI,gBAAA;AHupBxB;AG/oBgB;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;AHipBpB;AG/oBoB;EACI,sBAAA;AHipBxB;AG3oBQ;EACI,kBAAA;AH6oBZ;AG1oBgB;EACI,WAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;AH4oBpB;AGzoBwB;EACI,iBAAA;EACA,gCAAA;EACA,4BAAA;AH2oB5B;AGroBY;EACI,MAAA;AHuoBhB;AGroBgB;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;EACA,mBAAA;AHuoBpB;AGpoBwB;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,WAAA;EACA,eAAA;EACA,wCAAA;EACA,eAAA;EACA,8CAAA;EACA,kBAAA;AHsoB5B;AGpoB4B;EACI,wCAAA;AHsoBhC;AGnoB4B;EACI,WAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,8BAAA;EACA,0BAAA;EACA,4BAAA;AHqoBhC;AGjoBgC;EACI,gBAAA;AHmoBpC;AG9nBgC;EACI,eAAA;AHgoBpC;AG3nBwB;EACI,wCAAA;EACA,YAAA;AH6nB5B;AGxnBgB;EAEI,WAAA;EACA,wBAAA;EAAA,mBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;EACA,UAAA;EACA,0DAAA;AHynBpB;AGvnBoB;EACI,QAAA;EACA,SAAA;EACA,UAAA;EACA,oBAAA;EACA,kCAAA;AHynBxB;AGpnBoB;EACI,WAAA;AHsnBxB;AGpnBwB;EACI,sBAAA;EACA,8BAAA;EACA,6BAAA;EACA,eAAA;EACA,0BAAA;AHsnB5B;AGpnB4B;EACI,iBAAA;AHsnBhC;AGlnBwB;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;AHonB5B;AGlnB4B;;EAEI,WAAA;AHonBhC;AGjnB4B;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,wCAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,YAAA;EACA,kBAAA;EACA,wCAAA;EACA,iCAAA;AHmnBhC;AGjnBgC;EACI,kBAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,0BAAA;EACA,sBAAA;EACA,4BAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,iCAAA;AHmnBpC;AGhnBgC;EACI,wCAAA;EACA,oCAAA;AHknBpC;AG7mBgC;EACI,gBAAA;AH+mBpC;AG3mB4B;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,WAAA;EACA,mBAAA;EACA,wCAAA;EACA,eAAA;AH6mBhC;AG3mBgC;EACI,YAAA;EACA,WAAA;EACA,kBAAA;EACA,wCAAA;EACA,YAAA;AH6mBpC;AG1mBgC;EACI,wBAAA;EACA,YAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,wCAAA;AH4mBpC;AGzmBgC;EACI,YAAA;EACA,WAAA;EACA,kBAAA;EACA,wCAAA;EACA,YAAA;AH2mBpC;AGvmB4B;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,wCAAA;EACA,kBAAA;EACA,4BAAA;EACA,sBAAA;EACA,8BAAA;EACA,qBAAA;EACA,YAAA;EACA,eAAA;AHymBhC;AGnmB4B;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,QAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;AHqmBhC;AGnmBgC;EACI,kBAAA;EACA,UAAA;EACA,4BAAA;EACA,uBAAA;EACA,uBAAA;EACA,eAAA;AHqmBpC;AGnmBoC;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,wCAAA;EACA,eAAA;EACA,WAAA;EACA,8CAAA;AHqmBxC;AGnmBwC;EACI,wCAAA;AHqmB5C;AGjmBoC;EACI,wCAAA;EACA,YAAA;AHmmBxC;AG3lBgB;EACI,WAAA;EACA,YAAA;EACA,gBAAA;EAEA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,yBAAA;AH4lBpB;;AGrlBA;EACI;IACI,uBAAA;EHwlBN;EGrlBE;IACI,yBAAA;EHulBN;AACF;ADvzBA,uBAAA;AKxbA;;;;;;;;;;;;;EAAA;AAeA,0BAAA;AAEA;EACI,kBAAA;EACA,MAAA;EACA,QAAA;EACA,YAAA;EACA,YAAA;EACA,wCAAA;EACA,yBAAA;EACA,aAAA;EACA,4BAAA;EACA,uBAAA;EACA,yGAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,8BAAA;EACA,YAAA;AJgvCJ;AI9uCI;EACI,WAAA;AJgvCR;AI9uCQ;EACI,iBAAA;EACA,mBAAA;AJgvCZ;AI9uCY;EACI,uBAAA;EACA,eAAA;AJgvChB;AI5uCQ;EAEI,oBAAA;EACA,8CAAA;EACA,cAAA;AJ6uCZ;AI1uCQ;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;AJ4uCZ;AI1uCY;EACI,uBAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;AJ4uChB;AI1uCgB;EACI,sBAAA;EACA,eAAA;AJ4uCpB;AIzuCgB;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;EACA,wCAAA;EACA,kBAAA;EACA,8CAAA;EACA,eAAA;AJ2uCpB;AIzuCoB;EACI,WAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,cAAA;EACA,kBAAA;EACA,qCAAA;EACA,0CAAA;AJ2uCxB;AIvuCgB;EACI,wCAAA;AJyuCpB;AIvuCoB;EACI,YAAA;AJyuCxB;AInuCQ;EACI,WAAA;AJquCZ;AInuCY;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,sBAAA;EACA,mBAAA;AJquChB;AInuCgB;EACI,2BAAA;AJquCpB;AIluCgB;EACI,UAAA;EACA,uCAAA;EACA,6BAAA;EACA,oBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,8BAAA;AJouCpB;AIjuCgB;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;AJmuCpB;AIjuCoB;EACI,uBAAA;EAAA,kBAAA;AJmuCxB;AI/tCgB;EACI,OAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,WAAA;EACA,mBAAA;EACA,wCAAA;EACA,eAAA;EAEA,mCAAA;AJguCpB;AI9tCoB;EACI,YAAA;EACA,WAAA;EACA,kBAAA;EACA,qCAAA;EACA,YAAA;AJguCxB;AI7tCoB;EACI,wBAAA;EACA,YAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,qCAAA;AJ+tCxB;AI5tCoB;EACI,YAAA;EACA,WAAA;EACA,kBAAA;EACA,qCAAA;EACA,YAAA;AJ8tCxB;AI1tCgB;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,kBAAA;EACA,wCAAA;EACA,0BAAA;EACA,sBAAA;EACA,2BAAA;EACA,8BAAA;EACA,eAAA;EACA,8CAAA;AJ4tCpB;AI1tCoB;EACI,wCAAA;AJ4tCxB;AIztCoB;EACI,sBAAA;AJ2tCxB;AIttCY;EACI,sBAAA;EACA,uBAAA;AJwtChB;AIntCI;EACI,WAAA;EACA,kBAAA;AJqtCR;AIntCQ;EACI,mBAAA;AJqtCZ;AIltCQ;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,uBAAA;AJotCZ;AIltCY;EACI,iBAAA;EACA,eAAA;EACA,YAAA;AJotChB;AIltCgB;EACI,6CAAA;AJotCpB;;AI7sCA;EACI,QAAA;EACA,SAAA;EACA,UAAA;EACA,oBAAA;EACA,2HAAA;AJgtCJ;;AKv8CA;;;;;;;;;;;;;EAAA;AAeA,wBAAA;AACA;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,wCAAA;EACA,aAAA;EACA,mBAAA;EACA,UAAA;EACA,mBAAA;EACA,mBAAA;EACA,yCAAA;ALy8CJ;AKv8CI;EACI,gBAAA;EACA,uCAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;ALy8CR;AKv8CQ;EACI,WAAA;EACA,iBAAA;ALy8CZ;AKv8CY;EACI,uBAAA;EACA,eAAA;ALy8ChB;AKr8CQ;EACI,WAAA;EACA,aAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,2BAAA;EACA,SAAA;EACA,eAAA;EACA,sBAAA;ALu8CZ;AKr8CY;EACI,2BAAA;EACA,kBAAA;ALu8ChB;AKp8CY;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,uBAAA;ALs8ChB;AKp8CgB;EACI,QAAA;EACA,SAAA;EACA,UAAA;ALs8CpB;AKn8CgB;EACI,kBAAA;EACA,WAAA;ALq8CpB;AKn8CoB;EACI,kBAAA;EACA,QAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,0BAAA;EACA,gBAAA;EACA,oBAAA;ALq8CxB;AKj8CgB;;;EAGI,uCAAA;EACA,6BAAA;EACA,8BAAA;EACA,kBAAA;ALm8CpB;AKh8CgB;;EAEI,wCAAA;ALk8CpB;AK/7CgB;EACI,gCAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,eAAA;ALi8CpB;AK97CgB;EACI,WAAA;EACA,kBAAA;EACA,0BAAA;ALg8CpB;AKz7CgB;EACI,WAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,2BAAA;EACA,2BAAA;EACA,8BAAA;EACA,kBAAA;AL27CpB;AKz7CoB;EACI,uBAAA;EAAA,kBAAA;EACA,eAAA;EACA,kBAAA;AL27CxB;AKx7CoB;EACI,YAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,YAAA;AL07CxB;AKx7CwB;EACI,aAAA;AL07C5B;AKr7CgB;EACI,wCAAA;EACA,oBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,4BAAA;EACA,4BAAA;EACA,+BAAA;EACA,eAAA;EACA,8CAAA;ALu7CpB;AKr7CoB;EACI,wCAAA;ALu7CxB;AKj7CQ;EACI,aAAA;EACA,mBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;ALm7CZ;AKj7CY;EAEI,WAAA;EACA,4BAAA;EAAA,uBAAA;EACA,UAAA;EACA,gBAAA;EAEA,sGAAA;ALi7ChB;AK96CoB;EACI,eAAA;EACA,kBAAA;EACA,UAAA;ALg7CxB;AK96CwB;EACI,kBAAA;EACA,WAAA;EACA,QAAA;EACA,UAAA;EACA,wBAAA;EACA,cAAA;EACA,wCAAA;EACA,WAAA;ALg7C5B;AK56CwB;EACI,uBAAA;EAAA,kBAAA;EACA,uCAAA;EACA,eAAA;EACA,iBAAA;EACA,0BAAA;AL86C5B;AK16CoB;EACI,yBAAA;AL46CxB;AK16CwB;EACI,sBAAA;AL46C5B;AKx6CoB;EACI,aAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,2BAAA;EACA,eAAA;EACA,SAAA;AL06CxB;AKx6CwB;EACI,uCAAA;EACA,kBAAA;EACA,uBAAA;EAAA,kBAAA;EACA,aAAA;EACA,6CAAA;AL06C5B;AKx6C4B;EACI,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;EACA,eAAA;EACA,uCAAA;AL06ChC;AKx6CgC;EACI,6BAAA;AL06CpC;AKv6CgC;EACI,2BAAA;ALy6CpC;AKp6C4B;EACI,oBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,eAAA;ALs6ChC;AKn6C4B;EACI,SAAA;EACA,UAAA;EACA,sBAAA;EACA,iCAAA;EACA,eAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;EACA,yGAAA;ALq6ChC;AKj6C4B;EACI,aAAA;EACA,SAAA;EACA,SAAA;EACA,UAAA;EACA,yEAAA;ALm6ChC;AKj6CgC;EACI,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,uCAAA;EACA,8BAAA;EACA,6BAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,uBAAA;EACA,eAAA;EACA,8CAAA;ALm6CpC;AKj6CoC;EACI,wCAAA;ALm6CxC;AKh6CoC;EACI,kBAAA;EACA,cAAA;EACA,oBAAA;ALk6CxC;AK/5CoC;EACI,kBAAA;EACA,kBAAA;ALi6CxC;AKz5C4B;EACI,+CAAA;EACA,oBAAA;EACA,oCAAA;AL25ChC;AKx5C4B;EACI,mBAAA;AL05ChC;AKv5C4B;EACI,YAAA;EACA,cAAA;EACA,UAAA;EACA,qGAAA;ALy5ChC;AKt5C4B;EACI,YAAA;EACA,UAAA;EACA,wEAAA;ALw5ChC;AKl5CoB;EACI,SAAA;EACA,UAAA;EACA,qEAAA;ALo5CxB;AKh5CgB;EACI,QAAA;EACA,SAAA;EACA,UAAA;EACA,iGAAA;ALk5CpB;AK54CI;EACI,mBAAA;EACA,UAAA;EACA,oBAAA;AL84CR;;AK14CA;EAIY;IACI,WAAA;IACA,eAAA;EL04Cd;EKx4Cc;IACI,uBAAA;IACA,aAAA;IACA,mBAAA;IACA,mBAAA;IACA,uBAAA;EL04ClB;EKx4CkB;IACI,kBAAA;IACA,WAAA;EL04CtB;EKx4CsB;IACI,kBAAA;IACA,QAAA;IACA,WAAA;IACA,2BAAA;IACA,qBAAA;IACA,oBAAA;IACA,mCAAA;IACA,0BAAA;IACA,gBAAA;IACA,oBAAA;EL04C1B;EKt4CkB;IACI,WAAA;ELw4CtB;EKj4CkB;IACI,WAAA;ELm4CtB;AACF;AMvyDA;;;;;;;;;;;;;EAAA;AAeA;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,yCAAA;EACA,UAAA;EACA,mBAAA;EACA,mBAAA;EACA,yCAAA;ANwyDJ;AMtyDI;EACI,YAAA;EACA,mBAAA;EACA,uCAAA;EACA,8CAAA;EACA,aAAA;ANwyDR;AMtyDQ;EACI,WAAA;EACA,iBAAA;EACA,mBAAA;ANwyDZ;AMtyDY;EACI,+BAAA;EACA,eAAA;ANwyDhB;AMpyDQ;EAMI,mBAAA;ANiyDZ;AMtyDY;EACI,6BAAA;EACA,2BAAA;EACA,+BAAA;ANwyDhB;AMnyDQ;EACI,WAAA;EACA,mBAAA;ANqyDZ;AMnyDY;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,8BAAA;EACA,sBAAA;ANqyDhB;AMlyDY;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,mBAAA;ANoyDhB;AMlyDgB;EACI,WAAA;EACA,YAAA;EACA,uCAAA;EACA,4CAAA;EACA,6CAAA;EACA,+CAAA;EACA,kBAAA;EACA,2BAAA;EACA,8BAAA;EACA,8BAAA;EACA,sBAAA;EACA,aAAA;ANoyDpB;AMlyDoB;EACI,2BAAA;ANoyDxB;AMjyDoB;EACI,aAAA;ANmyDxB;AM/xDgB;EACI,YAAA;EACA,uBAAA;EAAA,kBAAA;EACA,wCAAA;EACA,4BAAA;EACA,sBAAA;EACA,aAAA;EACA,4BAAA;EACA,+BAAA;EACA,YAAA;EACA,eAAA;EACA,8CAAA;ANiyDpB;AM/xDoB;EACI,wCAAA;ANiyDxB;AM9xDoB;EACI,wCAAA;EACA,eAAA;ANgyDxB;AM3xDY;EACI,eAAA;EACA,2BAAA;EACA,iCAAA;AN6xDhB;AM3xDgB;EACI,mBAAA;EACA,wCAAA;EACA,4BAAA;EACA,YAAA;EACA,8CAAA;AN6xDpB;AM5xDoB;EACI,kBAAA;AN8xDxB;AM3xDoB;EACI,wCAAA;AN6xDxB;AMzxDgB;EACI,wCAAA;EACA,6BAAA;EACA,6BAAA;EACA,iCAAA;AN2xDpB;AMzxDoB;EACI,wCAAA;EACA,oCAAA;EACA,4BAAA;AN2xDxB;AMrxDQ;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;EACA,qBAAA;ANuxDZ;AMrxDY;EACI,OAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,4BAAA;EACA,wCAAA;EACA,eAAA;EACA,8BAAA;EACA,sBAAA;EACA,2BAAA;EACA,8CAAA;ANuxDhB;AMrxDgB;EACI,wCAAA;EACA,mBAAA;ANuxDpB;AMrxDoB;EACI,wCAAA;ANuxDxB;AMnxDgB;EACI,kBAAA;ANqxDpB;AMlxDgB;EACI,wCAAA;ANoxDpB;AM/wDQ;EACI,mBAAA;ANixDZ;AMhxDY;EACI,6BAAA;EACA,2BAAA;EACA,mCAAA;ANkxDhB;AMhxDgB;EACI,2BAAA;ANkxDpB;AM7wDgB;EACI,2BAAA;AN+wDpB;AMzwDI;EACI,mBAAA;EACA,UAAA;EACA,oBAAA;AN2wDR;;AOv+DA;;;;;;;;;;;;;EAAA;AAeA;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,yCAAA;EACA,aAAA;EACA,mBAAA;EACA,UAAA;EACA,mBAAA;EACA,mBAAA;EACA,yCAAA;APy+DJ;AOv+DI;EACI,uCAAA;EACA,mBAAA;EACA,8CAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,8BAAA;EACA,aAAA;APy+DR;AOv+DQ;EACI,mBAAA;APy+DZ;AOx+DY;EACI,kBAAA;EACA,6BAAA;EACA,mBAAA;AP0+DhB;AOx+DY;EACI,gBAAA;AP0+DhB;AOr+DY;EACI,eAAA;EACA,YAAA;EACA,wBAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,8BAAA;EACA,6BAAA;EACA,8CAAA;APu+DhB;AOr+DY;EACI,wCAAA;EACA,kBAAA;APu+DhB;AOr+DgB;EACI,wCAAA;APu+DpB;AOn+DY;EACI,sCAAA;APq+DhB;AOn+DgB;EACI,sCAAA;APq+DpB;AO/9DI;EACI,mBAAA;EACA,UAAA;EACA,oBAAA;APi+DR;;ADxnDA,qBAAA;AS9bA;;;;;;;;;;;;;EAAA;AAeA;EACI,YAAA;ARyjEJ;AQtjEQ;EACI,eAAA;ARwjEZ;AQrjEQ;EACI,UAAA;EACA,8BAAA;EACA,iBAAA;ARujEZ;;AQljEA;EACI,sBAAA;EACA,gCAAA;EACA,6BAAA;EACA,wCAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,qBAAA;EACA,uCAAA;EACA,gBAAA;EACA,WAAA;ARqjEJ","file":"styles.css"} \ No newline at end of file +{"version":3,"sources":["styles.scss","styles.css","_editor.scss","_control-panel.scss","_console.scss","_settings-menu.scss","_examples-menu.scss","_save-menu.scss","_json-yaml-warning.scss","_jsonld-vis.scss"],"names":[],"mappings":"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","file":"styles.css"} \ No newline at end of file diff --git a/packages/web-new/src/template.html b/packages/web-new/src/template.html index d94ceedab..7ae07fe31 100644 --- a/packages/web-new/src/template.html +++ b/packages/web-new/src/template.html @@ -13,671 +13,680 @@ SPDX-License-Identifier: EPL-2.0 OR W3C-20150513 --> - - - - - - - - TD Playground - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- -
- - -
-
-
-
- - - - - - - -
-
-
-
-
    -
  • - -
  • -
- -
- - -
-
-
-
-
-
-
-
-
-
- - - - - - -
-
- -
-
-
- - - - - - - - - - - - - -
-
-
- -
-
-
- -
-

Settings

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

Preferences

-
-
- - -
- -
- -
- 6 - - 40 -
-
- -
- -
-
-
- - -
- - -
-
-
- -
- -
-

Filter by:

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

Share this TD by creating a link or donwload it to your device! -

-
- - - -
- - -
- -
-

*The Save as function is currently only available for Chrome, Edge and - Opera*

-
- -
-
- - -
-
-
-

Warning!

-

YAML conversion for TD is still experimental. If you still wish to continue, please confirm by - clicking on the button.

-
-
- - -
-
-
- -
- - - \ No newline at end of file + + + + + + + + TD Playground + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
+ + + + + + + +
+
+
+
+
    +
  • + +
  • +
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + +
+
+
+ +
+
+
+ +
+

Settings

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+

Preferences

+
+
+ + +
+ +
+ +
+ 6 + + 40 +
+
+ +
+ +
+
+
+ + +
+ + +
+
+
+ +
+ +
+

Filter by:

+
+ +
+ +
+
+
+ +
+ +
+
+
+ + + +
+
+ +
+
+ +
+ + +
+
+
+ + +
+
+
+ +
+ +
+

Share this TD by creating a link or donwload it to your device! +

+
+ + + +
+ + +
+ +
+

*The Save as function is currently only available for Chrome, Edge and + Opera*

+
+ +
+
+ + +
+
+
+

Warning!

+

YAML conversion for TD is still experimental. If you still wish to continue, please confirm by + clicking on the button.

+
+
+ + +
+
+
+ +
+ + + \ No newline at end of file From 8e0d4cd2371de799f3723e6e389f9b4b3ae9826a Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Tue, 26 Sep 2023 22:45:29 +0200 Subject: [PATCH 12/12] Update packages/web-new/README.md Co-authored-by: Jan Romann --- packages/web-new/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-new/README.md b/packages/web-new/README.md index 690ddc07d..464b528de 100644 --- a/packages/web-new/README.md +++ b/packages/web-new/README.md @@ -94,7 +94,7 @@ Finally the web application can be deployed in production or in development mode ### Development mode -1. Utilze the command `npm run dev` which will start the webpack-dev-server in development mode, generate source maps for easier debuging, open your default browser and serve the application. +1. Utilize the command `npm run dev` which will start the webpack-dev-server in development mode, generate source maps for easier debugging, open your default browser and serve the application. ```sh npm run dev