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) + + + + {args => + html`` + } + + + +
+ + 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==