@unovis/ts 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cache/.npm/_cacache/content-v2/sha512/61/45/6fe676782aa108257b260c25e8140c6d37bbc18450696066eeeb68af0ecc30da712b9d888ddf31844ec3334478f2b142f957298bebde9cba8de0ffc3c2d7 +0 -0
- package/.cache/.npm/_cacache/content-v2/sha512/c1/fd/5918e37e37c05cdfc4482fae30721b118c227a6b70b2830ff04cd62a82899a4ad1beaa562b4c673122c932c2eb017af2f4da3c8b7f9a0affbd1d926341a0 +0 -0
- package/.cache/.npm/_cacache/index-v5/1f/ac/9e290f9c0248c783167cd161d22fe850034423d1a425963bd64808710219 +3 -0
- package/LICENSE +193 -0
- package/components/area/config.d.ts +25 -0
- package/components/area/config.js +16 -0
- package/components/area/config.js.map +1 -0
- package/components/area/index.d.ts +19 -0
- package/components/area/index.js +103 -0
- package/components/area/index.js.map +1 -0
- package/components/area/style.d.ts +3 -0
- package/components/area/style.js +32 -0
- package/components/area/style.js.map +1 -0
- package/components/area/types.d.ts +6 -0
- package/components/axis/config.d.ts +74 -0
- package/components/axis/config.js +33 -0
- package/components/axis/config.js.map +1 -0
- package/components/axis/index.d.ts +51 -0
- package/components/axis/index.js +291 -0
- package/components/axis/index.js.map +1 -0
- package/components/axis/modules/tick.d.ts +5 -0
- package/components/axis/modules/tick.js +48 -0
- package/components/axis/modules/tick.js.map +1 -0
- package/components/axis/style.d.ts +9 -0
- package/components/axis/style.js +95 -0
- package/components/axis/style.js.map +1 -0
- package/components/axis/types.d.ts +4 -0
- package/components/axis/types.js +8 -0
- package/components/axis/types.js.map +1 -0
- package/components/brush/config.d.ts +42 -0
- package/components/brush/config.js +24 -0
- package/components/brush/config.js.map +1 -0
- package/components/brush/index.d.ts +28 -0
- package/components/brush/index.js +199 -0
- package/components/brush/index.js.map +1 -0
- package/components/brush/style.d.ts +5 -0
- package/components/brush/style.js +63 -0
- package/components/brush/style.js.map +1 -0
- package/components/brush/types.d.ts +7 -0
- package/components/brush/types.js +8 -0
- package/components/brush/types.js.map +1 -0
- package/components/bullet-legend/config.d.ts +24 -0
- package/components/bullet-legend/config.js +16 -0
- package/components/bullet-legend/config.js.map +1 -0
- package/components/bullet-legend/index.d.ts +19 -0
- package/components/bullet-legend/index.js +79 -0
- package/components/bullet-legend/index.js.map +1 -0
- package/components/bullet-legend/style.d.ts +6 -0
- package/components/bullet-legend/style.js +66 -0
- package/components/bullet-legend/style.js.map +1 -0
- package/components/bullet-legend/types.d.ts +7 -0
- package/components/chord-diagram/config.d.ts +42 -0
- package/components/chord-diagram/config.js +25 -0
- package/components/chord-diagram/config.js.map +1 -0
- package/components/chord-diagram/index.d.ts +49 -0
- package/components/chord-diagram/index.js +280 -0
- package/components/chord-diagram/index.js.map +1 -0
- package/components/chord-diagram/modules/label.d.ts +8 -0
- package/components/chord-diagram/modules/label.js +128 -0
- package/components/chord-diagram/modules/label.js.map +1 -0
- package/components/chord-diagram/modules/link.d.ts +20 -0
- package/components/chord-diagram/modules/link.js +32 -0
- package/components/chord-diagram/modules/link.js.map +1 -0
- package/components/chord-diagram/modules/node.d.ts +17 -0
- package/components/chord-diagram/modules/node.js +52 -0
- package/components/chord-diagram/modules/node.js.map +1 -0
- package/components/chord-diagram/style.d.ts +13 -0
- package/components/chord-diagram/style.js +88 -0
- package/components/chord-diagram/style.js.map +1 -0
- package/components/chord-diagram/types.d.ts +40 -0
- package/components/chord-diagram/types.js +8 -0
- package/components/chord-diagram/types.js.map +1 -0
- package/components/crosshair/config.d.ts +43 -0
- package/components/crosshair/config.js +19 -0
- package/components/crosshair/config.js.map +1 -0
- package/components/crosshair/index.d.ts +35 -0
- package/components/crosshair/index.js +180 -0
- package/components/crosshair/index.js.map +1 -0
- package/components/crosshair/style.d.ts +4 -0
- package/components/crosshair/style.js +25 -0
- package/components/crosshair/style.js.map +1 -0
- package/components/crosshair/types.d.ts +13 -0
- package/components/donut/config.d.ts +45 -0
- package/components/donut/config.js +25 -0
- package/components/donut/config.js.map +1 -0
- package/components/donut/index.d.ts +20 -0
- package/components/donut/index.js +84 -0
- package/components/donut/index.js.map +1 -0
- package/components/donut/modules/arc.d.ts +10 -0
- package/components/donut/modules/arc.js +53 -0
- package/components/donut/modules/arc.js.map +1 -0
- package/components/donut/style.d.ts +6 -0
- package/components/donut/style.js +53 -0
- package/components/donut/style.js.map +1 -0
- package/components/donut/types.d.ts +12 -0
- package/components/flow-legend/config.d.ts +26 -0
- package/components/flow-legend/config.js +17 -0
- package/components/flow-legend/config.js.map +1 -0
- package/components/flow-legend/index.d.ts +16 -0
- package/components/flow-legend/index.js +73 -0
- package/components/flow-legend/index.js.map +1 -0
- package/components/flow-legend/style.d.ts +8 -0
- package/components/flow-legend/style.js +80 -0
- package/components/flow-legend/style.js.map +1 -0
- package/components/flow-legend/types.d.ts +9 -0
- package/components/flow-legend/types.js +8 -0
- package/components/flow-legend/types.js.map +1 -0
- package/components/free-brush/config.d.ts +45 -0
- package/components/free-brush/config.js +24 -0
- package/components/free-brush/config.js.map +1 -0
- package/components/free-brush/index.d.ts +20 -0
- package/components/free-brush/index.js +191 -0
- package/components/free-brush/index.js.map +1 -0
- package/components/free-brush/style.d.ts +4 -0
- package/components/free-brush/style.js +50 -0
- package/components/free-brush/style.js.map +1 -0
- package/components/free-brush/types.d.ts +7 -0
- package/components/free-brush/types.js +9 -0
- package/components/free-brush/types.js.map +1 -0
- package/components/graph/config.d.ts +207 -0
- package/components/graph/config.js +75 -0
- package/components/graph/config.js.map +1 -0
- package/components/graph/index.d.ts +121 -0
- package/components/graph/index.js +653 -0
- package/components/graph/index.js.map +1 -0
- package/components/graph/modules/layout-helpers.d.ts +2 -0
- package/components/graph/modules/layout-helpers.js +11 -0
- package/components/graph/modules/layout-helpers.js.map +1 -0
- package/components/graph/modules/layout.d.ts +9 -0
- package/components/graph/modules/layout.js +343 -0
- package/components/graph/modules/layout.js.map +1 -0
- package/components/graph/modules/link/helper.d.ts +25 -0
- package/components/graph/modules/link/helper.js +78 -0
- package/components/graph/modules/link/helper.js.map +1 -0
- package/components/graph/modules/link/index.d.ts +12 -0
- package/components/graph/modules/link/index.js +201 -0
- package/components/graph/modules/link/index.js.map +1 -0
- package/components/graph/modules/link/style.d.ts +15 -0
- package/components/graph/modules/link/style.js +112 -0
- package/components/graph/modules/link/style.js.map +1 -0
- package/components/graph/modules/node/helper.d.ts +21 -0
- package/components/graph/modules/node/helper.js +127 -0
- package/components/graph/modules/node/helper.js.map +1 -0
- package/components/graph/modules/node/index.d.ts +12 -0
- package/components/graph/modules/node/index.js +248 -0
- package/components/graph/modules/node/index.js.map +1 -0
- package/components/graph/modules/node/style.d.ts +24 -0
- package/components/graph/modules/node/style.js +273 -0
- package/components/graph/modules/node/style.js.map +1 -0
- package/components/graph/modules/panel/helper.d.ts +16 -0
- package/components/graph/modules/panel/helper.js +110 -0
- package/components/graph/modules/panel/helper.js.map +1 -0
- package/components/graph/modules/panel/index.d.ts +7 -0
- package/components/graph/modules/panel/index.js +103 -0
- package/components/graph/modules/panel/index.js.map +1 -0
- package/components/graph/modules/panel/style.d.ts +14 -0
- package/components/graph/modules/panel/style.js +123 -0
- package/components/graph/modules/panel/style.js.map +1 -0
- package/components/graph/modules/shape.d.ts +7 -0
- package/components/graph/modules/shape.js +80 -0
- package/components/graph/modules/shape.js.map +1 -0
- package/components/graph/modules/zoom-levels.d.ts +6 -0
- package/components/graph/modules/zoom-levels.js +10 -0
- package/components/graph/modules/zoom-levels.js.map +1 -0
- package/components/graph/style.d.ts +6 -0
- package/components/graph/style.js +66 -0
- package/components/graph/style.js.map +1 -0
- package/components/graph/types.d.ts +120 -0
- package/components/graph/types.js +29 -0
- package/components/graph/types.js.map +1 -0
- package/components/grouped-bar/config.d.ts +36 -0
- package/components/grouped-bar/config.js +20 -0
- package/components/grouped-bar/config.js.map +1 -0
- package/components/grouped-bar/index.d.ts +30 -0
- package/components/grouped-bar/index.js +231 -0
- package/components/grouped-bar/index.js.map +1 -0
- package/components/grouped-bar/style.d.ts +5 -0
- package/components/grouped-bar/style.js +36 -0
- package/components/grouped-bar/style.js.map +1 -0
- package/components/leaflet-flow-map/config.d.ts +46 -0
- package/components/leaflet-flow-map/config.js +25 -0
- package/components/leaflet-flow-map/config.js.map +1 -0
- package/components/leaflet-flow-map/index.d.ts +51 -0
- package/components/leaflet-flow-map/index.js +220 -0
- package/components/leaflet-flow-map/index.js.map +1 -0
- package/components/leaflet-flow-map/renderer-utils.d.ts +5 -0
- package/components/leaflet-flow-map/renderer-utils.js +15 -0
- package/components/leaflet-flow-map/renderer-utils.js.map +1 -0
- package/components/leaflet-flow-map/renderer.d.ts +26 -0
- package/components/leaflet-flow-map/renderer.js +117 -0
- package/components/leaflet-flow-map/renderer.js.map +1 -0
- package/components/leaflet-flow-map/shaders.d.ts +2 -0
- package/components/leaflet-flow-map/shaders.js +27 -0
- package/components/leaflet-flow-map/shaders.js.map +1 -0
- package/components/leaflet-flow-map/types.d.ts +23 -0
- package/components/leaflet-map/config.d.ts +175 -0
- package/components/leaflet-map/config.js +67 -0
- package/components/leaflet-map/config.js.map +1 -0
- package/components/leaflet-map/index.d.ts +95 -0
- package/components/leaflet-map/index.js +648 -0
- package/components/leaflet-map/index.js.map +1 -0
- package/components/leaflet-map/leaflet.css.js +4 -0
- package/components/leaflet-map/leaflet.css.js.map +1 -0
- package/components/leaflet-map/modules/clusterBackground.d.ts +4 -0
- package/components/leaflet-map/modules/clusterBackground.js +27 -0
- package/components/leaflet-map/modules/clusterBackground.js.map +1 -0
- package/components/leaflet-map/modules/donut.d.ts +3 -0
- package/components/leaflet-map/modules/donut.js +25 -0
- package/components/leaflet-map/modules/donut.js.map +1 -0
- package/components/leaflet-map/modules/map.d.ts +13 -0
- package/components/leaflet-map/modules/map.js +139 -0
- package/components/leaflet-map/modules/map.js.map +1 -0
- package/components/leaflet-map/modules/node.d.ts +8 -0
- package/components/leaflet-map/modules/node.js +148 -0
- package/components/leaflet-map/modules/node.js.map +1 -0
- package/components/leaflet-map/modules/selectionRing.d.ts +6 -0
- package/components/leaflet-map/modules/selectionRing.js +41 -0
- package/components/leaflet-map/modules/selectionRing.js.map +1 -0
- package/components/leaflet-map/modules/utils.d.ts +49 -0
- package/components/leaflet-map/modules/utils.js +207 -0
- package/components/leaflet-map/modules/utils.js.map +1 -0
- package/components/leaflet-map/renderer/map-style.d.ts +4 -0
- package/components/leaflet-map/renderer/map-style.js +15 -0
- package/components/leaflet-map/renderer/map-style.js.map +1 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js +40 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js.map +1 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js +40 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js.map +1 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js +4987 -0
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js.map +1 -0
- package/components/leaflet-map/renderer/mapboxgl-layer.d.ts +7 -0
- package/components/leaflet-map/renderer/mapboxgl-layer.js +28 -0
- package/components/leaflet-map/renderer/mapboxgl-layer.js.map +1 -0
- package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +5 -0
- package/components/leaflet-map/renderer/mapboxgl-utils.js +39 -0
- package/components/leaflet-map/renderer/mapboxgl-utils.js.map +1 -0
- package/components/leaflet-map/style.d.ts +19 -0
- package/components/leaflet-map/style.js +192 -0
- package/components/leaflet-map/style.js.map +1 -0
- package/components/leaflet-map/types.d.ts +70 -0
- package/components/leaflet-map/types.js +10 -0
- package/components/leaflet-map/types.js.map +1 -0
- package/components/line/config.d.ts +30 -0
- package/components/line/config.js +17 -0
- package/components/line/config.js.map +1 -0
- package/components/line/index.d.ts +27 -0
- package/components/line/index.js +139 -0
- package/components/line/index.js.map +1 -0
- package/components/line/style.d.ts +6 -0
- package/components/line/style.js +35 -0
- package/components/line/style.js.map +1 -0
- package/components/line/types.d.ts +12 -0
- package/components/radial-dendrogram/config.d.ts +34 -0
- package/components/radial-dendrogram/config.js +20 -0
- package/components/radial-dendrogram/config.js.map +1 -0
- package/components/radial-dendrogram/index.d.ts +22 -0
- package/components/radial-dendrogram/index.js +98 -0
- package/components/radial-dendrogram/index.js.map +1 -0
- package/components/radial-dendrogram/modules/label.d.ts +8 -0
- package/components/radial-dendrogram/modules/label.js +70 -0
- package/components/radial-dendrogram/modules/label.js.map +1 -0
- package/components/radial-dendrogram/modules/link.d.ts +19 -0
- package/components/radial-dendrogram/modules/link.js +59 -0
- package/components/radial-dendrogram/modules/link.js.map +1 -0
- package/components/radial-dendrogram/modules/node.d.ts +16 -0
- package/components/radial-dendrogram/modules/node.js +51 -0
- package/components/radial-dendrogram/modules/node.js.map +1 -0
- package/components/radial-dendrogram/style.d.ts +6 -0
- package/components/radial-dendrogram/style.js +54 -0
- package/components/radial-dendrogram/style.js.map +1 -0
- package/components/radial-dendrogram/types.d.ts +34 -0
- package/components/sankey/config.d.ts +162 -0
- package/components/sankey/config.js +65 -0
- package/components/sankey/config.js.map +1 -0
- package/components/sankey/index.d.ts +56 -0
- package/components/sankey/index.js +299 -0
- package/components/sankey/index.js.map +1 -0
- package/components/sankey/modules/label.d.ts +23 -0
- package/components/sankey/modules/label.js +164 -0
- package/components/sankey/modules/label.js.map +1 -0
- package/components/sankey/modules/link.d.ts +13 -0
- package/components/sankey/modules/link.js +108 -0
- package/components/sankey/modules/link.js.map +1 -0
- package/components/sankey/modules/node.d.ts +10 -0
- package/components/sankey/modules/node.js +156 -0
- package/components/sankey/modules/node.js.map +1 -0
- package/components/sankey/style.d.ts +20 -0
- package/components/sankey/style.js +164 -0
- package/components/sankey/style.js.map +1 -0
- package/components/sankey/types.d.ts +84 -0
- package/components/sankey/types.js +34 -0
- package/components/sankey/types.js.map +1 -0
- package/components/scatter/config.d.ts +44 -0
- package/components/scatter/config.js +23 -0
- package/components/scatter/config.js.map +1 -0
- package/components/scatter/index.d.ts +19 -0
- package/components/scatter/index.js +123 -0
- package/components/scatter/index.js.map +1 -0
- package/components/scatter/modules/point.d.ts +7 -0
- package/components/scatter/modules/point.js +98 -0
- package/components/scatter/modules/point.js.map +1 -0
- package/components/scatter/style.d.ts +5 -0
- package/components/scatter/style.js +53 -0
- package/components/scatter/style.js.map +1 -0
- package/components/scatter/types.d.ts +13 -0
- package/components/stacked-bar/config.d.ts +38 -0
- package/components/stacked-bar/config.js +20 -0
- package/components/stacked-bar/config.js.map +1 -0
- package/components/stacked-bar/index.d.ts +27 -0
- package/components/stacked-bar/index.js +193 -0
- package/components/stacked-bar/index.js.map +1 -0
- package/components/stacked-bar/style.d.ts +5 -0
- package/components/stacked-bar/style.js +36 -0
- package/components/stacked-bar/style.js.map +1 -0
- package/components/stacked-bar/types.d.ts +5 -0
- package/components/timeline/config.d.ts +43 -0
- package/components/timeline/config.js +23 -0
- package/components/timeline/config.js.map +1 -0
- package/components/timeline/index.d.ts +43 -0
- package/components/timeline/index.js +235 -0
- package/components/timeline/index.js.map +1 -0
- package/components/timeline/style.d.ts +12 -0
- package/components/timeline/style.js +86 -0
- package/components/timeline/style.js.map +1 -0
- package/components/tooltip/config.d.ts +46 -0
- package/components/tooltip/config.js +19 -0
- package/components/tooltip/config.js.map +1 -0
- package/components/tooltip/index.d.ts +34 -0
- package/components/tooltip/index.js +147 -0
- package/components/tooltip/index.js.map +1 -0
- package/components/tooltip/style.js +72 -0
- package/components/tooltip/style.js.map +1 -0
- package/components/topojson-map/config.d.ts +99 -0
- package/components/topojson-map/config.js +42 -0
- package/components/topojson-map/config.js.map +1 -0
- package/components/topojson-map/index.d.ts +52 -0
- package/components/topojson-map/index.js +355 -0
- package/components/topojson-map/index.js.map +1 -0
- package/components/topojson-map/style.d.ts +11 -0
- package/components/topojson-map/style.js +97 -0
- package/components/topojson-map/style.js.map +1 -0
- package/components/topojson-map/types.d.ts +48 -0
- package/components/topojson-map/types.js +45 -0
- package/components/topojson-map/types.js.map +1 -0
- package/components/topojson-map/utils.d.ts +3 -0
- package/components/topojson-map/utils.js +30 -0
- package/components/topojson-map/utils.js.map +1 -0
- package/components/vis-controls/config.d.ts +12 -0
- package/components/vis-controls/config.js +13 -0
- package/components/vis-controls/config.js.map +1 -0
- package/components/vis-controls/index.d.ts +14 -0
- package/components/vis-controls/index.js +52 -0
- package/components/vis-controls/index.js.map +1 -0
- package/components/vis-controls/style.d.ts +11 -0
- package/components/vis-controls/style.js +75 -0
- package/components/vis-controls/style.js.map +1 -0
- package/components/vis-controls/types.d.ts +13 -0
- package/components/vis-controls/types.js +8 -0
- package/components/vis-controls/types.js.map +1 -0
- package/components/xy-labels/config.d.ts +48 -0
- package/components/xy-labels/config.js +25 -0
- package/components/xy-labels/config.js.map +1 -0
- package/components/xy-labels/index.d.ts +15 -0
- package/components/xy-labels/index.js +86 -0
- package/components/xy-labels/index.js.map +1 -0
- package/components/xy-labels/modules/label.d.ts +9 -0
- package/components/xy-labels/modules/label.js +105 -0
- package/components/xy-labels/modules/label.js.map +1 -0
- package/components/xy-labels/style.d.ts +5 -0
- package/components/xy-labels/style.js +53 -0
- package/components/xy-labels/style.js.map +1 -0
- package/components/xy-labels/types.d.ts +23 -0
- package/components/xy-labels/types.js +9 -0
- package/components/xy-labels/types.js.map +1 -0
- package/components.d.ts +52 -0
- package/containers/single-container/config.d.ts +12 -0
- package/containers/single-container/config.js +12 -0
- package/containers/single-container/config.js.map +1 -0
- package/containers/single-container/index.d.ts +17 -0
- package/containers/single-container/index.js +115 -0
- package/containers/single-container/index.js.map +1 -0
- package/containers/xy-container/config.d.ts +99 -0
- package/containers/xy-container/config.js +30 -0
- package/containers/xy-container/config.js.map +1 -0
- package/containers/xy-container/index.d.ts +33 -0
- package/containers/xy-container/index.js +322 -0
- package/containers/xy-container/index.js.map +1 -0
- package/containers.d.ts +6 -0
- package/core/component/config.d.ts +58 -0
- package/core/component/config.js +14 -0
- package/core/component/config.js.map +1 -0
- package/core/component/index.d.ts +38 -0
- package/core/component/index.js +112 -0
- package/core/component/index.js.map +1 -0
- package/core/component/types.d.ts +2 -0
- package/core/config/index.d.ts +3 -0
- package/core/config/index.js +16 -0
- package/core/config/index.js.map +1 -0
- package/core/container/config.d.ts +38 -0
- package/core/container/config.js +29 -0
- package/core/container/config.js.map +1 -0
- package/core/container/index.d.ts +25 -0
- package/core/container/index.js +92 -0
- package/core/container/index.js.map +1 -0
- package/core/xy-component/config.d.ts +38 -0
- package/core/xy-component/config.js +20 -0
- package/core/xy-component/config.js.map +1 -0
- package/core/xy-component/index.d.ts +25 -0
- package/core/xy-component/index.js +65 -0
- package/core/xy-component/index.js.map +1 -0
- package/data-models/core.d.ts +6 -0
- package/data-models/core.js +14 -0
- package/data-models/core.js.map +1 -0
- package/data-models/graph.d.ts +24 -0
- package/data-models/graph.js +101 -0
- package/data-models/graph.js.map +1 -0
- package/data-models/map-graph.d.ts +23 -0
- package/data-models/map-graph.js +59 -0
- package/data-models/map-graph.js.map +1 -0
- package/data-models/map.d.ts +5 -0
- package/data-models/map.js +12 -0
- package/data-models/map.js.map +1 -0
- package/data-models/series.d.ts +6 -0
- package/data-models/series.js +19 -0
- package/data-models/series.js.map +1 -0
- package/external/maplibre-gl/dist/maplibre-gl.css.js +4 -0
- package/external/maplibre-gl/dist/maplibre-gl.css.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +49 -0
- package/index.js.map +1 -0
- package/maps/china-provinces.json.js +140373 -0
- package/maps/fr-regions.json.js +14162 -0
- package/maps/germany-regions.json.js +35760 -0
- package/maps/ind-regions.json.js +290584 -0
- package/maps/uk-regions.json.js +96233 -0
- package/maps/us-counties.json.js +206318 -0
- package/maps/us-states.json.js +16345 -0
- package/maps/world-110m-alpha.json.js +251366 -0
- package/maps/world-simple.json.js +89428 -0
- package/maps/world-simplest.json.js +28175 -0
- package/maps.d.ts +60 -0
- package/maps.js +23 -0
- package/package.json +61 -0
- package/styles/colors.d.ts +4 -0
- package/styles/colors.js +11 -0
- package/styles/colors.js.map +1 -0
- package/styles/css-variables.d.ts +2 -0
- package/styles/css-variables.js +16 -0
- package/styles/css-variables.js.map +1 -0
- package/types/accessor.d.ts +5 -0
- package/types/component.d.ts +13 -0
- package/types/component.js +14 -0
- package/types/component.js.map +1 -0
- package/types/curve.d.ts +40 -0
- package/types/curve.js +46 -0
- package/types/curve.js.map +1 -0
- package/types/data.d.ts +7 -0
- package/types/direction.d.ts +6 -0
- package/types/direction.js +10 -0
- package/types/direction.js.map +1 -0
- package/types/graph.d.ts +35 -0
- package/types/map.d.ts +4 -0
- package/types/misc.d.ts +8 -0
- package/types/position.d.ts +20 -0
- package/types/position.js +27 -0
- package/types/position.js.map +1 -0
- package/types/scale.d.ts +23 -0
- package/types/scale.js +27 -0
- package/types/scale.js.map +1 -0
- package/types/shape.d.ts +7 -0
- package/types/shape.js +11 -0
- package/types/shape.js.map +1 -0
- package/types/spacing.d.ts +6 -0
- package/types/symbol.d.ts +18 -0
- package/types/symbol.js +24 -0
- package/types/symbol.js.map +1 -0
- package/types/text.d.ts +38 -0
- package/types/text.js +31 -0
- package/types/text.js.map +1 -0
- package/types.d.ts +28 -0
- package/utils/color.d.ts +9 -0
- package/utils/color.js +26 -0
- package/utils/color.js.map +1 -0
- package/utils/d3.d.ts +3 -0
- package/utils/d3.js +16 -0
- package/utils/d3.js.map +1 -0
- package/utils/data.d.ts +123 -0
- package/utils/data.js +193 -0
- package/utils/data.js.map +1 -0
- package/utils/html.d.ts +1 -0
- package/utils/html.js +15 -0
- package/utils/html.js.map +1 -0
- package/utils/map.d.ts +2 -0
- package/utils/map.js +20 -0
- package/utils/map.js.map +1 -0
- package/utils/misc.d.ts +16 -0
- package/utils/misc.js +42 -0
- package/utils/misc.js.map +1 -0
- package/utils/path.d.ts +21 -0
- package/utils/path.js +144 -0
- package/utils/path.js.map +1 -0
- package/utils/scale.d.ts +1 -0
- package/utils/text.d.ts +17 -0
- package/utils/text.js +196 -0
- package/utils/text.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/line/index.ts"],"sourcesContent":["import { select } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { line, Line as LineGenInterface, CurveFactoryLineOnly } from 'd3-shape'\nimport { interpolatePath } from 'd3-interpolate-path'\n\n// Core\nimport { XYComponentCore } from 'core/xy-component'\n\n// Utils\nimport { getValue, isNumber, isArray, getNumber, getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\nimport { getColor } from 'utils/color'\n\n// Types\nimport { NumericAccessor } from 'types/accessor'\nimport { Spacing } from 'types/spacing'\nimport { Curve, CurveType } from 'types/curve'\n\n// Local Types\nimport { LineData, LineDatum } from './types'\n\n// Config\nimport { LineConfig, LineConfigInterface } from './config'\n\n// Styles\nimport * as s from './style'\n\nexport class Line<Datum> extends XYComponentCore<Datum> {\n static selectors = s\n config: LineConfig<Datum> = new LineConfig()\n lineGen: LineGenInterface<{ x: number; y: number; defined: boolean }>\n curve: CurveFactoryLineOnly = Curve[CurveType.MonotoneX]\n events = {\n [Line.selectors.line]: {\n mouseover: this._highlight.bind(this),\n mouseleave: this._resetHighlight.bind(this),\n },\n }\n\n constructor (config?: LineConfigInterface<Datum>) {\n super()\n if (config) this.config.init(config)\n }\n\n get bleed (): Spacing {\n const { config: { lineWidth } } = this\n return { top: lineWidth, bottom: lineWidth, left: lineWidth, right: lineWidth }\n }\n\n _render (customDuration?: number): void {\n super._render(customDuration)\n const { config, datamodel: { data } } = this\n const duration = isNumber(customDuration) ? customDuration : config.duration\n\n this.curve = Curve[config.curveType]\n this.lineGen = line<{ x: number; y: number; defined: boolean }>()\n .x(d => d.x)\n .y(d => d.y)\n .defined(d => d.defined)\n .curve(this.curve)\n\n const yAccessors = (isArray(config.y) ? config.y : [config.y]) as NumericAccessor<Datum>[]\n const lineDataX = data.map((d, i) => this.xScale(getNumber(d, config.x, i)))\n const lineData: LineData[] = yAccessors.map(a => {\n const ld: LineDatum[] = data.map((d, i) => {\n const rawValue = getNumber(d, a, i)\n // If `rawValue` is not numerical or if it's not finite (`NaN`, `undefined`, ...), we replace it with `config.fallbackValue`\n const value = (isNumber(rawValue) || (rawValue === null)) && isFinite(rawValue) ? rawValue : config.fallbackValue\n return {\n x: lineDataX[i],\n y: this.yScale(value ?? 0),\n defined: isFinite(value),\n value,\n }\n })\n\n const defined = ld.reduce((def, d) => (d.defined || def), false)\n // If the line consists only of `null` values, we'll still render it but it'll be invisible.\n // Such trick allows us to have better animated transitions.\n const visible = defined && ld.some(d => d.value !== null)\n return {\n values: ld,\n defined,\n visible,\n }\n })\n\n const lines = this.g\n .selectAll<SVGGElement, LineData>(`.${s.line}`)\n .data(lineData)\n\n const linesEnter = lines.enter().append('g')\n .attr('class', s.line)\n\n linesEnter\n .append('path')\n .attr('class', s.linePath)\n .attr('d', this._emptyPath())\n .attr('stroke', (d, i) => getColor(data, config.color, i))\n .attr('stroke-opacity', 0)\n .attr('stroke-width', config.lineWidth)\n\n linesEnter\n .append('path')\n .attr('class', s.lineSelectionHelper)\n .attr('d', this._emptyPath())\n\n const linesMerged = linesEnter.merge(lines)\n linesMerged.style('cursor', (d, i) => getString(data, config.cursor, i))\n linesMerged.each((d, i, elements) => {\n const group = select(elements[i])\n const linePath = group.select(`.${s.linePath}`)\n const lineSelectionHelper = group.select(`.${s.lineSelectionHelper}`)\n\n const isLineVisible = d.visible\n const dashArray = getValue<LineData, number[]>(d, config.lineDashArray, i)\n const transition = smartTransition(linePath, duration)\n .attr('stroke', getColor(data, config.color, i))\n .attr('stroke-width', config.lineWidth)\n .attr('stroke-opacity', isLineVisible ? 1 : 0)\n .style('stroke-dasharray', dashArray?.join(' ') ?? null) // We use `.style` because there's also a default CSS-variable for stroke-dasharray\n\n const hasUndefinedSegments = d.values.some(d => !d.defined)\n const svgPathD = this.lineGen(d.values)\n\n if (duration && !hasUndefinedSegments) {\n const previous = linePath.attr('d') || this._emptyPath()\n const next = svgPathD || this._emptyPath()\n const t = transition as Transition<SVGPathElement, LineData, SVGGElement, LineData>\n t.attrTween('d', () => interpolatePath(previous, next))\n } else if (d.visible) {\n transition.attr('d', svgPathD)\n }\n\n lineSelectionHelper\n .attr('d', svgPathD)\n .attr('visibility', isLineVisible ? null : 'hidden')\n })\n\n smartTransition(lines.exit(), duration)\n .style('opacity', 0)\n .remove()\n }\n\n private _emptyPath (): string {\n const xRange = this.xScale.range()\n const yRange = this.yScale.range()\n return `M${xRange[0]},${yRange[0]} L${xRange[1]},${yRange[0]}`\n }\n\n private _highlight (datum, i, els): void {\n const { config } = this\n\n if (config.highlightOnHover) {\n this.g\n .selectAll(`.${s.line}`)\n .classed(s.dim, d => d !== datum)\n }\n }\n\n private _resetHighlight (d, i, els): void {\n const { config } = this\n\n if (config.highlightOnHover) {\n this.g\n .selectAll(`.${s.line}`)\n .classed(s.dim, false)\n }\n }\n}\n"],"names":["s.line","s.linePath","s.lineSelectionHelper","linePath","lineSelectionHelper","s.dim","s"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { injectGlobal, css } from '@emotion/css';
|
|
2
|
+
|
|
3
|
+
const global = injectGlobal `
|
|
4
|
+
:root {
|
|
5
|
+
--vis-line-cursor: default;
|
|
6
|
+
--vis-line-stroke-dasharray: none;
|
|
7
|
+
--vis-line-stroke-dashoffset: 0;
|
|
8
|
+
}
|
|
9
|
+
`;
|
|
10
|
+
const root = css `
|
|
11
|
+
label: line-component;
|
|
12
|
+
`;
|
|
13
|
+
const line = css `
|
|
14
|
+
label: line;
|
|
15
|
+
transition: opacity 200ms;
|
|
16
|
+
cursor: var(--vis-line-cursor);
|
|
17
|
+
`;
|
|
18
|
+
const linePath = css `
|
|
19
|
+
label: linePath;
|
|
20
|
+
fill: none;
|
|
21
|
+
stroke-dasharray: var(--vis-line-stroke-dasharray);
|
|
22
|
+
stroke-dashoffset: var(--vis-line-stroke-dashoffset);
|
|
23
|
+
`;
|
|
24
|
+
const lineSelectionHelper = css `
|
|
25
|
+
label: lineSelectionHelper;
|
|
26
|
+
fill: none;
|
|
27
|
+
stroke: rgba(0, 0, 0, 0);
|
|
28
|
+
stroke-width: 8px;
|
|
29
|
+
`;
|
|
30
|
+
const dim = css `
|
|
31
|
+
opacity: 0.2;
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
export { dim, global, line, linePath, lineSelectionHelper, root };
|
|
35
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/line/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const global = injectGlobal`\n :root {\n --vis-line-cursor: default;\n --vis-line-stroke-dasharray: none;\n --vis-line-stroke-dashoffset: 0;\n }\n`\n\nexport const root = css`\n label: line-component;\n`\n\nexport const line = css`\n label: line;\n transition: opacity 200ms;\n cursor: var(--vis-line-cursor);\n`\n\nexport const linePath = css`\n label: linePath;\n fill: none;\n stroke-dasharray: var(--vis-line-stroke-dasharray);\n stroke-dashoffset: var(--vis-line-stroke-dashoffset);\n`\n\nexport const lineSelectionHelper = css`\n label: lineSelectionHelper;\n fill: none;\n stroke: rgba(0, 0, 0, 0);\n stroke-width: 8px;\n`\n\nexport const dim = css`\n opacity: 0.2;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,MAAM,GAAG,YAAY,CAAA,CAAA;;;;;;EAMjC;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;EAItB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;;;;EAK1B;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA,CAAA;;;;;EAKrC;AAEM,MAAM,GAAG,GAAG,GAAG,CAAA,CAAA;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Data type for Line Generator: [x, y, defined] */
|
|
2
|
+
export declare type LineDatum = {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
value: number | null | undefined;
|
|
6
|
+
defined: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare type LineData = {
|
|
9
|
+
values: LineDatum[];
|
|
10
|
+
defined: boolean;
|
|
11
|
+
visible: boolean;
|
|
12
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ComponentConfigInterface, ComponentConfig } from "../../core/component/config";
|
|
2
|
+
import { ColorAccessor, NumericAccessor, StringAccessor } from "../../types/accessor";
|
|
3
|
+
import { Hierarchy } from './types';
|
|
4
|
+
export interface RadialDendrogramConfigInterface<H extends Hierarchy> extends ComponentConfigInterface {
|
|
5
|
+
/** Children accessor function. Default: `d.children || d.values` */
|
|
6
|
+
children?: (d: H) => H[];
|
|
7
|
+
/** Value accessor function. Default: `d => d.value` */
|
|
8
|
+
value?: NumericAccessor<H>;
|
|
9
|
+
/** Array of node hierarchy levels. Data records are supposed to have corresponding properties, e.g. ['site', 'sublabel']. Default: `[]` */
|
|
10
|
+
nodeLevels?: string[];
|
|
11
|
+
/** Node width in pixels. Default: `15` */
|
|
12
|
+
nodeWidth?: number;
|
|
13
|
+
/** Node color accessor function ot constant value. Default: `d => d.color` */
|
|
14
|
+
nodeColor?: ColorAccessor<H>;
|
|
15
|
+
/** Node label accessor function. Default: `d => d.label ?? d.key` */
|
|
16
|
+
nodeLabel?: StringAccessor<H>;
|
|
17
|
+
/** Pad angle in radians. Constant value or accessor function. Default: `0.02` */
|
|
18
|
+
padAngle?: NumericAccessor<H>;
|
|
19
|
+
/** Corner radius constant value or accessor function. Default: `2` */
|
|
20
|
+
cornerRadius?: NumericAccessor<H>;
|
|
21
|
+
/** Angular range of the diagram. Default: `[0, 2 * Math.PI]` */
|
|
22
|
+
angleRange?: [number, number];
|
|
23
|
+
}
|
|
24
|
+
export declare class RadialDendrogramConfig<H extends Hierarchy> extends ComponentConfig implements RadialDendrogramConfigInterface<H> {
|
|
25
|
+
duration: number;
|
|
26
|
+
children: (d: H) => H[];
|
|
27
|
+
value: (d: H) => number;
|
|
28
|
+
nodeWidth: number;
|
|
29
|
+
nodeColor: (d: H) => string;
|
|
30
|
+
nodeLabel: (d: H) => string;
|
|
31
|
+
padAngle: number;
|
|
32
|
+
cornerRadius: number;
|
|
33
|
+
angleRange: [number, number];
|
|
34
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ComponentConfig } from '../../core/component/config.js';
|
|
2
|
+
|
|
3
|
+
/* eslint-disable dot-notation */
|
|
4
|
+
class RadialDendrogramConfig extends ComponentConfig {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.duration = 800;
|
|
8
|
+
this.children = (d) => d['children'] || d['values'];
|
|
9
|
+
this.value = (d) => d['value'];
|
|
10
|
+
this.nodeWidth = 15;
|
|
11
|
+
this.nodeColor = (d) => d['color'];
|
|
12
|
+
this.nodeLabel = (d) => { var _a; return (_a = d['label']) !== null && _a !== void 0 ? _a : d['key']; };
|
|
13
|
+
this.padAngle = 0.01;
|
|
14
|
+
this.cornerRadius = 2;
|
|
15
|
+
this.angleRange = [0, 2 * Math.PI];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { RadialDendrogramConfig };
|
|
20
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/components/radial-dendrogram/config.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport { ComponentConfigInterface, ComponentConfig } from 'core/component/config'\n\n// Types\nimport { ColorAccessor, NumericAccessor, StringAccessor } from 'types/accessor'\n\n// Local Types\nimport { Hierarchy } from './types'\n\nexport interface RadialDendrogramConfigInterface<H extends Hierarchy> extends ComponentConfigInterface {\n /** Children accessor function. Default: `d.children || d.values` */\n children?: (d: H) => H[];\n /** Value accessor function. Default: `d => d.value` */\n value?: NumericAccessor<H>;\n /** Array of node hierarchy levels. Data records are supposed to have corresponding properties, e.g. ['site', 'sublabel']. Default: `[]` */\n nodeLevels?: string[];\n /** Node width in pixels. Default: `15` */\n nodeWidth?: number;\n /** Node color accessor function ot constant value. Default: `d => d.color` */\n nodeColor?: ColorAccessor<H>;\n /** Node label accessor function. Default: `d => d.label ?? d.key` */\n nodeLabel?: StringAccessor<H>;\n /** Pad angle in radians. Constant value or accessor function. Default: `0.02` */\n padAngle?: NumericAccessor<H>;\n /** Corner radius constant value or accessor function. Default: `2` */\n cornerRadius?: NumericAccessor<H>;\n /** Angular range of the diagram. Default: `[0, 2 * Math.PI]` */\n angleRange?: [number, number];\n}\n\nexport class RadialDendrogramConfig<H extends Hierarchy> extends ComponentConfig implements RadialDendrogramConfigInterface<H> {\n duration = 800\n children = (d: H): H[] => d['children'] || d['values']\n value = (d: H): number => d['value']\n nodeWidth = 15\n nodeColor = (d: H): string => d['color']\n nodeLabel = (d: H): string => d['label'] ?? d['key']\n padAngle = 0.01\n cornerRadius = 2\n angleRange: [number, number] = [0, 2 * Math.PI]\n}\n"],"names":[],"mappings":";;AAAA;AA8BM,MAAO,sBAA4C,SAAQ,eAAe,CAAA;AAAhF,IAAA,WAAA,GAAA;;QACE,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAA;AACd,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAI,KAAU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;QACtD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAI,KAAa,CAAC,CAAC,OAAO,CAAC,CAAA;QACpC,IAAS,CAAA,SAAA,GAAG,EAAE,CAAA;QACd,IAAS,CAAA,SAAA,GAAG,CAAC,CAAI,KAAa,CAAC,CAAC,OAAO,CAAC,CAAA;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAI,KAAY,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,CAAC,mCAAI,CAAC,CAAC,KAAK,CAAC,CAAA,EAAA,CAAA;QACpD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAA;QACf,IAAY,CAAA,YAAA,GAAG,CAAC,CAAA;QAChB,IAAU,CAAA,UAAA,GAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;KAChD;AAAA;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection';
|
|
2
|
+
import { HierarchyRectangularNode } from 'd3-hierarchy';
|
|
3
|
+
import { ComponentCore } from "../../core/component";
|
|
4
|
+
import { Spacing } from "../../types/spacing";
|
|
5
|
+
import { Hierarchy, Link } from './types';
|
|
6
|
+
import { RadialDendrogramConfig, RadialDendrogramConfigInterface } from './config';
|
|
7
|
+
import * as s from './style';
|
|
8
|
+
export declare class RadialDendrogram<H extends Hierarchy> extends ComponentCore<H> {
|
|
9
|
+
static selectors: typeof s;
|
|
10
|
+
config: RadialDendrogramConfig<H>;
|
|
11
|
+
nodeGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>;
|
|
12
|
+
linkGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>;
|
|
13
|
+
labelGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>;
|
|
14
|
+
arcGen: import("d3-shape").Arc<any, HierarchyRectangularNode<H>>;
|
|
15
|
+
linkArcGen: import("d3-shape").Arc<any, Link<H>>;
|
|
16
|
+
events: {
|
|
17
|
+
[x: string]: {};
|
|
18
|
+
};
|
|
19
|
+
constructor(config?: RadialDendrogramConfigInterface<H>);
|
|
20
|
+
get bleed(): Spacing;
|
|
21
|
+
_render(customDuration?: number): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { hierarchy, partition } from 'd3-hierarchy';
|
|
2
|
+
import { arc } from 'd3-shape';
|
|
3
|
+
import { ComponentCore } from '../../core/component/index.js';
|
|
4
|
+
import { isNumber, getNumber } from '../../utils/data.js';
|
|
5
|
+
import { RadialDendrogramConfig } from './config.js';
|
|
6
|
+
import { createNode, updateNode, removeNode } from './modules/node.js';
|
|
7
|
+
import { createLabel, updateLabel, removeLabel } from './modules/label.js';
|
|
8
|
+
import { createLink, updateLink, removeLink } from './modules/link.js';
|
|
9
|
+
import * as style from './style.js';
|
|
10
|
+
import { link, node, gLabel } from './style.js';
|
|
11
|
+
|
|
12
|
+
class RadialDendrogram extends ComponentCore {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
super();
|
|
15
|
+
this.config = new RadialDendrogramConfig();
|
|
16
|
+
this.arcGen = arc();
|
|
17
|
+
this.linkArcGen = arc();
|
|
18
|
+
this.events = {
|
|
19
|
+
[RadialDendrogram.selectors.node]: {},
|
|
20
|
+
};
|
|
21
|
+
if (config)
|
|
22
|
+
this.config.init(config);
|
|
23
|
+
this.linkGroup = this.g.append('g');
|
|
24
|
+
this.nodeGroup = this.g.append('g');
|
|
25
|
+
this.labelGroup = this.g.append('g');
|
|
26
|
+
}
|
|
27
|
+
get bleed() {
|
|
28
|
+
return { top: 0, bottom: 0, left: 0, right: 0 };
|
|
29
|
+
}
|
|
30
|
+
_render(customDuration) {
|
|
31
|
+
super._render(customDuration);
|
|
32
|
+
const { config, datamodel: { data } } = this;
|
|
33
|
+
const duration = isNumber(customDuration) ? customDuration : config.duration;
|
|
34
|
+
this.arcGen
|
|
35
|
+
.startAngle(d => config.angleRange[0] + d.x0)
|
|
36
|
+
.endAngle(d => config.angleRange[0] + d.x1)
|
|
37
|
+
.padAngle(d => Math.min((d.x1 - d.x0) / 2, getNumber(d, config.padAngle)))
|
|
38
|
+
.cornerRadius(d => getNumber(d, config.cornerRadius))
|
|
39
|
+
.innerRadius(d => d.y1 - getNumber(d, config.nodeWidth))
|
|
40
|
+
.outerRadius(d => d.y1);
|
|
41
|
+
this.linkArcGen
|
|
42
|
+
.startAngle(d => config.angleRange[0] + d.target.x0)
|
|
43
|
+
.endAngle(d => config.angleRange[0] + d.target.x1)
|
|
44
|
+
.padAngle(d => Math.min((d.target.x1 - d.target.x0) / 2, getNumber(d, config.padAngle)))
|
|
45
|
+
.cornerRadius(d => getNumber(d, config.cornerRadius))
|
|
46
|
+
.innerRadius(d => d.source.y1)
|
|
47
|
+
.outerRadius(d => d.target.y1 - getNumber(d, config.nodeWidth));
|
|
48
|
+
const hierarchyData = hierarchy(data, d => config.children(d));
|
|
49
|
+
hierarchyData.sum(d => getNumber(d, config.value));
|
|
50
|
+
let radius = Math.min(this._width, this._height) / 2;
|
|
51
|
+
let ladelWidth = radius / (hierarchyData.height + 1) - config.nodeWidth;
|
|
52
|
+
radius = radius - ladelWidth;
|
|
53
|
+
ladelWidth -= ladelWidth / (hierarchyData.height + 1);
|
|
54
|
+
const dendogram = partition().size([config.angleRange[1], radius]);
|
|
55
|
+
const dendogramDataWithRoot = dendogram(hierarchyData).descendants();
|
|
56
|
+
// Filter from the root node
|
|
57
|
+
const dendogramData = dendogramDataWithRoot.filter(d => d.depth !== 0);
|
|
58
|
+
const linksData = dendogramDataWithRoot[0].links().filter(l => l.source.parent);
|
|
59
|
+
this.g.attr('transform', `translate(${this._width / 2},${this._height / 2})`);
|
|
60
|
+
// Links
|
|
61
|
+
const links = this.linkGroup
|
|
62
|
+
.selectAll(`.${link}`)
|
|
63
|
+
.data(linksData);
|
|
64
|
+
const linkEnter = links.enter().append('path')
|
|
65
|
+
.attr('class', link)
|
|
66
|
+
.call(createLink);
|
|
67
|
+
const linksMerged = links.merge(linkEnter);
|
|
68
|
+
linksMerged.call(updateLink, this.linkArcGen, duration);
|
|
69
|
+
const linksRemove = links.exit();
|
|
70
|
+
linksRemove.call(removeLink, duration);
|
|
71
|
+
// Nodes
|
|
72
|
+
const nodes = this.nodeGroup
|
|
73
|
+
.selectAll(`.${node}`)
|
|
74
|
+
.data(dendogramData);
|
|
75
|
+
const nodesEnter = nodes.enter().append('path')
|
|
76
|
+
.attr('class', node)
|
|
77
|
+
.call(createNode, config);
|
|
78
|
+
const nodesMerged = nodes.merge(nodesEnter);
|
|
79
|
+
nodesMerged.call(updateNode, config, this.arcGen, duration);
|
|
80
|
+
nodes.exit()
|
|
81
|
+
.call(removeNode, duration);
|
|
82
|
+
// Labels
|
|
83
|
+
const labels = this.labelGroup
|
|
84
|
+
.selectAll(`.${gLabel}`)
|
|
85
|
+
.data(dendogramData);
|
|
86
|
+
const labelEnter = labels.enter().append('g')
|
|
87
|
+
.attr('class', gLabel)
|
|
88
|
+
.call(createLabel, config);
|
|
89
|
+
const labelsMerged = labels.merge(labelEnter);
|
|
90
|
+
labelsMerged.call(updateLabel, config, ladelWidth, duration);
|
|
91
|
+
labels.exit()
|
|
92
|
+
.call(removeLabel, duration);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
RadialDendrogram.selectors = style;
|
|
96
|
+
|
|
97
|
+
export { RadialDendrogram };
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/radial-dendrogram/index.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { hierarchy, partition, HierarchyRectangularNode } from 'd3-hierarchy'\nimport { arc } from 'd3-shape'\n\n// Core\nimport { ComponentCore } from 'core/component'\n\n// Utils\nimport { getNumber, isNumber } from 'utils/data'\n\n// Types\nimport { Spacing } from 'types/spacing'\n\n// Local Types\nimport { Hierarchy, Link } from './types'\n\n// Config\nimport { RadialDendrogramConfig, RadialDendrogramConfigInterface } from './config'\n\n// Modules\nimport { createNode, updateNode, removeNode } from './modules/node'\nimport { createLabel, updateLabel, removeLabel } from './modules/label'\nimport { createLink, updateLink, removeLink } from './modules/link'\n\n// Styles\nimport * as s from './style'\n\nexport class RadialDendrogram<H extends Hierarchy> extends ComponentCore<H> {\n static selectors = s\n config: RadialDendrogramConfig<H> = new RadialDendrogramConfig()\n nodeGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n linkGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n labelGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n arcGen = arc<HierarchyRectangularNode<H>>()\n linkArcGen = arc<Link<H>>()\n\n events = {\n [RadialDendrogram.selectors.node]: {},\n }\n\n constructor (config?: RadialDendrogramConfigInterface<H>) {\n super()\n if (config) this.config.init(config)\n this.linkGroup = this.g.append('g')\n this.nodeGroup = this.g.append('g')\n this.labelGroup = this.g.append('g')\n }\n\n get bleed (): Spacing {\n return { top: 0, bottom: 0, left: 0, right: 0 }\n }\n\n _render (customDuration?: number): void {\n super._render(customDuration)\n const { config, datamodel: { data } } = this\n const duration = isNumber(customDuration) ? customDuration : config.duration\n\n this.arcGen\n .startAngle(d => config.angleRange[0] + d.x0)\n .endAngle(d => config.angleRange[0] + d.x1)\n .padAngle(d => Math.min((d.x1 - d.x0) / 2, getNumber(d, config.padAngle)))\n .cornerRadius(d => getNumber(d, config.cornerRadius))\n .innerRadius(d => d.y1 - getNumber(d, config.nodeWidth))\n .outerRadius(d => d.y1)\n\n this.linkArcGen\n .startAngle(d => config.angleRange[0] + d.target.x0)\n .endAngle(d => config.angleRange[0] + d.target.x1)\n .padAngle(d => Math.min((d.target.x1 - d.target.x0) / 2, getNumber(d, config.padAngle)))\n .cornerRadius(d => getNumber(d, config.cornerRadius))\n .innerRadius(d => d.source.y1)\n .outerRadius(d => d.target.y1 - getNumber(d, config.nodeWidth))\n\n const hierarchyData = hierarchy(data, d => config.children(d))\n hierarchyData.sum(d => getNumber(d, config.value))\n\n let radius = Math.min(this._width, this._height) / 2\n let ladelWidth = radius / (hierarchyData.height + 1) - config.nodeWidth\n radius = radius - ladelWidth\n ladelWidth -= ladelWidth / (hierarchyData.height + 1)\n const dendogram = partition<H>().size([config.angleRange[1], radius])\n const dendogramDataWithRoot = dendogram(hierarchyData).descendants()\n // Filter from the root node\n const dendogramData = dendogramDataWithRoot.filter(d => d.depth !== 0)\n\n const linksData = dendogramDataWithRoot[0].links().filter(l => l.source.parent)\n\n this.g.attr('transform', `translate(${this._width / 2},${this._height / 2})`)\n\n // Links\n const links = this.linkGroup\n .selectAll(`.${s.link}`)\n .data(linksData)\n\n const linkEnter = links.enter().append('path')\n .attr('class', s.link)\n .call(createLink)\n\n const linksMerged = links.merge(linkEnter)\n linksMerged.call(updateLink, this.linkArcGen, duration)\n\n const linksRemove = links.exit()\n linksRemove.call(removeLink, duration)\n\n // Nodes\n const nodes = this.nodeGroup\n .selectAll(`.${s.node}`)\n .data(dendogramData)\n\n const nodesEnter = nodes.enter().append('path')\n .attr('class', s.node)\n .call(createNode, config)\n\n const nodesMerged = nodes.merge(nodesEnter)\n nodesMerged.call(updateNode, config, this.arcGen, duration)\n\n nodes.exit()\n .call(removeNode, duration)\n\n // Labels\n const labels = this.labelGroup\n .selectAll(`.${s.gLabel}`)\n .data(dendogramData)\n\n const labelEnter = labels.enter().append('g')\n .attr('class', s.gLabel)\n .call(createLabel, config)\n\n const labelsMerged = labels.merge(labelEnter)\n labelsMerged.call(updateLabel, config, ladelWidth, duration)\n\n labels.exit()\n .call(removeLabel, duration)\n }\n}\n"],"names":["s.link","s.node","s.gLabel","s"],"mappings":";;;;;;;;;;;AA2BM,MAAO,gBAAsC,SAAQ,aAAgB,CAAA;AAazE,IAAA,WAAA,CAAa,MAA2C,EAAA;AACtD,QAAA,KAAK,EAAE,CAAA;AAZT,QAAA,IAAA,CAAA,MAAM,GAA8B,IAAI,sBAAsB,EAAE,CAAA;QAIhE,IAAM,CAAA,MAAA,GAAG,GAAG,EAA+B,CAAA;QAC3C,IAAU,CAAA,UAAA,GAAG,GAAG,EAAW,CAAA;AAE3B,QAAA,IAAA,CAAA,MAAM,GAAG;AACP,YAAA,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE;SACtC,CAAA;AAIC,QAAA,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACrC;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;KAChD;AAED,IAAA,OAAO,CAAE,cAAuB,EAAA;AAC9B,QAAA,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAC7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAA;AAC5C,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAA;AAE5E,QAAA,IAAI,CAAC,MAAM;AACR,aAAA,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5C,aAAA,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1C,aAAA,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,aAAA,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AACpD,aAAA,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;aACvD,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;AAEzB,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,aAAA,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,aAAA,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,aAAA,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;aACpD,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;aAC7B,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AAEjE,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,QAAA,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAElD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACpD,QAAA,IAAI,UAAU,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAA;AACvE,QAAA,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;QAC5B,UAAU,IAAI,UAAU,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACrD,QAAA,MAAM,SAAS,GAAG,SAAS,EAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QACrE,MAAM,qBAAqB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAA;;AAEpE,QAAA,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAA;QAEtE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAE/E,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAG,CAAA,CAAA,CAAC,CAAA;;AAG7E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AACzB,aAAA,SAAS,CAAC,CAAI,CAAA,EAAAA,IAAM,EAAE,CAAC;aACvB,IAAI,CAAC,SAAS,CAAC,CAAA;QAElB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3C,aAAA,IAAI,CAAC,OAAO,EAAEA,IAAM,CAAC;aACrB,IAAI,CAAC,UAAU,CAAC,CAAA;QAEnB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1C,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAEvD,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;AAChC,QAAA,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAGtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AACzB,aAAA,SAAS,CAAC,CAAI,CAAA,EAAAC,IAAM,EAAE,CAAC;aACvB,IAAI,CAAC,aAAa,CAAC,CAAA;QAEtB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,aAAA,IAAI,CAAC,OAAO,EAAEA,IAAM,CAAC;AACrB,aAAA,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAE3B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC3C,QAAA,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE3D,KAAK,CAAC,IAAI,EAAE;AACT,aAAA,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAG7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;AAC3B,aAAA,SAAS,CAAC,CAAI,CAAA,EAAAC,MAAQ,EAAE,CAAC;aACzB,IAAI,CAAC,aAAa,CAAC,CAAA;QAEtB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,aAAA,IAAI,CAAC,OAAO,EAAEA,MAAQ,CAAC;AACvB,aAAA,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7C,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE5D,MAAM,CAAC,IAAI,EAAE;AACV,aAAA,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;KAC/B;;AAzGM,gBAAS,CAAA,SAAA,GAAGC,KAAC;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection';
|
|
2
|
+
import { HierarchyRectangularNode } from 'd3-hierarchy';
|
|
3
|
+
import { Hierarchy } from '../types';
|
|
4
|
+
import { RadialDendrogramConfig } from '../config';
|
|
5
|
+
export declare const LABEL_PADDING = 3;
|
|
6
|
+
export declare function createLabel<H extends Hierarchy>(selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>): void;
|
|
7
|
+
export declare function updateLabel<H extends Hierarchy>(selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>, width: number, duration: number): void;
|
|
8
|
+
export declare function removeLabel<H extends Hierarchy>(selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, duration: number): void;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { select } from 'd3-selection';
|
|
2
|
+
import { wrapTextElement } from '../../../utils/text.js';
|
|
3
|
+
import { smartTransition } from '../../../utils/d3.js';
|
|
4
|
+
import { getString } from '../../../utils/data.js';
|
|
5
|
+
import { getColor } from '../../../utils/color.js';
|
|
6
|
+
import { label } from '../style.js';
|
|
7
|
+
|
|
8
|
+
const LABEL_PADDING = 3;
|
|
9
|
+
function createLabel(selection, config) {
|
|
10
|
+
selection
|
|
11
|
+
.style('opacity', 0)
|
|
12
|
+
.attr('transform', d => {
|
|
13
|
+
const angleCenter = (d.x0 + d.x1) / 2;
|
|
14
|
+
const angle = angleCenter - Math.PI / 2;
|
|
15
|
+
const r = d.y1 + LABEL_PADDING;
|
|
16
|
+
const x = r * Math.cos(angle);
|
|
17
|
+
const y = r * Math.sin(angle);
|
|
18
|
+
return `translate(${x}, ${y})`;
|
|
19
|
+
});
|
|
20
|
+
selection.append('text')
|
|
21
|
+
.attr('class', label)
|
|
22
|
+
.style('fill', d => getColor(d.data, config.nodeColor, d.depth));
|
|
23
|
+
}
|
|
24
|
+
function updateLabel(selection, config, width, duration) {
|
|
25
|
+
const { nodeLabel } = config;
|
|
26
|
+
selection.style('opacity', 0);
|
|
27
|
+
smartTransition(selection, duration)
|
|
28
|
+
.style('opacity', 1)
|
|
29
|
+
.attr('transform', d => {
|
|
30
|
+
const angleCenter = (d.x0 + d.x1) / 2;
|
|
31
|
+
const angle = angleCenter - Math.PI / 2;
|
|
32
|
+
const r = d.y1 + LABEL_PADDING;
|
|
33
|
+
const x = r * Math.cos(angle);
|
|
34
|
+
const y = r * Math.sin(angle);
|
|
35
|
+
return `translate(${x}, ${y})`;
|
|
36
|
+
});
|
|
37
|
+
const label$1 = selection.select(`.${label}`);
|
|
38
|
+
label$1
|
|
39
|
+
.text(d => getString(d.data, nodeLabel))
|
|
40
|
+
.style('fill', d => getColor(d.data, config.nodeColor, d.depth))
|
|
41
|
+
.style('display', d => {
|
|
42
|
+
const radianArcLength = d.x1 - d.x0;
|
|
43
|
+
const arcLength = 2 * Math.PI * d.y1 * radianArcLength;
|
|
44
|
+
// Hide label if length of node arc less then 70
|
|
45
|
+
return arcLength < 70 ? 'none' : 'block';
|
|
46
|
+
})
|
|
47
|
+
.style('text-anchor', d => {
|
|
48
|
+
const angleCenter = (d.x0 + d.x1) / 2;
|
|
49
|
+
const angleDegree = angleCenter * 180 / Math.PI;
|
|
50
|
+
return angleDegree < 180 ? 'start' : 'end';
|
|
51
|
+
})
|
|
52
|
+
.each((d, i, elements) => {
|
|
53
|
+
select(elements[i])
|
|
54
|
+
.call(wrapTextElement, { width: width - LABEL_PADDING * 2, trimOnly: true });
|
|
55
|
+
});
|
|
56
|
+
smartTransition(label$1, duration)
|
|
57
|
+
.attr('transform', d => {
|
|
58
|
+
const angleCenter = (d.x0 + d.x1) / 2;
|
|
59
|
+
const angleDegree = angleCenter * 180 / Math.PI;
|
|
60
|
+
return `rotate(${angleDegree < 180 ? angleDegree - 90 : angleDegree + 90})`;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function removeLabel(selection, duration) {
|
|
64
|
+
smartTransition(selection, duration)
|
|
65
|
+
.style('opacity', 0)
|
|
66
|
+
.remove();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { LABEL_PADDING, createLabel, removeLabel, updateLabel };
|
|
70
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sources":["../../../../src/components/radial-dendrogram/modules/label.ts"],"sourcesContent":["import { select, Selection } from 'd3-selection'\nimport { HierarchyRectangularNode } from 'd3-hierarchy'\n\n// Utils\nimport { wrapTextElement } from 'utils/text'\nimport { smartTransition } from 'utils/d3'\nimport { getString } from 'utils/data'\nimport { getColor } from 'utils/color'\n\n// Local Types\nimport { Hierarchy } from '../types'\n\n// Config\nimport { RadialDendrogramConfig } from '../config'\n\n// Styles\nimport * as s from '../style'\n\nexport const LABEL_PADDING = 3\n\nexport function createLabel<H extends Hierarchy> (selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>): void {\n selection\n .style('opacity', 0)\n .attr('transform', d => {\n const angleCenter = (d.x0 + d.x1) / 2\n const angle = angleCenter - Math.PI / 2\n const r = d.y1 + LABEL_PADDING\n const x = r * Math.cos(angle)\n const y = r * Math.sin(angle)\n return `translate(${x}, ${y})`\n })\n selection.append('text')\n .attr('class', s.label)\n .style('fill', d => getColor(d.data, config.nodeColor, d.depth))\n}\n\nexport function updateLabel<H extends Hierarchy> (selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>, width: number, duration: number): void {\n const { nodeLabel } = config\n selection.style('opacity', 0)\n smartTransition(selection, duration)\n .style('opacity', 1)\n .attr('transform', d => {\n const angleCenter = (d.x0 + d.x1) / 2\n const angle = angleCenter - Math.PI / 2\n const r = d.y1 + LABEL_PADDING\n const x = r * Math.cos(angle)\n const y = r * Math.sin(angle)\n return `translate(${x}, ${y})`\n })\n const label: Selection<SVGTextElement, any, SVGElement, any> = selection.select(`.${s.label}`)\n label\n .text(d => getString(d.data, nodeLabel))\n .style('fill', d => getColor(d.data, config.nodeColor, d.depth))\n .style('display', d => {\n const radianArcLength = d.x1 - d.x0\n const arcLength = 2 * Math.PI * d.y1 * radianArcLength\n // Hide label if length of node arc less then 70\n return arcLength < 70 ? 'none' : 'block'\n })\n .style('text-anchor', d => {\n const angleCenter = (d.x0 + d.x1) / 2\n const angleDegree = angleCenter * 180 / Math.PI\n return angleDegree < 180 ? 'start' : 'end'\n })\n .each((d, i, elements) => {\n select(elements[i])\n .call(wrapTextElement, { width: width - LABEL_PADDING * 2, trimOnly: true })\n })\n smartTransition(label, duration)\n\n .attr('transform', d => {\n const angleCenter = (d.x0 + d.x1) / 2\n const angleDegree = angleCenter * 180 / Math.PI\n\n return `rotate(${angleDegree < 180 ? angleDegree - 90 : angleDegree + 90})`\n })\n}\n\nexport function removeLabel<H extends Hierarchy> (selection: Selection<SVGGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, duration: number): void {\n smartTransition(selection, duration)\n .style('opacity', 0)\n .remove()\n}\n"],"names":["s.label","label"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection';
|
|
2
|
+
import { Arc } from 'd3-shape';
|
|
3
|
+
import { Hierarchy, Link } from '../types';
|
|
4
|
+
export interface ArcLink extends SVGElement {
|
|
5
|
+
_animState?: {
|
|
6
|
+
source: {
|
|
7
|
+
y0: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
};
|
|
10
|
+
target: {
|
|
11
|
+
x0: number;
|
|
12
|
+
x1: number;
|
|
13
|
+
y1: number;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function createLink<L extends Link<Hierarchy>>(selection: Selection<SVGPathElement, L, SVGGElement, L[]>): void;
|
|
18
|
+
export declare function updateLink<L extends Link<Hierarchy>>(selection: Selection<SVGPathElement, L, SVGGElement, L[]>, linkArcGen: Arc<any, any>, duration: number): void;
|
|
19
|
+
export declare function removeLink<L extends Link<Hierarchy>>(selection: Selection<SVGPathElement, L, SVGGElement, L[]>, duration: number): void;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { interpolate } from 'd3-interpolate';
|
|
2
|
+
import { smartTransition } from '../../../utils/d3.js';
|
|
3
|
+
|
|
4
|
+
function createLink(selection) {
|
|
5
|
+
selection
|
|
6
|
+
.style('opacity', 0)
|
|
7
|
+
.each((d, i, els) => {
|
|
8
|
+
const arcLink = els[i];
|
|
9
|
+
const angleCenter = (d.target.x0 + d.target.x1) / 2;
|
|
10
|
+
const angleHalfWidth = (d.target.x1 - d.target.x0) / 2;
|
|
11
|
+
arcLink._animState = {
|
|
12
|
+
target: {
|
|
13
|
+
x0: angleCenter - angleHalfWidth * 0.8,
|
|
14
|
+
x1: angleCenter + angleHalfWidth * 0.8,
|
|
15
|
+
y1: d.target.y1,
|
|
16
|
+
},
|
|
17
|
+
source: {
|
|
18
|
+
y0: d.source.y0,
|
|
19
|
+
y1: d.source.y1,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function updateLink(selection, linkArcGen, duration) {
|
|
25
|
+
if (duration) {
|
|
26
|
+
const transition = smartTransition(selection, duration)
|
|
27
|
+
.style('opacity', 1);
|
|
28
|
+
transition.attrTween('d', (d, i, els) => {
|
|
29
|
+
const arcLink = els[i];
|
|
30
|
+
const nextAnimState = {
|
|
31
|
+
target: {
|
|
32
|
+
x0: d.target.x0,
|
|
33
|
+
x1: d.target.x1,
|
|
34
|
+
y1: d.target.y1,
|
|
35
|
+
},
|
|
36
|
+
source: {
|
|
37
|
+
y0: d.source.y0,
|
|
38
|
+
y1: d.source.y1,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
const datum = interpolate(arcLink._animState, nextAnimState);
|
|
42
|
+
return (t) => {
|
|
43
|
+
arcLink._animState = datum(t);
|
|
44
|
+
return linkArcGen(arcLink._animState);
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
selection.attr('d', d => linkArcGen(d));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function removeLink(selection, duration) {
|
|
53
|
+
smartTransition(selection, duration)
|
|
54
|
+
.style('opacity', 0)
|
|
55
|
+
.remove();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { createLink, removeLink, updateLink };
|
|
59
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../../../src/components/radial-dendrogram/modules/link.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolate } from 'd3-interpolate'\nimport { Arc } from 'd3-shape'\n\n// Utils\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { Hierarchy, Link } from '../types'\n\nexport interface ArcLink extends SVGElement {\n _animState?: {\n source: { y0: number; y1: number };\n target: { x0: number; x1: number; y1: number };\n };\n}\n\nexport function createLink<L extends Link<Hierarchy>> (selection: Selection<SVGPathElement, L, SVGGElement, L[]>): void {\n selection\n .style('opacity', 0)\n .each((d, i, els) => {\n const arcLink: ArcLink = els[i]\n const angleCenter = (d.target.x0 + d.target.x1) / 2\n const angleHalfWidth = (d.target.x1 - d.target.x0) / 2\n arcLink._animState = {\n target: {\n x0: angleCenter - angleHalfWidth * 0.8,\n x1: angleCenter + angleHalfWidth * 0.8,\n y1: d.target.y1,\n },\n source: {\n y0: d.source.y0,\n y1: d.source.y1,\n },\n }\n })\n}\n\nexport function updateLink<L extends Link<Hierarchy>> (selection: Selection<SVGPathElement, L, SVGGElement, L[]>, linkArcGen: Arc<any, any>, duration: number): void {\n if (duration) {\n const transition = smartTransition(selection, duration)\n .style('opacity', 1) as Transition<SVGElement, L, SVGGElement, L[]>\n\n transition.attrTween('d', (d, i, els) => {\n const arcLink: ArcLink = els[i]\n const nextAnimState = {\n target: {\n x0: d.target.x0,\n x1: d.target.x1,\n y1: d.target.y1,\n },\n source: {\n y0: d.source.y0,\n y1: d.source.y1,\n },\n }\n const datum = interpolate(arcLink._animState, nextAnimState)\n\n return (t: number): string => {\n arcLink._animState = datum(t)\n return linkArcGen(arcLink._animState)\n }\n })\n } else {\n selection.attr('d', d => linkArcGen(d))\n }\n}\n\nexport function removeLink<L extends Link<Hierarchy>> (selection: Selection<SVGPathElement, L, SVGGElement, L[]>, duration: number): void {\n smartTransition(selection, duration)\n .style('opacity', 0)\n .remove()\n}\n"],"names":[],"mappings":";;;AAkBM,SAAU,UAAU,CAA6B,SAAyD,EAAA;IAC9G,SAAS;AACN,SAAA,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;SACnB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAI;AAClB,QAAA,MAAM,OAAO,GAAY,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AACnD,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;QACtD,OAAO,CAAC,UAAU,GAAG;AACnB,YAAA,MAAM,EAAE;AACN,gBAAA,EAAE,EAAE,WAAW,GAAG,cAAc,GAAG,GAAG;AACtC,gBAAA,EAAE,EAAE,WAAW,GAAG,cAAc,GAAG,GAAG;AACtC,gBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AACf,gBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,aAAA;SACF,CAAA;AACH,KAAC,CAAC,CAAA;AACN,CAAC;SAEe,UAAU,CAA6B,SAAyD,EAAE,UAAyB,EAAE,QAAgB,EAAA;AAC3J,IAAA,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC;AACpD,aAAA,KAAK,CAAC,SAAS,EAAE,CAAC,CAAgD,CAAA;AAErE,QAAA,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAI;AACtC,YAAA,MAAM,OAAO,GAAY,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/B,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AACf,oBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AACf,oBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AACf,oBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,iBAAA;aACF,CAAA;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YAE5D,OAAO,CAAC,CAAS,KAAY;AAC3B,gBAAA,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AAC7B,gBAAA,OAAO,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACvC,aAAC,CAAA;AACH,SAAC,CAAC,CAAA;AACH,KAAA;AAAM,SAAA;AACL,QAAA,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,KAAA;AACH,CAAC;AAEe,SAAA,UAAU,CAA6B,SAAyD,EAAE,QAAgB,EAAA;AAChI,IAAA,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC;AACjC,SAAA,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;AACnB,SAAA,MAAM,EAAE,CAAA;AACb;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection';
|
|
2
|
+
import { HierarchyRectangularNode } from 'd3-hierarchy';
|
|
3
|
+
import { Arc } from 'd3-shape';
|
|
4
|
+
import { Hierarchy } from '../types';
|
|
5
|
+
import { RadialDendrogramConfig } from '../config';
|
|
6
|
+
export interface ArcNode extends SVGElement {
|
|
7
|
+
_animState?: {
|
|
8
|
+
x0: number;
|
|
9
|
+
x1: number;
|
|
10
|
+
y0: number;
|
|
11
|
+
y1: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function createNode<H extends Hierarchy>(selection: Selection<SVGPathElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>): void;
|
|
15
|
+
export declare function updateNode<H extends Hierarchy>(selection: Selection<SVGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>, arcGen: Arc<any, any>, duration: number): void;
|
|
16
|
+
export declare function removeNode<H>(selection: Selection<SVGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, duration: number): void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { interpolate } from 'd3-interpolate';
|
|
2
|
+
import { getColor } from '../../../utils/color.js';
|
|
3
|
+
import { smartTransition } from '../../../utils/d3.js';
|
|
4
|
+
|
|
5
|
+
function createNode(selection, config) {
|
|
6
|
+
selection
|
|
7
|
+
.style('fill', d => getColor(d.data, config.nodeColor, d.depth))
|
|
8
|
+
.style('stroke', d => getColor(d.data, config.nodeColor, d.depth))
|
|
9
|
+
.style('opacity', 0)
|
|
10
|
+
.each((d, i, els) => {
|
|
11
|
+
const arcNode = els[i];
|
|
12
|
+
const angleCenter = (d.x0 + d.x1) / 2;
|
|
13
|
+
const angleHalfWidth = (d.x1 - d.x0) / 2;
|
|
14
|
+
arcNode._animState = {
|
|
15
|
+
x0: angleCenter - angleHalfWidth * 0.8,
|
|
16
|
+
x1: angleCenter + angleHalfWidth * 0.8,
|
|
17
|
+
y0: d.y0,
|
|
18
|
+
y1: d.y1,
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function updateNode(selection, config, arcGen, duration) {
|
|
23
|
+
selection
|
|
24
|
+
.style('transition', `fill ${duration}ms`) // Animate color with CSS because we're using CSS-variables
|
|
25
|
+
.style('fill', d => getColor(d.data, config.nodeColor, d.depth))
|
|
26
|
+
.style('stroke', d => getColor(d.data, config.nodeColor, d.depth));
|
|
27
|
+
if (duration) {
|
|
28
|
+
const transition = smartTransition(selection, duration)
|
|
29
|
+
.style('opacity', 1);
|
|
30
|
+
transition.attrTween('d', (d, i, els) => {
|
|
31
|
+
const arcNode = els[i];
|
|
32
|
+
const nextAnimState = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 };
|
|
33
|
+
const datum = interpolate(arcNode._animState, nextAnimState);
|
|
34
|
+
return (t) => {
|
|
35
|
+
arcNode._animState = datum(t);
|
|
36
|
+
return arcGen(arcNode._animState);
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
selection.attr('d', d => arcGen(d));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function removeNode(selection, duration) {
|
|
45
|
+
smartTransition(selection, duration)
|
|
46
|
+
.style('opacity', 0)
|
|
47
|
+
.remove();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { createNode, removeNode, updateNode };
|
|
51
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../../../src/components/radial-dendrogram/modules/node.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolate } from 'd3-interpolate'\nimport { HierarchyRectangularNode } from 'd3-hierarchy'\nimport { Arc } from 'd3-shape'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { Hierarchy } from '../types'\n\n// Config\nimport { RadialDendrogramConfig } from '../config'\n\nexport interface ArcNode extends SVGElement {\n _animState?: { x0: number; x1: number; y0: number; y1: number };\n}\n\nexport function createNode<H extends Hierarchy> (selection: Selection<SVGPathElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>): void {\n selection\n .style('fill', d => getColor(d.data, config.nodeColor, d.depth))\n .style('stroke', d => getColor(d.data, config.nodeColor, d.depth))\n .style('opacity', 0)\n .each((d, i, els) => {\n const arcNode: ArcNode = els[i]\n const angleCenter = (d.x0 + d.x1) / 2\n const angleHalfWidth = (d.x1 - d.x0) / 2\n arcNode._animState = {\n x0: angleCenter - angleHalfWidth * 0.8,\n x1: angleCenter + angleHalfWidth * 0.8,\n y0: d.y0,\n y1: d.y1,\n }\n })\n}\n\nexport function updateNode<H extends Hierarchy> (selection: Selection<SVGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, config: RadialDendrogramConfig<H>, arcGen: Arc<any, any>, duration: number): void {\n selection\n .style('transition', `fill ${duration}ms`) // Animate color with CSS because we're using CSS-variables\n .style('fill', d => getColor(d.data, config.nodeColor, d.depth))\n .style('stroke', d => getColor(d.data, config.nodeColor, d.depth))\n\n if (duration) {\n const transition = smartTransition(selection, duration)\n .style('opacity', 1) as Transition<SVGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>\n\n transition.attrTween('d', (d, i, els) => {\n const arcNode: ArcNode = els[i]\n const nextAnimState = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 }\n const datum = interpolate(arcNode._animState, nextAnimState)\n\n return (t: number): string => {\n arcNode._animState = datum(t)\n return arcGen(arcNode._animState)\n }\n })\n } else {\n selection.attr('d', d => arcGen(d))\n }\n}\n\nexport function removeNode<H> (selection: Selection<SVGElement, HierarchyRectangularNode<H>, SVGGElement, HierarchyRectangularNode<H>[]>, duration: number): void {\n smartTransition(selection, duration)\n .style('opacity', 0)\n .remove()\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { css, injectGlobal } from '@emotion/css';
|
|
2
|
+
|
|
3
|
+
const root = css `
|
|
4
|
+
label: radial-dendrogram-component;
|
|
5
|
+
`;
|
|
6
|
+
const variables = injectGlobal `
|
|
7
|
+
:root {
|
|
8
|
+
--vis-radial-dendrogram-link-color: #cad5f6;
|
|
9
|
+
--vis-radial-dendrogram-label-font-family: var(--vis-font-family);
|
|
10
|
+
|
|
11
|
+
--vis-dark-radial-dendrogram-link-color: #333333;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
body.theme-dark ${`.${root}`} {
|
|
15
|
+
--vis-radial-dendrogram-link-color: var(--vis-dark-radial-dendrogram-link-color);
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
const node = css `
|
|
19
|
+
label: node;
|
|
20
|
+
stroke-width: 0;
|
|
21
|
+
fill: var(--vis-color-main);
|
|
22
|
+
stroke: var(--vis-color-main);
|
|
23
|
+
|
|
24
|
+
&:hover {
|
|
25
|
+
stroke-width: 2;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const gLabel = css `
|
|
29
|
+
label: group-label;
|
|
30
|
+
`;
|
|
31
|
+
const label = css `
|
|
32
|
+
label: label;
|
|
33
|
+
|
|
34
|
+
&, tspan {
|
|
35
|
+
font-family: var(--vis-radial-dendrogram-label-font-family);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
dominant-baseline: middle;
|
|
39
|
+
user-select: none;
|
|
40
|
+
`;
|
|
41
|
+
const link = css `
|
|
42
|
+
label: link;
|
|
43
|
+
|
|
44
|
+
fill: var(--vis-radial-dendrogram-link-color);
|
|
45
|
+
fill-opacity: 0.5;
|
|
46
|
+
transition: .1s fill-opacity;
|
|
47
|
+
|
|
48
|
+
&:hover {
|
|
49
|
+
fill-opacity: 1;
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
export { gLabel, label, link, node, root, variables };
|
|
54
|
+
//# sourceMappingURL=style.js.map
|