diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 59d79c928..6246d7ce5 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -46,7 +46,7 @@ jobs:
"@cldcvr/flow-code-editor":"packages/flow-code-editor/CHANGELOG.md",
"@cldcvr/flow-md-editor":"packages/flow-md-editor/CHANGELOG.md",
"@cldcvr/flow-core":"packages/flow-core/CHANGELOG.md",
- "@cldcvr/flow-table":"packages/flow-table/CHANGELOG.md",
+ "@cldcvr/flow-table":"packages/flow-table/CHANGELOG.md", "@cldcvr/flow-force-graph":"packages/flow-force-graph/CHANGELOG.md",
"@cldcvr/flow-core-config":"packages/flow-core-config/CHANGELOG.md"
}
- name: Send Slack Notification
@@ -137,6 +137,10 @@ jobs:
with:
cmd: echo "`jq '.publishConfig.registry="https://npm.pkg.github.com"' packages/flow-table/package.json`" > packages/flow-table/package.json
+ - uses: sergeysova/jq-action@v2
+ with:
+ cmd: echo "`jq '.publishConfig.registry="https://npm.pkg.github.com"' packages/flow-force-graph/package.json`" > packages/flow-force-graph/package.json
+
- uses: actions/setup-node@v2
with:
node-version: "16.x"
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 0e97e489c..c0222ec6d 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -5,5 +5,6 @@ yarn workspace @cldcvr/flow-core compile && yarn workspace @cldcvr/flow-core tes
&& yarn workspace @cldcvr/flow-log compile && yarn workspace @cldcvr/flow-log test-build \
&& yarn workspace @cldcvr/flow-code-editor compile \
&& yarn workspace @cldcvr/flow-table compile && yarn workspace @cldcvr/flow-table test-build \
+&& yarn workspace @cldcvr/flow-force-graph compile \
&& yarn workspace @cldcvr/flow-md-editor compile && yarn workspace @cldcvr/flow-md-editor test-build \
&& git add -A
diff --git a/.storybook/main.js b/.storybook/main.js
index 6a72a6402..590ad1e63 100644
--- a/.storybook/main.js
+++ b/.storybook/main.js
@@ -41,6 +41,10 @@ module.exports = {
{
find: "@cldcvr/flow-table/src",
replacement: path.resolve(__dirname, "../packages/flow-table/src")
+ },
+ {
+ find: "@cldcvr/flow-force-graph/src",
+ replacement: path.resolve(__dirname, "../packages/flow-force-graph/src")
}
];
}
diff --git a/.storybook/preview.js b/.storybook/preview.js
index 1594de370..a6995a752 100644
--- a/.storybook/preview.js
+++ b/.storybook/preview.js
@@ -10,6 +10,7 @@ import "@cldcvr/flow-core/src";
import "@cldcvr/flow-log/src";
import "@cldcvr/flow-code-editor/src";
import "@cldcvr/flow-table/src";
+import "@cldcvr/flow-force-graph/src";
import "@cldcvr/flow-md-editor/src";
import { setCustomElementsManifest, setCustomElements } from "@storybook/web-components";
import "./storybook.css";
@@ -93,6 +94,10 @@ async function run() {
await fetch(new URL("../packages/flow-table/custom-elements.json", import.meta.url))
).json();
+ const forceGraphCustomElements = await (
+ await fetch(new URL("../packages/flow-force-graph/custom-elements.json", import.meta.url))
+ ).json();
+
const mdEditorCustomElements = await (
await fetch(new URL("../packages/flow-md-editor/custom-elements.json", import.meta.url))
).json();
@@ -107,6 +112,9 @@ async function run() {
setCustomElementsManifest(tableCustomElements);
setCustomElements(tableCustomElements);
+ setCustomElementsManifest(forceGraphCustomElements);
+ setCustomElements(forceGraphCustomElements);
+
setCustomElementsManifest(mdEditorCustomElements);
setCustomElements(mdEditorCustomElements);
}
diff --git a/package.json b/package.json
index 290025ffc..5d89aa207 100644
--- a/package.json
+++ b/package.json
@@ -19,8 +19,9 @@
"build-flow-code-editor": "cd packages/flow-code-editor && yarn compile",
"build-flow-md-editor": "cd packages/flow-md-editor && yarn compile",
"build-flow-table": "cd packages/flow-table && yarn compile",
+ "build-flow-force-graph": "cd packages/flow-force-graph && yarn compile",
"build-types-generator": "cd packages/custom-elements-manifest-to-types && yarn build",
- "build-packages": "yarn build-types-generator && yarn build-flow-core-config && yarn build-flow-core && yarn build-flow-code-editor && yarn build-flow-log && yarn build-flow-table && yarn build-flow-md-editor",
+ "build-packages": "yarn build-types-generator && yarn build-flow-core-config && yarn build-flow-core && yarn build-flow-code-editor && yarn build-flow-log && yarn build-flow-table && yarn build-flow-md-editor && yarn build-flow-force-graph",
"release": "cp README.md packages/flow-core && yarn build-packages && yarn changeset publish",
"prepare": "husky install",
"test": "yarn loki test"
diff --git a/packages/flow-core/custom-elements.json b/packages/flow-core/custom-elements.json
index 33af871e0..b34e2fbfc 100644
--- a/packages/flow-core/custom-elements.json
+++ b/packages/flow-core/custom-elements.json
@@ -2095,237 +2095,6 @@
}
]
},
- {
- "kind": "javascript-module",
- "path": "src/components/f-counter/f-counter.ts",
- "declarations": [
- {
- "kind": "class",
- "description": "",
- "name": "FCounter",
- "members": [
- {
- "kind": "field",
- "name": "fill",
- "type": {
- "text": "string"
- },
- "default": "\"\""
- },
- {
- "kind": "field",
- "name": "label",
- "type": {
- "text": "number"
- },
- "attribute": "label"
- },
- {
- "kind": "field",
- "name": "size",
- "type": {
- "text": "\"large\" | \"medium\" | \"small\" | undefined"
- },
- "default": "\"medium\"",
- "attribute": "size"
- },
- {
- "kind": "field",
- "name": "state",
- "type": {
- "text": "FCounterStateProp | undefined"
- },
- "default": "\"neutral\"",
- "attribute": "state"
- },
- {
- "kind": "field",
- "name": "loading",
- "type": {
- "text": "boolean | undefined"
- },
- "default": "false",
- "attribute": "loading"
- },
- {
- "kind": "field",
- "name": "disabled",
- "type": {
- "text": "boolean | undefined"
- },
- "default": "false",
- "attribute": "disabled"
- },
- {
- "kind": "field",
- "name": "required",
- "type": {
- "text": "array"
- },
- "readonly": true,
- "default": "[\"label\"]",
- "description": "mention required fields here"
- },
- {
- "kind": "method",
- "name": "validateProperties"
- },
- {
- "kind": "field",
- "name": "computedLabel",
- "readonly": true
- },
- {
- "kind": "method",
- "name": "abbrNum",
- "parameters": [
- {
- "name": "number",
- "type": {
- "text": "number"
- }
- },
- {
- "name": "decPlaces",
- "type": {
- "text": "number"
- }
- }
- ]
- },
- {
- "kind": "field",
- "name": "textColor",
- "description": "compute textColor when custom color of tag is defined.",
- "readonly": true
- },
- {
- "kind": "field",
- "name": "loaderColor",
- "description": "compute loaderColor when custom color of tag is defined.",
- "readonly": true
- },
- {
- "kind": "method",
- "name": "applyStyles",
- "description": "apply inline styles to shadow-dom for custom fill."
- },
- {
- "kind": "field",
- "name": "tooltipElement",
- "type": {
- "text": "HTMLElement"
- },
- "inheritedFrom": {
- "name": "FRoot",
- "module": "src/mixins/components/f-root/f-root.ts"
- }
- },
- {
- "kind": "field",
- "name": "tooltip",
- "type": {
- "text": "string | undefined"
- },
- "attribute": "tooltip",
- "reflects": true,
- "inheritedFrom": {
- "name": "FRoot",
- "module": "src/mixins/components/f-root/f-root.ts"
- }
- },
- {
- "kind": "field",
- "name": "mouseEnter",
- "type": {
- "text": "() => void | undefined"
- },
- "inheritedFrom": {
- "name": "FRoot",
- "module": "src/mixins/components/f-root/f-root.ts"
- }
- },
- {
- "kind": "field",
- "name": "mouseLeave",
- "type": {
- "text": "() => void | undefined"
- },
- "inheritedFrom": {
- "name": "FRoot",
- "module": "src/mixins/components/f-root/f-root.ts"
- }
- }
- ],
- "attributes": [
- {
- "name": "label",
- "type": {
- "text": "number"
- },
- "fieldName": "label"
- },
- {
- "name": "size",
- "type": {
- "text": "\"large\" | \"medium\" | \"small\" | undefined"
- },
- "default": "\"medium\"",
- "fieldName": "size"
- },
- {
- "name": "state",
- "type": {
- "text": "FCounterStateProp | undefined"
- },
- "default": "\"neutral\"",
- "fieldName": "state"
- },
- {
- "name": "loading",
- "type": {
- "text": "boolean | undefined"
- },
- "default": "false",
- "fieldName": "loading"
- },
- {
- "name": "disabled",
- "type": {
- "text": "boolean | undefined"
- },
- "default": "false",
- "fieldName": "disabled"
- },
- {
- "name": "tooltip",
- "type": {
- "text": "string | undefined"
- },
- "fieldName": "tooltip",
- "inheritedFrom": {
- "name": "FRoot",
- "module": "src/mixins/components/f-root/f-root.ts"
- }
- }
- ],
- "superclass": {
- "name": "FRoot",
- "module": "/src/mixins/components/f-root/f-root"
- }
- }
- ],
- "exports": [
- {
- "kind": "js",
- "name": "FCounter",
- "declaration": {
- "name": "FCounter",
- "module": "src/components/f-counter/f-counter.ts"
- }
- }
- ]
- },
{
"kind": "javascript-module",
"path": "src/components/f-date-time-picker/f-date-time-picker.ts",
@@ -2841,6 +2610,237 @@
}
]
},
+ {
+ "kind": "javascript-module",
+ "path": "src/components/f-counter/f-counter.ts",
+ "declarations": [
+ {
+ "kind": "class",
+ "description": "",
+ "name": "FCounter",
+ "members": [
+ {
+ "kind": "field",
+ "name": "fill",
+ "type": {
+ "text": "string"
+ },
+ "default": "\"\""
+ },
+ {
+ "kind": "field",
+ "name": "label",
+ "type": {
+ "text": "number"
+ },
+ "attribute": "label"
+ },
+ {
+ "kind": "field",
+ "name": "size",
+ "type": {
+ "text": "\"large\" | \"medium\" | \"small\" | undefined"
+ },
+ "default": "\"medium\"",
+ "attribute": "size"
+ },
+ {
+ "kind": "field",
+ "name": "state",
+ "type": {
+ "text": "FCounterStateProp | undefined"
+ },
+ "default": "\"neutral\"",
+ "attribute": "state"
+ },
+ {
+ "kind": "field",
+ "name": "loading",
+ "type": {
+ "text": "boolean | undefined"
+ },
+ "default": "false",
+ "attribute": "loading"
+ },
+ {
+ "kind": "field",
+ "name": "disabled",
+ "type": {
+ "text": "boolean | undefined"
+ },
+ "default": "false",
+ "attribute": "disabled"
+ },
+ {
+ "kind": "field",
+ "name": "required",
+ "type": {
+ "text": "array"
+ },
+ "readonly": true,
+ "default": "[\"label\"]",
+ "description": "mention required fields here"
+ },
+ {
+ "kind": "method",
+ "name": "validateProperties"
+ },
+ {
+ "kind": "field",
+ "name": "computedLabel",
+ "readonly": true
+ },
+ {
+ "kind": "method",
+ "name": "abbrNum",
+ "parameters": [
+ {
+ "name": "number",
+ "type": {
+ "text": "number"
+ }
+ },
+ {
+ "name": "decPlaces",
+ "type": {
+ "text": "number"
+ }
+ }
+ ]
+ },
+ {
+ "kind": "field",
+ "name": "textColor",
+ "description": "compute textColor when custom color of tag is defined.",
+ "readonly": true
+ },
+ {
+ "kind": "field",
+ "name": "loaderColor",
+ "description": "compute loaderColor when custom color of tag is defined.",
+ "readonly": true
+ },
+ {
+ "kind": "method",
+ "name": "applyStyles",
+ "description": "apply inline styles to shadow-dom for custom fill."
+ },
+ {
+ "kind": "field",
+ "name": "tooltipElement",
+ "type": {
+ "text": "HTMLElement"
+ },
+ "inheritedFrom": {
+ "name": "FRoot",
+ "module": "src/mixins/components/f-root/f-root.ts"
+ }
+ },
+ {
+ "kind": "field",
+ "name": "tooltip",
+ "type": {
+ "text": "string | undefined"
+ },
+ "attribute": "tooltip",
+ "reflects": true,
+ "inheritedFrom": {
+ "name": "FRoot",
+ "module": "src/mixins/components/f-root/f-root.ts"
+ }
+ },
+ {
+ "kind": "field",
+ "name": "mouseEnter",
+ "type": {
+ "text": "() => void | undefined"
+ },
+ "inheritedFrom": {
+ "name": "FRoot",
+ "module": "src/mixins/components/f-root/f-root.ts"
+ }
+ },
+ {
+ "kind": "field",
+ "name": "mouseLeave",
+ "type": {
+ "text": "() => void | undefined"
+ },
+ "inheritedFrom": {
+ "name": "FRoot",
+ "module": "src/mixins/components/f-root/f-root.ts"
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "name": "label",
+ "type": {
+ "text": "number"
+ },
+ "fieldName": "label"
+ },
+ {
+ "name": "size",
+ "type": {
+ "text": "\"large\" | \"medium\" | \"small\" | undefined"
+ },
+ "default": "\"medium\"",
+ "fieldName": "size"
+ },
+ {
+ "name": "state",
+ "type": {
+ "text": "FCounterStateProp | undefined"
+ },
+ "default": "\"neutral\"",
+ "fieldName": "state"
+ },
+ {
+ "name": "loading",
+ "type": {
+ "text": "boolean | undefined"
+ },
+ "default": "false",
+ "fieldName": "loading"
+ },
+ {
+ "name": "disabled",
+ "type": {
+ "text": "boolean | undefined"
+ },
+ "default": "false",
+ "fieldName": "disabled"
+ },
+ {
+ "name": "tooltip",
+ "type": {
+ "text": "string | undefined"
+ },
+ "fieldName": "tooltip",
+ "inheritedFrom": {
+ "name": "FRoot",
+ "module": "src/mixins/components/f-root/f-root.ts"
+ }
+ }
+ ],
+ "superclass": {
+ "name": "FRoot",
+ "module": "/src/mixins/components/f-root/f-root"
+ }
+ }
+ ],
+ "exports": [
+ {
+ "kind": "js",
+ "name": "FCounter",
+ "declaration": {
+ "name": "FCounter",
+ "module": "src/components/f-counter/f-counter.ts"
+ }
+ }
+ ]
+ },
{
"kind": "javascript-module",
"path": "src/components/f-div/f-div.ts",
diff --git a/packages/flow-force-graph/.npmignore b/packages/flow-force-graph/.npmignore
new file mode 100644
index 000000000..c0ad4b916
--- /dev/null
+++ b/packages/flow-force-graph/.npmignore
@@ -0,0 +1,7 @@
+*
+!dist/**/*.*
+!shims.d.ts
+!custom-elements.json
+!html.html-data.json
+!src/**/*.*
+!README.md
diff --git a/packages/flow-force-graph/CHANGELOG.md b/packages/flow-force-graph/CHANGELOG.md
new file mode 100644
index 000000000..8f1747248
--- /dev/null
+++ b/packages/flow-force-graph/CHANGELOG.md
@@ -0,0 +1,12 @@
+
Release Notes
+
+All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
+
+# Change Log
+
+## [0.0.1] - 2023-03-13
+
+### Improvements
+
+- First release
+
diff --git a/packages/flow-force-graph/LICENSE b/packages/flow-force-graph/LICENSE
new file mode 100644
index 000000000..b766bcd68
--- /dev/null
+++ b/packages/flow-force-graph/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) 2022 CloudCover Consultancy Pvt Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/packages/flow-force-graph/compile.sh b/packages/flow-force-graph/compile.sh
new file mode 100755
index 000000000..0be2ebdcd
--- /dev/null
+++ b/packages/flow-force-graph/compile.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+HERE=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+
+cd "$HERE"
+
+yarn analyze
+cd "../custom-elements-manifest-to-types"
+yarn build
+cd .. && cd "./flow-force-graph"
+
+echo "building library..."
+vite build --emptyOutDir && tsc -emitDeclarationOnly
+echo "generating types..."
+node generate-types.js
diff --git a/packages/flow-force-graph/custom-elements.json b/packages/flow-force-graph/custom-elements.json
new file mode 100644
index 000000000..35f51c6c0
--- /dev/null
+++ b/packages/flow-force-graph/custom-elements.json
@@ -0,0 +1,114 @@
+{
+ "schemaVersion": "1.0.0",
+ "readme": "",
+ "modules": [
+ {
+ "kind": "javascript-module",
+ "path": "src/index.ts",
+ "declarations": [],
+ "exports": [
+ {
+ "kind": "js",
+ "name": "*",
+ "declaration": {
+ "name": "*",
+ "package": "\"./components/f-force-graph/f-force-graph\""
+ }
+ }
+ ]
+ },
+ {
+ "kind": "javascript-module",
+ "path": "src/shims.d.ts",
+ "declarations": [
+ {
+ "kind": "variable",
+ "name": "content",
+ "type": {
+ "text": "Record"
+ }
+ }
+ ],
+ "exports": [
+ {
+ "kind": "js",
+ "name": "default",
+ "declaration": {
+ "name": "content",
+ "module": "src/shims.d.ts"
+ }
+ },
+ {
+ "kind": "js",
+ "name": "default",
+ "declaration": {
+ "name": "content",
+ "module": "src/shims.d.ts"
+ }
+ }
+ ]
+ },
+ {
+ "kind": "javascript-module",
+ "path": "src/components/f-force-graph/f-force-graph.ts",
+ "declarations": [
+ {
+ "kind": "class",
+ "description": "",
+ "name": "FForceGraph",
+ "members": [
+ {
+ "kind": "field",
+ "name": "svg",
+ "type": {
+ "text": "SVGSVGElement"
+ }
+ },
+ {
+ "kind": "method",
+ "name": "handleDbClick",
+ "parameters": [
+ {
+ "name": "event",
+ "type": {
+ "text": "MouseEvent"
+ }
+ },
+ {
+ "name": "d",
+ "type": {
+ "text": "any"
+ }
+ }
+ ]
+ }
+ ],
+ "superclass": {
+ "name": "FRoot",
+ "package": "@cldcvr/flow-core/src/mixins/components/f-root/f-root"
+ },
+ "tagName": "f-force-graph",
+ "customElement": true
+ }
+ ],
+ "exports": [
+ {
+ "kind": "js",
+ "name": "FForceGraph",
+ "declaration": {
+ "name": "FForceGraph",
+ "module": "src/components/f-force-graph/f-force-graph.ts"
+ }
+ },
+ {
+ "kind": "custom-element-definition",
+ "name": "f-force-graph",
+ "declaration": {
+ "name": "FForceGraph",
+ "module": "src/components/f-force-graph/f-force-graph.ts"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/packages/flow-force-graph/generate-types.js b/packages/flow-force-graph/generate-types.js
new file mode 100644
index 000000000..8d7a10c70
--- /dev/null
+++ b/packages/flow-force-graph/generate-types.js
@@ -0,0 +1,24 @@
+/* eslint-disable*/
+const fs = require("fs");
+const customElementsJSON = require("./custom-elements.json");
+const vue3TypesFileName = `${__dirname}/dist/types/vue3.ts`;
+const vue2TypesFileName = `${__dirname}/dist/types/vue2.ts`;
+const reactTypesFileName = `${__dirname}/dist/types/react.ts`;
+
+const { transformSchema } = require("./../custom-elements-manifest-to-types");
+
+const vue2Types = transformSchema(customElementsJSON, "vue2", "./src/index");
+const vue3Types = transformSchema(customElementsJSON, "vue3", "./src/index");
+
+const reactTypes = transformSchema(customElementsJSON, "react", "./src/index");
+
+try {
+ fs.writeFileSync(vue2TypesFileName, vue2Types);
+ console.log(`\x1b[32m \r ${vue2TypesFileName} generated \u2705 \x1b[0m`);
+ fs.writeFileSync(vue3TypesFileName, vue3Types);
+ console.log(`\x1b[32m \r ${vue3TypesFileName} generated \u2705 \x1b[0m`);
+ fs.writeFileSync(reactTypesFileName, reactTypes);
+ console.log(`\x1b[32m \r ${reactTypesFileName} generated \u2705 \x1b[0m`);
+} catch (e) {
+ console.log(e);
+}
diff --git a/packages/flow-force-graph/html.html-data.json b/packages/flow-force-graph/html.html-data.json
new file mode 100644
index 000000000..7dff2d5ba
--- /dev/null
+++ b/packages/flow-force-graph/html.html-data.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "tags": [
+ {
+ "name": "f-force-graph",
+ "description": "Attributes:\n\n * `tooltip` {`string | undefined`} - \n\nProperties:\n\n * `svg` {`SVGSVGElement`} - \n\n * `styles` {`CSSResult[]`} - css loaded from scss file\n\n * `tooltipElement` {`HTMLElement`} - \n\n * `tooltip` {`string | undefined`} - \n\n * `mouseEnter` - \n\n * `mouseLeave` - ",
+ "attributes": [
+ {
+ "name": "tooltip",
+ "description": "`tooltip` {`string | undefined`} - \n\nProperty: tooltip",
+ "values": []
+ }
+ ]
+ }
+ ],
+ "globalAttributes": [],
+ "valueSets": []
+}
\ No newline at end of file
diff --git a/packages/flow-force-graph/package.json b/packages/flow-force-graph/package.json
new file mode 100644
index 000000000..61d782346
--- /dev/null
+++ b/packages/flow-force-graph/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "@cldcvr/flow-force-graph",
+ "version": "0.0.1",
+ "description": "Force chart web component based on d3",
+ "module": "dist/flow-force-graph.es.js",
+ "main": "dist/flow-force-graph.cjs.js",
+ "types": "dist/types/index.d.ts",
+ "sideEffects": false,
+ "scripts": {
+ "prepublishOnly": "./compile.sh",
+ "compile": "./compile.sh",
+ "meta-build": "./meta-build.sh",
+ "build": "vite build --emptyOutDir && tsc -emitDeclarationOnly",
+ "build:watch": "concurrently --kill-others \"vite build --emptyOutDir --watch\" \"tsc --watch\"",
+ "lint:eslint": "eslint 'src/**/*.ts' './custom-elements.vue.ts'",
+ "analyze": "cem analyze --litelement --globs \"src/**/*.ts\" && wca analyze src --format vscode --outFile html.html-data.json",
+ "analyze:watch": "cem analyze --litelement --globs \"src/**/*.ts\" --watch",
+ "test-build": "web-test-runner ./src/**/*.test.ts --node-resolve",
+ "test": "yarn build && web-test-runner ./src/**/*.test.ts --node-resolve",
+ "test:file": "yarn build && web-test-runner --node-resolve",
+ "test:watch": "yarn build && web-test-runner ./src/**/*.test.ts --node-resolve --watch"
+ },
+ "keywords": [
+ "web-components",
+ "lit-element",
+ "typescript",
+ "lit"
+ ],
+ "dependencies": {
+ "d3": "^7.8.2",
+ "lit": "^2.2.4"
+ },
+ "devDependencies": {
+ "@custom-elements-manifest/analyzer": "^0.5.7",
+ "@open-wc/testing": "^3.1.5",
+ "@types/d3": "^7.4.0",
+ "@types/eslint": "^8.4.3",
+ "@types/jest": "28.1.3",
+ "@types/prettier": "^2.6.3",
+ "@typescript-eslint/eslint-plugin": "^5.25.0",
+ "@typescript-eslint/parser": "^5.25.0",
+ "@web/dev-server-esbuild": "^0.3.0",
+ "@web/dev-server-rollup": "0.3.18",
+ "@web/test-runner": "^0.13.30",
+ "concurrently": "^7.3.0",
+ "esbuild-sass-plugin": "2.2.6",
+ "eslint": "^8.17.0",
+ "lit-html": "^2.2.5",
+ "prettier": "^2.6.2",
+ "rollup-plugin-postcss-lit": "^2.0.0",
+ "rollup-plugin-scss": "3.0.0",
+ "sass": "^1.52.3",
+ "typescript": "^4.5.4",
+ "vite": "^2.9.9",
+ "vue": "2.6.14",
+ "web-component-analyzer": "^2.0.0-next.4"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://github.com/cldcvr/flow-core.git",
+ "directory": "packages/flow-force-graph"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "customElements": "custom-elements.json",
+ "bugs": {
+ "url": "https://github.com/cldcvr/flow-core/issues"
+ },
+ "homepage": "https://github.com/cldcvr/flow-force-graph#readme",
+ "author": "@cldcvr",
+ "license": "MIT"
+}
diff --git a/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.scss b/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.scss
new file mode 100644
index 000000000..f0cfb7d57
--- /dev/null
+++ b/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.scss
@@ -0,0 +1,29 @@
+// common mixins imported from this file
+@import "@cldcvr/flow-core/src/mixins/scss/mixins";
+
+f-force-graph {
+ @include base();
+ display: flex;
+ flex: 1 0 auto;
+}
+
+:host {
+ svg {
+ height: 100%;
+ width: 100%;
+ }
+
+ foreignObject {
+ cursor: pointer;
+ overflow: visible;
+ > * {
+ position: fixed !important;
+ }
+ * {
+ transform-origin: 0% 0%;
+ }
+ }
+ .no-wrap {
+ white-space: nowrap;
+ }
+}
diff --git a/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.ts b/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.ts
new file mode 100644
index 000000000..1390af43d
--- /dev/null
+++ b/packages/flow-force-graph/src/components/f-force-graph/f-force-graph.ts
@@ -0,0 +1,232 @@
+import { html, PropertyValueMap, unsafeCSS } from "lit";
+import { customElement, query } from "lit/decorators.js";
+import { FRoot } from "@cldcvr/flow-core/src/mixins/components/f-root/f-root";
+import eleStyle from "./f-force-graph.scss";
+import * as d3 from "d3";
+
+import { unsafeSVG } from "lit-html/directives/unsafe-svg.js";
+import { SimulationLinkDatum, SimulationNodeDatum } from "d3";
+import { FDiv } from "@cldcvr/flow-core/src/components/f-div/f-div";
+import { FText } from "@cldcvr/flow-core/src/components/f-text/f-text";
+import { FPictogram } from "@cldcvr/flow-core/src/components/f-pictogram/f-pictogram";
+
+@customElement("f-force-graph")
+export class FForceGraph extends FRoot {
+ /**
+ * css loaded from scss file
+ */
+ static styles = [unsafeCSS(eleStyle), ...FDiv.styles, ...FText.styles, ...FPictogram.styles];
+
+ @query("svg")
+ svg!: SVGSVGElement;
+
+ protected updated(changedProperties: PropertyValueMap | Map): void {
+ super.updated(changedProperties);
+ const width = document.body.offsetWidth;
+ const height = document.body.offsetHeight;
+ const [nodeWidth, nodeHeight] = [44, 44];
+ type ForceNode = SimulationNodeDatum & { id: number };
+ const dataset: {
+ nodes: ForceNode[];
+ links: SimulationLinkDatum[];
+ } = {
+ nodes: [
+ { id: 1 },
+ { id: 2 },
+ { id: 3 },
+ { id: 4 },
+ { id: 5 },
+ { id: 6 },
+ { id: 7 },
+ { id: 8 }
+ ],
+ links: [
+ { source: 1, target: 2 },
+ { source: 2, target: 3 },
+ { source: 2, target: 4 },
+ { source: 3, target: 1 },
+ { source: 5, target: 4 },
+ { source: 3, target: 5 },
+ { source: 6, target: 3 },
+ { source: 5, target: 7 },
+ { source: 8, target: 5 }
+ ]
+ };
+
+ const simulation = d3
+ .forceSimulation(dataset.nodes)
+ .force(
+ "link",
+ d3
+ .forceLink(dataset.links)
+ .id(d => (d as ForceNode).id)
+ .distance(150)
+ .strength(0.5)
+ )
+ .force("charge", d3.forceManyBody().distanceMin(200).strength(-3000))
+ .force("x", d3.forceX().strength(0.1))
+ .force("y", d3.forceY().strength(0))
+ .alpha(1);
+
+ const svg = d3.select(this.svg).attr("viewBox", [-width / 2, -height / 2, width, height]);
+
+ const graphContainer = svg.append("g");
+ const handleZoom = (e: any) => {
+ graphContainer.attr("transform", e.transform);
+ };
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const zoom = d3.zoom().scaleExtent([0.3, 4]).on("zoom", handleZoom) as any;
+
+ svg.call(zoom).on("dblclick.zoom", null);
+
+ const linkG = graphContainer
+ .append("g")
+ .attr("stroke", "var(--color-border-default)")
+ .selectAll("g")
+ .data(dataset.links)
+ .join("g");
+
+ const link = linkG
+ .append("path")
+ .attr("d", (d: any) => {
+ return `M ${d.source.x} ${d.source.y} L ${d.target.x} ${d.target.y}`;
+ })
+ .attr("id", (d: any) => {
+ return `${d.source.id}->${d.target.id}`;
+ });
+
+ /**
+ * Link label background
+ */
+ linkG
+ .append("text")
+ .attr("class", "label-wrapper")
+ .append("textPath")
+ .attr("text-anchor", "middle")
+ .attr("xlink:href", function (d: any) {
+ return `#${d.source.id}->${d.target.id}`;
+ })
+ .attr("startOffset", `50%`)
+ .attr("stroke", "var(--color-surface-default)")
+ .attr("stroke-width", "12px")
+ .attr("dy", 20)
+ .text("direction");
+
+ /**
+ * Arrow
+ */
+ linkG
+ .append("text")
+ .attr("class", "label")
+ .attr("stroke", "var(--color-surface-default)")
+ .attr("stroke-width", "1px")
+ .attr("dy", 5.75)
+ .attr("dx", 1)
+ .append("textPath")
+ .attr("text-anchor", "end")
+ .attr("xlink:href", function (d: any) {
+ return `#${d.source.id}->${d.target.id}`;
+ })
+ .attr("startOffset", `calc(100% - ${nodeHeight / 2}px)`)
+ .attr("fill", "var(--color-border-secondary)")
+ .text("▶");
+
+ /**
+ * Link label
+ */
+ linkG
+ .append("text")
+ .attr("class", "label")
+ .attr("stroke", "var(--color-surface-default)")
+ .attr("stroke-width", "1px")
+ .attr("dy", 5)
+ .append("textPath")
+ .attr("text-anchor", "middle")
+ .attr("xlink:href", function (d: any) {
+ return `#${d.source.id}->${d.target.id}`;
+ })
+ .attr("startOffset", `50%`)
+ .attr("stroke", "var(--color-text-secondary)")
+ .text("direction");
+
+ function dragstarted(event: any, d: any) {
+ if (!event.active) simulation.alphaTarget(0.3).restart();
+ d.fx = d.x;
+ d.fy = d.y;
+ }
+
+ function dragged(event: any, d: any) {
+ d.fx = event.x;
+ d.fy = event.y;
+ }
+
+ function dragended(event: any, d: any) {
+ if (!event.active) simulation.alphaTarget(0);
+ d.fx = null;
+ d.fy = null;
+ }
+
+ const drag = d3
+ .drag()
+ .on("start", dragstarted)
+ .on("drag", dragged)
+ .on("end", dragended) as unknown;
+ type NodeDragType = (
+ selection: d3.Selection,
+ ...args: any[]
+ ) => void;
+
+ const node = graphContainer
+ .append("g")
+ .selectAll("g")
+ .data(dataset.nodes)
+ .join("g")
+ .append("foreignObject")
+ .attr("width", nodeWidth)
+ .attr("height", nodeHeight)
+ .html((d: any) => {
+ return `
+
+
+ Team ${d.id}
+ Development
+ team id | team location
+
+ `;
+ })
+ .on("dblclick", this.handleDbClick)
+ .call(drag as NodeDragType);
+
+ // const text = graphContainer
+ // .append("g")
+ // .selectAll("text")
+ // .data(dataset.nodes)
+ // .join("text")
+ // .text(d => d.id)
+ // .attr("fill", "var(--color-text-default)")
+ // .call(drag);
+
+ simulation.on("tick", () => {
+ link.attr("d", (d: any) => {
+ return `M ${d.source.x} ${d.source.y} L ${d.target.x} ${d.target.y}`;
+ });
+
+ node.attr("x", (d: any) => d.x - nodeWidth / 2).attr("y", (d: any) => d.y - nodeHeight / 2);
+ });
+ }
+ handleDbClick(event: MouseEvent, d: any) {
+ console.log(event, d);
+ }
+ render() {
+ return html` ${unsafeSVG(``)}`;
+ }
+}
+
+/**
+ * Required for typescript
+ */
+declare global {
+ export interface HTMLElementTagNameMap {
+ "f-force-graph": FForceGraph;
+ }
+}
diff --git a/packages/flow-force-graph/src/index.ts b/packages/flow-force-graph/src/index.ts
new file mode 100644
index 000000000..b9596e025
--- /dev/null
+++ b/packages/flow-force-graph/src/index.ts
@@ -0,0 +1 @@
+export * from "./components/f-force-graph/f-force-graph";
diff --git a/packages/flow-force-graph/src/shims.d.ts b/packages/flow-force-graph/src/shims.d.ts
new file mode 100644
index 000000000..4d9cd0c89
--- /dev/null
+++ b/packages/flow-force-graph/src/shims.d.ts
@@ -0,0 +1,9 @@
+declare module "*.scss" {
+ const content: Record;
+ export default content;
+}
+
+declare module "*.css" {
+ const content: Record;
+ export default content;
+}
diff --git a/packages/flow-force-graph/tsconfig.json b/packages/flow-force-graph/tsconfig.json
new file mode 100644
index 000000000..928b09e73
--- /dev/null
+++ b/packages/flow-force-graph/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "module": "esnext",
+ "lib": ["es2017", "dom", "dom.iterable"],
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "dist/types",
+ "baseUrl": ".",
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": "node",
+ "isolatedModules": true,
+ "allowSyntheticDefaultImports": true,
+ "experimentalDecorators": true,
+ "forceConsistentCasingInFileNames": true,
+ "useDefineForClassFields": false,
+ "skipLibCheck": true,
+ "target": "ESNext",
+ "resolveJsonModule": true,
+ "paths": {
+ "~": ["src/index.ts"]
+ }
+ },
+ "include": ["src/**/*.ts"],
+ "exclude": ["src/**/*.test.ts", "**/dist", "dist"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/packages/flow-force-graph/tsconfig.node.json b/packages/flow-force-graph/tsconfig.node.json
new file mode 100644
index 000000000..b22555ce5
--- /dev/null
+++ b/packages/flow-force-graph/tsconfig.node.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
+ "experimentalDecorators": true,
+ "resolveJsonModule": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/packages/flow-force-graph/vite.config.ts b/packages/flow-force-graph/vite.config.ts
new file mode 100644
index 000000000..2bd070640
--- /dev/null
+++ b/packages/flow-force-graph/vite.config.ts
@@ -0,0 +1,28 @@
+import { defineConfig } from "vite";
+import litcss from "rollup-plugin-postcss-lit";
+import path from "path";
+
+export default defineConfig({
+ build: {
+ sourcemap: true,
+ lib: {
+ entry: "src/index.ts",
+ name: "flow-force-graph",
+ fileName: format => `flow-force-graph.${format}.js`,
+ formats: ["es", "cjs"]
+ },
+ // outDir: "dist",
+ rollupOptions: {
+ // If we want to publish standalone components we don't externalize lit,
+ // if you are going to use lit in your own project, you can make it a dep instead.
+ // external: /^lit/, <-- comment this line
+ external: [/^lit/]
+ }
+ },
+ resolve: {
+ alias: {
+ "~": path.resolve(__dirname, "./src/index.ts")
+ }
+ },
+ plugins: [litcss()]
+});
diff --git a/packages/flow-force-graph/web-test-runner.config.mjs b/packages/flow-force-graph/web-test-runner.config.mjs
new file mode 100644
index 000000000..d410ad4ef
--- /dev/null
+++ b/packages/flow-force-graph/web-test-runner.config.mjs
@@ -0,0 +1,5 @@
+import { esbuildPlugin } from "@web/dev-server-esbuild";
+
+export default {
+ plugins: [esbuildPlugin({ ts: true })]
+};
diff --git a/packages/flow-table/custom-elements.json b/packages/flow-table/custom-elements.json
index bc79f0fdc..c006a02d2 100644
--- a/packages/flow-table/custom-elements.json
+++ b/packages/flow-table/custom-elements.json
@@ -751,6 +751,187 @@
}
]
},
+ {
+ "kind": "javascript-module",
+ "path": "src/components/f-tcell/f-tcell.ts",
+ "declarations": [
+ {
+ "kind": "class",
+ "description": "",
+ "name": "FTcell",
+ "members": [
+ {
+ "kind": "field",
+ "name": "actions",
+ "type": {
+ "text": "FTcellActions | undefined"
+ },
+ "attribute": "actions"
+ },
+ {
+ "kind": "field",
+ "name": "selected",
+ "type": {
+ "text": "boolean"
+ },
+ "default": "false",
+ "attribute": "selected",
+ "reflects": true
+ },
+ {
+ "kind": "field",
+ "name": "width",
+ "type": {
+ "text": "string | undefined"
+ },
+ "attribute": "width",
+ "reflects": true
+ },
+ {
+ "kind": "field",
+ "name": "selectable",
+ "type": {
+ "text": "FTableSelectable | undefined"
+ },
+ "default": "\"none\""
+ },
+ {
+ "kind": "field",
+ "name": "isDisabled",
+ "type": {
+ "text": "boolean"
+ },
+ "default": "false"
+ },
+ {
+ "kind": "field",
+ "name": "expandIcon",
+ "type": {
+ "text": "boolean"
+ },
+ "default": "false"
+ },
+ {
+ "kind": "field",
+ "name": "expandIconPosition",
+ "type": {
+ "text": "FTrowChevronPosition"
+ },
+ "default": "\"right\""
+ },
+ {
+ "kind": "field",
+ "name": "checkbox",
+ "type": {
+ "text": "FCheckbox | undefined"
+ }
+ },
+ {
+ "kind": "field",
+ "name": "radio",
+ "type": {
+ "text": "FRadio | undefined"
+ }
+ },
+ {
+ "kind": "field",
+ "name": "chevron",
+ "type": {
+ "text": "FIconButton | undefined"
+ }
+ },
+ {
+ "kind": "method",
+ "name": "renderActions"
+ },
+ {
+ "kind": "method",
+ "name": "setSelection",
+ "parameters": [
+ {
+ "name": "value",
+ "default": "false"
+ },
+ {
+ "name": "isDisabled",
+ "default": "false"
+ }
+ ]
+ },
+ {
+ "kind": "method",
+ "name": "handleSelection",
+ "parameters": [
+ {
+ "name": "event",
+ "type": {
+ "text": "CustomEvent"
+ }
+ }
+ ]
+ },
+ {
+ "kind": "method",
+ "name": "toggleDetails"
+ },
+ {
+ "kind": "method",
+ "name": "toggleColumnSelection"
+ },
+ {
+ "kind": "method",
+ "name": "toggleColumnHighlight",
+ "parameters": [
+ {
+ "name": "type",
+ "type": {
+ "text": "\"add\" | \"remove\""
+ }
+ }
+ ]
+ }
+ ],
+ "attributes": [
+ {
+ "name": "actions",
+ "type": {
+ "text": "FTcellActions | undefined"
+ },
+ "fieldName": "actions"
+ },
+ {
+ "name": "selected",
+ "type": {
+ "text": "boolean"
+ },
+ "default": "false",
+ "fieldName": "selected"
+ },
+ {
+ "name": "width",
+ "type": {
+ "text": "string | undefined"
+ },
+ "fieldName": "width"
+ }
+ ],
+ "superclass": {
+ "name": "FRoot",
+ "package": "@cldcvr/flow-core"
+ }
+ }
+ ],
+ "exports": [
+ {
+ "kind": "js",
+ "name": "FTcell",
+ "declaration": {
+ "name": "FTcell",
+ "module": "src/components/f-tcell/f-tcell.ts"
+ }
+ }
+ ]
+ },
{
"kind": "javascript-module",
"path": "src/components/f-trow/f-trow.ts",
diff --git a/stories/flow-force-graph/f-force-graph.stories.mdx b/stories/flow-force-graph/f-force-graph.stories.mdx
new file mode 100644
index 000000000..b2e5dd339
--- /dev/null
+++ b/stories/flow-force-graph/f-force-graph.stories.mdx
@@ -0,0 +1,42 @@
+import { Meta, Story, Canvas, ArgsTable } from "@storybook/addon-docs";
+import { html } from "lit-html";
+
+
+
+# f-divider
+
+
+
+
+## Overview
+
+
+
+f-divider is a line used to separate the content of a layout.
+
+
+
+### [Playground](/story/components-f-divider--playground)
+
+
+
+
+
+
diff --git a/yarn.lock b/yarn.lock
index e5e537e2c..4f97b0291 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3448,6 +3448,216 @@
"@types/keygrip" "*"
"@types/node" "*"
+"@types/d3-array@*":
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.6.tgz#6b12c074aa685135d0eb6a73fc2a1ae50e8bedf6"
+ integrity sha512-NHkizg870sKYQn45oZT5ItoHqcgRgJD7KAiWZp4Udc6YdrFH2W0tZ2vv4shRHP+SXHoJ1G8B4I1GWb5oQSGypA==
+
+"@types/d3-axis@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.3.tgz#e9ca5d1dd7b1da4023ab0f9e921c3f6e86b8c06d"
+ integrity sha512-SE3x/pLO/+GIHH17mvs1uUVPkZ3bHquGzvZpPAh4yadRy71J93MJBpgK/xY8l9gT28yTN1g9v3HfGSFeBMmwZw==
+ dependencies:
+ "@types/d3-selection" "*"
+
+"@types/d3-brush@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.3.tgz#c5de3fd8efad6d85507fa74992540060aba38c25"
+ integrity sha512-MQ1/M/B5ifTScHSe5koNkhxn2mhUPqXjGuKjjVYckplAPjP9t2I2sZafb/YVHDwhoXWZoSav+Q726eIbN3qprA==
+ dependencies:
+ "@types/d3-selection" "*"
+
+"@types/d3-chord@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.3.tgz#cd1dc38ac7cb390fe06abc09d30ddf0cd2ff350a"
+ integrity sha512-keuSRwO02c7PBV3JMWuctIfdeJrVFI7RpzouehvBWL4/GGUB3PBNg/9ZKPZAgJphzmS2v2+7vr7BGDQw1CAulw==
+
+"@types/d3-color@*":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4"
+ integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==
+
+"@types/d3-contour@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.3.tgz#16255aeb85557488bdf84c0a7988c428c0d2939b"
+ integrity sha512-x7G/tdDZt4m09XZnG2SutbIuQqmkNYqR9uhDMdPlpJbcwepkEjEWG29euFcgVA1k6cn92CHdDL9Z+fOnxnbVQw==
+ dependencies:
+ "@types/d3-array" "*"
+ "@types/geojson" "*"
+
+"@types/d3-delaunay@*":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz#006b7bd838baec1511270cb900bf4fc377bbbf41"
+ integrity sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==
+
+"@types/d3-dispatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.3.tgz#5f6a4e9bbf90e8f775083154c3d7205cfb804762"
+ integrity sha512-Df7KW3Re7G6cIpIhQtqHin8yUxUHYAqiE41ffopbmU5+FifYUNV7RVyTg8rQdkEagg83m14QtS8InvNb95Zqug==
+
+"@types/d3-drag@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.3.tgz#829a58420d8818be65a005795068964ff80a387b"
+ integrity sha512-82AuQMpBQjuXeIX4tjCYfWjpm3g7aGCfx6dFlxX2JlRaiME/QWcHzBsINl7gbHCODA2anPYlL31/Trj/UnjK9A==
+ dependencies:
+ "@types/d3-selection" "*"
+
+"@types/d3-dsv@*":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.2.tgz#0504c17388714e28a601dcaaf400147271ea14c2"
+ integrity sha512-DooW5AOkj4AGmseVvbwHvwM/Ltu0Ks0WrhG6r5FG9riHT5oUUTHz6xHsHqJSVU8ZmPkOqlUEY2obS5C9oCIi2g==
+
+"@types/d3-ease@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.0.tgz#c29926f8b596f9dadaeca062a32a45365681eae0"
+ integrity sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==
+
+"@types/d3-fetch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.3.tgz#ae55cc49bd71b448182deff0cc4b448eff1f9b33"
+ integrity sha512-/EsDKRiQkby3Z/8/AiZq8bsuLDo/tYHnNIZkUpSeEHWV7fHUl6QFBjvMPbhkKGk9jZutzfOkGygCV7eR/MkcXA==
+ dependencies:
+ "@types/d3-dsv" "*"
+
+"@types/d3-force@*":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.5.tgz#835bbe01e084195175ddf71b7900bd44a9a23e8e"
+ integrity sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==
+
+"@types/d3-format@*":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.1.tgz#194f1317a499edd7e58766f96735bdc0216bb89d"
+ integrity sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==
+
+"@types/d3-geo@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.0.4.tgz#fa38f02256c3023ea3b88cb011cff1426eb7ff52"
+ integrity sha512-kmUK8rVVIBPKJ1/v36bk2aSgwRj2N/ZkjDT+FkMT5pgedZoPlyhaG62J+9EgNIgUXE6IIL0b7bkLxCzhE6U4VQ==
+ dependencies:
+ "@types/geojson" "*"
+
+"@types/d3-hierarchy@*":
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz#9e935540e2494f3402938bf53811ed74ca3c36ba"
+ integrity sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==
+
+"@types/d3-interpolate@*":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc"
+ integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==
+ dependencies:
+ "@types/d3-color" "*"
+
+"@types/d3-path@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.0.0.tgz#939e3a784ae4f80b1fde8098b91af1776ff1312b"
+ integrity sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==
+
+"@types/d3-polygon@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.0.tgz#5200a3fa793d7736fa104285fa19b0dbc2424b93"
+ integrity sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==
+
+"@types/d3-quadtree@*":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz#433112a178eb7df123aab2ce11c67f51cafe8ff5"
+ integrity sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==
+
+"@types/d3-random@*":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.1.tgz#5c8d42b36cd4c80b92e5626a252f994ca6bfc953"
+ integrity sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==
+
+"@types/d3-scale-chromatic@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#103124777e8cdec85b20b51fd3397c682ee1e954"
+ integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==
+
+"@types/d3-scale@*":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.4.tgz#3c5e2263eea5a3670cd91043b9f4d150a94c43f1"
+ integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==
+ dependencies:
+ "@types/d3-time" "*"
+
+"@types/d3-selection@*":
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.6.tgz#c35b5320188e921d10f77f50198705a14b8aecf6"
+ integrity sha512-2ACr96USZVjXR9KMD9IWi1Epo4rSDKnUtYn6q2SPhYxykvXTw9vR77lkFNruXVg4i1tzQtBxeDMx0oNvJWbF1w==
+
+"@types/d3-shape@*":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.2.tgz#a3d421d8b0bc0c6c67cb3f4b4471ddc133cb0117"
+ integrity sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w==
+ dependencies:
+ "@types/d3-path" "*"
+
+"@types/d3-time-format@*":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.0.tgz#ee7b6e798f8deb2d9640675f8811d0253aaa1946"
+ integrity sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==
+
+"@types/d3-time@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819"
+ integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==
+
+"@types/d3-timer@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.0.tgz#e2505f1c21ec08bda8915238e397fb71d2fc54ce"
+ integrity sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==
+
+"@types/d3-transition@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.4.tgz#1515cd38bdc6d84103d7b6ccb25acdb72b5dd095"
+ integrity sha512-512a4uCOjUzsebydItSXsHrPeQblCVk8IKjqCUmrlvBWkkVh3donTTxmURDo1YPwIVDh5YVwCAO6gR4sgimCPQ==
+ dependencies:
+ "@types/d3-selection" "*"
+
+"@types/d3-zoom@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.4.tgz#1c754cf9f3ac96c59e6d9372c4d49f09e3e6fce3"
+ integrity sha512-cqkuY1ah9ZQre2POqjSLcM8g40UVya/qwEUrNYP2/rCVljbmqKCVcv+ebvwhlI5azIbSEL7m+os6n+WlYA43aA==
+ dependencies:
+ "@types/d3-interpolate" "*"
+ "@types/d3-selection" "*"
+
+"@types/d3@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.0.tgz#fc5cac5b1756fc592a3cf1f3dc881bf08225f515"
+ integrity sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==
+ dependencies:
+ "@types/d3-array" "*"
+ "@types/d3-axis" "*"
+ "@types/d3-brush" "*"
+ "@types/d3-chord" "*"
+ "@types/d3-color" "*"
+ "@types/d3-contour" "*"
+ "@types/d3-delaunay" "*"
+ "@types/d3-dispatch" "*"
+ "@types/d3-drag" "*"
+ "@types/d3-dsv" "*"
+ "@types/d3-ease" "*"
+ "@types/d3-fetch" "*"
+ "@types/d3-force" "*"
+ "@types/d3-format" "*"
+ "@types/d3-geo" "*"
+ "@types/d3-hierarchy" "*"
+ "@types/d3-interpolate" "*"
+ "@types/d3-path" "*"
+ "@types/d3-polygon" "*"
+ "@types/d3-quadtree" "*"
+ "@types/d3-random" "*"
+ "@types/d3-scale" "*"
+ "@types/d3-scale-chromatic" "*"
+ "@types/d3-selection" "*"
+ "@types/d3-shape" "*"
+ "@types/d3-time" "*"
+ "@types/d3-time-format" "*"
+ "@types/d3-timer" "*"
+ "@types/d3-transition" "*"
+ "@types/d3-zoom" "*"
+
"@types/debounce@^1.2.0":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.2.1.tgz#79b65710bc8b6d44094d286aecf38e44f9627852"
@@ -3496,6 +3706,11 @@
"@types/qs" "*"
"@types/serve-static" "*"
+"@types/geojson@*":
+ version "7946.0.10"
+ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249"
+ integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==
+
"@types/glob@*":
version "8.1.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc"
@@ -5927,6 +6142,11 @@ commander@2.11.x:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
+commander@7:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -6354,6 +6574,250 @@ cyclist@^1.0.1:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3"
integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==
+"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5"
+ integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
+ dependencies:
+ internmap "1 - 2"
+
+d3-axis@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322"
+ integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==
+
+d3-brush@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c"
+ integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==
+ dependencies:
+ d3-dispatch "1 - 3"
+ d3-drag "2 - 3"
+ d3-interpolate "1 - 3"
+ d3-selection "3"
+ d3-transition "3"
+
+d3-chord@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966"
+ integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==
+ dependencies:
+ d3-path "1 - 3"
+
+"d3-color@1 - 3", d3-color@3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2"
+ integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
+
+d3-contour@4:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc"
+ integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==
+ dependencies:
+ d3-array "^3.2.0"
+
+d3-delaunay@6:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b"
+ integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==
+ dependencies:
+ delaunator "5"
+
+"d3-dispatch@1 - 3", d3-dispatch@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e"
+ integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
+
+"d3-drag@2 - 3", d3-drag@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba"
+ integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==
+ dependencies:
+ d3-dispatch "1 - 3"
+ d3-selection "3"
+
+"d3-dsv@1 - 3", d3-dsv@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73"
+ integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==
+ dependencies:
+ commander "7"
+ iconv-lite "0.6"
+ rw "1"
+
+"d3-ease@1 - 3", d3-ease@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4"
+ integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
+
+d3-fetch@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22"
+ integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==
+ dependencies:
+ d3-dsv "1 - 3"
+
+d3-force@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4"
+ integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
+ dependencies:
+ d3-dispatch "1 - 3"
+ d3-quadtree "1 - 3"
+ d3-timer "1 - 3"
+
+"d3-format@1 - 3", d3-format@3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641"
+ integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==
+
+d3-geo@3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.0.tgz#74fd54e1f4cebd5185ac2039217a98d39b0a4c0e"
+ integrity sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==
+ dependencies:
+ d3-array "2.5.0 - 3"
+
+d3-hierarchy@3:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6"
+ integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==
+
+"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d"
+ integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
+ dependencies:
+ d3-color "1 - 3"
+
+"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526"
+ integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
+
+d3-polygon@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398"
+ integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
+
+"d3-quadtree@1 - 3", d3-quadtree@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f"
+ integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
+
+d3-random@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4"
+ integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
+
+d3-scale-chromatic@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a"
+ integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==
+ dependencies:
+ d3-color "1 - 3"
+ d3-interpolate "1 - 3"
+
+d3-scale@4:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396"
+ 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"
+
+"d3-selection@2 - 3", d3-selection@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31"
+ integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
+
+d3-shape@3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5"
+ integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==
+ dependencies:
+ d3-path "^3.1.0"
+
+"d3-time-format@2 - 4", d3-time-format@4:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a"
+ integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==
+ dependencies:
+ d3-time "1 - 3"
+
+"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7"
+ integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==
+ dependencies:
+ d3-array "2 - 3"
+
+"d3-timer@1 - 3", d3-timer@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0"
+ integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
+
+"d3-transition@2 - 3", d3-transition@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f"
+ integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==
+ dependencies:
+ d3-color "1 - 3"
+ d3-dispatch "1 - 3"
+ d3-ease "1 - 3"
+ d3-interpolate "1 - 3"
+ d3-timer "1 - 3"
+
+d3-zoom@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3"
+ integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==
+ dependencies:
+ d3-dispatch "1 - 3"
+ d3-drag "2 - 3"
+ d3-interpolate "1 - 3"
+ d3-selection "2 - 3"
+ d3-transition "2 - 3"
+
+d3@^7.8.2:
+ version "7.8.5"
+ resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.5.tgz#fde4b760d4486cdb6f0cc8e2cbff318af844635c"
+ integrity sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==
+ dependencies:
+ d3-array "3"
+ d3-axis "3"
+ d3-brush "3"
+ d3-chord "3"
+ d3-color "3"
+ d3-contour "4"
+ d3-delaunay "6"
+ d3-dispatch "3"
+ d3-drag "3"
+ d3-dsv "3"
+ d3-ease "3"
+ d3-fetch "3"
+ d3-force "3"
+ d3-format "3"
+ d3-geo "3"
+ d3-hierarchy "3"
+ d3-interpolate "3"
+ d3-path "3"
+ d3-polygon "3"
+ d3-quadtree "3"
+ d3-random "3"
+ d3-scale "4"
+ d3-scale-chromatic "3"
+ d3-selection "3"
+ d3-shape "3"
+ d3-time "3"
+ d3-time-format "4"
+ d3-timer "3"
+ d3-transition "3"
+ d3-zoom "3"
+
dash-ast@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37"
@@ -6500,6 +6964,13 @@ del@^6.0.0:
rimraf "^3.0.2"
slash "^3.0.0"
+delaunator@5:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b"
+ integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==
+ dependencies:
+ robust-predicates "^3.0.0"
+
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -8539,6 +9010,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
+iconv-lite@0.6:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
icss-utils@^4.0.0, icss-utils@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
@@ -8700,6 +9178,11 @@ internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5:
has "^1.0.3"
side-channel "^1.0.4"
+"internmap@1 - 2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009"
+ integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==
+
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
@@ -12301,6 +12784,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
+robust-predicates@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771"
+ integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==
+
rollup-plugin-postcss-lit@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-postcss-lit/-/rollup-plugin-postcss-lit-2.0.0.tgz#36892131481cb1b1a93c08fa6e5e0809416e31bc"
@@ -12363,6 +12851,11 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
+rw@1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+ integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
+
rxjs-compat@^6.5.4:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.6.7.tgz#6eb4ef75c0a58ea672854a701ccc8d49f41e69cb"
@@ -12423,7 +12916,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0:
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==