@unovis/ts 1.1.1-beta.6 → 1.1.1-beta.7
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/declaration.d.ts +1 -0
- package/index.ts +1 -0
- package/licences.txt +43 -0
- package/maps.ts +1 -0
- package/package.json +1 -1
- package/rollup.config.js +71 -0
- package/rules/ts-getter-setter.js +35 -0
- package/src/components/area/config.ts +29 -0
- package/src/components/area/index.ts +133 -0
- package/{components/area/style.js → src/components/area/style.ts} +9 -10
- package/src/components/area/types.ts +2 -0
- package/src/components/axis/config.ts +76 -0
- package/src/components/axis/index.ts +363 -0
- package/{components/axis/style.js → src/components/axis/style.ts} +27 -22
- package/src/components/axis/types.ts +4 -0
- package/src/components/brush/config.ts +51 -0
- package/src/components/brush/index.ts +233 -0
- package/{components/brush/style.js → src/components/brush/style.ts} +15 -14
- package/src/components/brush/types.ts +8 -0
- package/src/components/bullet-legend/config.ts +38 -0
- package/src/components/bullet-legend/index.ts +104 -0
- package/{components/bullet-legend/style.js → src/components/bullet-legend/style.ts} +18 -16
- package/src/components/bullet-legend/types.ts +7 -0
- package/src/components/chord-diagram/config.ts +53 -0
- package/src/components/chord-diagram/index.ts +401 -0
- package/src/components/chord-diagram/modules/label.ts +155 -0
- package/src/components/chord-diagram/modules/link.ts +91 -0
- package/src/components/chord-diagram/modules/node.ts +80 -0
- package/{components/chord-diagram/style.js → src/components/chord-diagram/style.ts} +39 -30
- package/src/components/chord-diagram/types.ts +68 -0
- package/src/components/crosshair/config.ts +48 -0
- package/src/components/crosshair/index.ts +220 -0
- package/{components/crosshair/style.js → src/components/crosshair/style.ts} +12 -12
- package/src/components/crosshair/types.ts +15 -0
- package/src/components/donut/config.ts +65 -0
- package/src/components/donut/index.ts +148 -0
- package/src/components/donut/modules/arc.ts +86 -0
- package/{components/donut/style.js → src/components/donut/style.ts} +20 -18
- package/src/components/donut/types.ts +17 -0
- package/src/components/flow-legend/config.ts +31 -0
- package/src/components/flow-legend/index.ts +103 -0
- package/{components/flow-legend/style.js → src/components/flow-legend/style.ts} +25 -21
- package/src/components/flow-legend/types.ts +10 -0
- package/src/components/free-brush/config.ts +54 -0
- package/src/components/free-brush/index.ts +207 -0
- package/{components/free-brush/style.js → src/components/free-brush/style.ts} +12 -12
- package/src/components/free-brush/types.ts +8 -0
- package/src/components/graph/config.ts +280 -0
- package/src/components/graph/index.ts +809 -0
- package/src/components/graph/modules/layout-helpers.ts +96 -0
- package/src/components/graph/modules/layout.ts +502 -0
- package/src/components/graph/modules/link/helper.ts +105 -0
- package/src/components/graph/modules/link/index.ts +302 -0
- package/{components/graph/modules/link/style.js → src/components/graph/modules/link/style.ts} +45 -34
- package/src/components/graph/modules/node/helper.ts +162 -0
- package/src/components/graph/modules/node/index.ts +343 -0
- package/{components/graph/modules/node/style.js → src/components/graph/modules/node/style.ts} +72 -52
- package/src/components/graph/modules/panel/helper.ts +160 -0
- package/src/components/graph/modules/panel/index.ts +137 -0
- package/{components/graph/modules/panel/style.js → src/components/graph/modules/panel/style.ts} +42 -32
- package/src/components/graph/modules/shape.ts +108 -0
- package/src/components/graph/modules/zoom-levels.ts +6 -0
- package/src/components/graph/style.ts +72 -0
- package/src/components/graph/types.ts +152 -0
- package/src/components/grouped-bar/config.ts +40 -0
- package/src/components/grouped-bar/index.ts +325 -0
- package/{components/grouped-bar/style.js → src/components/grouped-bar/style.ts} +15 -14
- package/src/components/leaflet-flow-map/config.ts +60 -0
- package/src/components/leaflet-flow-map/index.ts +279 -0
- package/src/components/leaflet-flow-map/renderer-utils.ts +14 -0
- package/src/components/leaflet-flow-map/renderer.ts +146 -0
- package/{components/leaflet-flow-map/shaders.js → src/components/leaflet-flow-map/shaders.ts} +4 -7
- package/src/components/leaflet-flow-map/types.ts +18 -0
- package/src/components/leaflet-map/config.ts +234 -0
- package/src/components/leaflet-map/index.ts +808 -0
- package/src/components/leaflet-map/leaflet.css +625 -0
- package/src/components/leaflet-map/modules/clusterBackground.ts +34 -0
- package/src/components/leaflet-map/modules/donut.ts +37 -0
- package/src/components/leaflet-map/modules/map.ts +178 -0
- package/src/components/leaflet-map/modules/node.ts +208 -0
- package/src/components/leaflet-map/modules/selectionRing.ts +63 -0
- package/src/components/leaflet-map/modules/utils.ts +290 -0
- package/{components → src/components}/leaflet-map/renderer/leaflet-maplibre-gl.js +76 -78
- package/src/components/leaflet-map/renderer/map-style.ts +24 -0
- package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json +35 -0
- package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json +35 -0
- package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json +2185 -0
- package/src/components/leaflet-map/renderer/mapboxgl-layer.ts +43 -0
- package/src/components/leaflet-map/renderer/mapboxgl-utils.ts +40 -0
- package/{components → src/components}/leaflet-map/renderer/maplibre-gl.css.js +2 -4
- package/src/components/leaflet-map/style.ts +217 -0
- package/src/components/leaflet-map/types.ts +75 -0
- package/src/components/line/config.ts +34 -0
- package/src/components/line/index.ts +188 -0
- package/{components/line/style.js → src/components/line/style.ts} +18 -16
- package/src/components/line/types.ts +3 -0
- package/src/components/nested-donut/config.ts +75 -0
- package/src/components/nested-donut/index.ts +176 -0
- package/src/components/nested-donut/modules/arc.ts +78 -0
- package/src/components/nested-donut/modules/label.ts +63 -0
- package/src/components/nested-donut/style.ts +82 -0
- package/src/components/nested-donut/types.ts +29 -0
- package/src/components/sankey/config.ts +195 -0
- package/src/components/sankey/index.ts +387 -0
- package/src/components/sankey/modules/label.ts +228 -0
- package/src/components/sankey/modules/link.ts +141 -0
- package/src/components/sankey/modules/node.ts +221 -0
- package/{components/sankey/style.js → src/components/sankey/style.ts} +60 -44
- package/src/components/sankey/types.ts +95 -0
- package/src/components/scatter/config.ts +49 -0
- package/src/components/scatter/index.ts +220 -0
- package/src/components/scatter/modules/point.ts +123 -0
- package/src/components/scatter/modules/utils.ts +150 -0
- package/{components/scatter/style.js → src/components/scatter/style.ts} +15 -14
- package/src/components/scatter/types.ts +21 -0
- package/src/components/stacked-bar/config.ts +42 -0
- package/src/components/stacked-bar/index.ts +267 -0
- package/{components/stacked-bar/style.js → src/components/stacked-bar/style.ts} +15 -14
- package/src/components/stacked-bar/types.ts +5 -0
- package/src/components/timeline/config.ts +49 -0
- package/src/components/timeline/index.ts +302 -0
- package/{components/timeline/style.js → src/components/timeline/style.ts} +39 -30
- package/src/components/tooltip/config.ts +69 -0
- package/src/components/tooltip/index.ts +220 -0
- package/{components → src/components}/tooltip/style.js +11 -14
- package/src/components/topojson-map/config.ts +124 -0
- package/src/components/topojson-map/index.ts +436 -0
- package/{components/topojson-map/style.js → src/components/topojson-map/style.ts} +33 -26
- package/src/components/topojson-map/types.ts +123 -0
- package/src/components/topojson-map/utils.ts +29 -0
- package/src/components/vis-controls/config.ts +16 -0
- package/src/components/vis-controls/index.ts +68 -0
- package/{components/vis-controls/style.js → src/components/vis-controls/style.ts} +34 -27
- package/src/components/vis-controls/types.ts +14 -0
- package/src/components/xy-labels/config.ts +56 -0
- package/src/components/xy-labels/index.ts +109 -0
- package/src/components/xy-labels/modules/label.ts +140 -0
- package/{components/xy-labels/style.js → src/components/xy-labels/style.ts} +15 -14
- package/src/components/xy-labels/types.ts +26 -0
- package/src/components.ts +56 -0
- package/src/containers/single-container/config.ts +15 -0
- package/src/containers/single-container/index.ts +150 -0
- package/src/containers/xy-container/config.ts +112 -0
- package/src/containers/xy-container/index.ts +407 -0
- package/src/containers.ts +6 -0
- package/src/core/component/config.ts +61 -0
- package/src/core/component/index.ts +154 -0
- package/src/core/component/types.ts +9 -0
- package/src/core/config/index.ts +12 -0
- package/src/core/container/config.ts +56 -0
- package/src/core/container/index.ts +136 -0
- package/src/core/xy-component/config.ts +46 -0
- package/src/core/xy-component/index.ts +90 -0
- package/src/data-models/core.ts +15 -0
- package/src/data-models/graph.ts +138 -0
- package/src/data-models/map-graph.ts +72 -0
- package/src/data-models/map.ts +18 -0
- package/src/data-models/series.ts +16 -0
- package/src/index.ts +7 -0
- package/src/maps/china-provinces.json +1 -0
- package/src/maps/fr-regions.json +1 -0
- package/src/maps/germany-regions.json +1 -0
- package/src/maps/ind-regions.json +1 -0
- package/src/maps/uk-regions.json +1 -0
- package/src/maps/us-counties.json +1 -0
- package/src/maps/us-states.json +1 -0
- package/src/maps/world-110m-alpha.json +1 -0
- package/src/maps/world-simple.json +1 -0
- package/src/maps/world-simplest.json +1 -0
- package/src/maps.ts +34 -0
- package/src/styles/colors.ts +28 -0
- package/src/styles/index.ts +38 -0
- package/{styles/sizes.js → src/styles/sizes.ts} +6 -8
- package/src/types/accessor.ts +5 -0
- package/src/types/component.ts +15 -0
- package/src/types/curve.ts +62 -0
- package/src/types/data.ts +5 -0
- package/src/types/direction.ts +6 -0
- package/src/types/graph.ts +40 -0
- package/src/types/map.ts +5 -0
- package/src/types/misc.ts +10 -0
- package/src/types/position.ts +23 -0
- package/src/types/scale.ts +47 -0
- package/src/types/shape.ts +7 -0
- package/src/types/spacing.ts +6 -0
- package/src/types/svg.ts +32 -0
- package/src/types/symbol.ts +21 -0
- package/src/types/text.ts +71 -0
- package/src/types.ts +31 -0
- package/src/utils/color.ts +41 -0
- package/src/utils/d3.ts +15 -0
- package/src/utils/data.ts +328 -0
- package/src/utils/html.ts +13 -0
- package/src/utils/map.ts +29 -0
- package/src/utils/misc.ts +54 -0
- package/src/utils/path.ts +196 -0
- package/src/utils/scale.ts +1 -0
- package/src/utils/style.ts +37 -0
- package/src/utils/svg.ts +49 -0
- package/src/utils/text.ts +529 -0
- package/src/utils/type.ts +9 -0
- package/tsconfig.json +29 -0
- package/components/area/config.d.ts +0 -25
- package/components/area/config.js +0 -16
- package/components/area/config.js.map +0 -1
- package/components/area/index.d.ts +0 -19
- package/components/area/index.js +0 -102
- package/components/area/index.js.map +0 -1
- package/components/area/style.d.ts +0 -3
- package/components/area/style.js.map +0 -1
- package/components/area/types.d.ts +0 -6
- package/components/axis/config.d.ts +0 -71
- package/components/axis/config.js +0 -32
- package/components/axis/config.js.map +0 -1
- package/components/axis/index.d.ts +0 -44
- package/components/axis/index.js +0 -305
- package/components/axis/index.js.map +0 -1
- package/components/axis/style.d.ts +0 -9
- package/components/axis/style.js.map +0 -1
- package/components/axis/types.d.ts +0 -4
- package/components/axis/types.js +0 -8
- package/components/axis/types.js.map +0 -1
- package/components/brush/config.d.ts +0 -42
- package/components/brush/config.js +0 -24
- package/components/brush/config.js.map +0 -1
- package/components/brush/index.d.ts +0 -28
- package/components/brush/index.js +0 -199
- package/components/brush/index.js.map +0 -1
- package/components/brush/style.d.ts +0 -5
- package/components/brush/style.js.map +0 -1
- package/components/brush/types.d.ts +0 -7
- package/components/brush/types.js +0 -8
- package/components/brush/types.js.map +0 -1
- package/components/bullet-legend/config.d.ts +0 -34
- package/components/bullet-legend/config.js +0 -16
- package/components/bullet-legend/config.js.map +0 -1
- package/components/bullet-legend/index.d.ts +0 -19
- package/components/bullet-legend/index.js +0 -79
- package/components/bullet-legend/index.js.map +0 -1
- package/components/bullet-legend/style.d.ts +0 -6
- package/components/bullet-legend/style.js.map +0 -1
- package/components/bullet-legend/types.d.ts +0 -7
- package/components/bullet-legend/types.js +0 -2
- package/components/bullet-legend/types.js.map +0 -1
- package/components/chord-diagram/config.d.ts +0 -44
- package/components/chord-diagram/config.js +0 -25
- package/components/chord-diagram/config.js.map +0 -1
- package/components/chord-diagram/index.d.ts +0 -42
- package/components/chord-diagram/index.js +0 -305
- package/components/chord-diagram/index.js.map +0 -1
- package/components/chord-diagram/modules/label.d.ts +0 -8
- package/components/chord-diagram/modules/label.js +0 -115
- package/components/chord-diagram/modules/label.js.map +0 -1
- package/components/chord-diagram/modules/link.d.ts +0 -21
- package/components/chord-diagram/modules/link.js +0 -63
- package/components/chord-diagram/modules/link.js.map +0 -1
- package/components/chord-diagram/modules/node.d.ts +0 -17
- package/components/chord-diagram/modules/node.js +0 -52
- package/components/chord-diagram/modules/node.js.map +0 -1
- package/components/chord-diagram/style.d.ts +0 -13
- package/components/chord-diagram/style.js.map +0 -1
- package/components/chord-diagram/types.d.ts +0 -58
- package/components/chord-diagram/types.js +0 -8
- package/components/chord-diagram/types.js.map +0 -1
- package/components/crosshair/config.d.ts +0 -43
- package/components/crosshair/config.js +0 -19
- package/components/crosshair/config.js.map +0 -1
- package/components/crosshair/index.d.ts +0 -35
- package/components/crosshair/index.js +0 -183
- package/components/crosshair/index.js.map +0 -1
- package/components/crosshair/style.d.ts +0 -4
- package/components/crosshair/style.js.map +0 -1
- package/components/crosshair/types.d.ts +0 -13
- package/components/crosshair/types.js +0 -2
- package/components/crosshair/types.js.map +0 -1
- package/components/donut/config.d.ts +0 -59
- package/components/donut/config.js +0 -28
- package/components/donut/config.js.map +0 -1
- package/components/donut/index.d.ts +0 -21
- package/components/donut/index.js +0 -107
- package/components/donut/index.js.map +0 -1
- package/components/donut/modules/arc.d.ts +0 -10
- package/components/donut/modules/arc.js +0 -59
- package/components/donut/modules/arc.js.map +0 -1
- package/components/donut/style.d.ts +0 -7
- package/components/donut/style.js.map +0 -1
- package/components/donut/types.d.ts +0 -20
- package/components/flow-legend/config.d.ts +0 -29
- package/components/flow-legend/config.js +0 -18
- package/components/flow-legend/config.js.map +0 -1
- package/components/flow-legend/index.d.ts +0 -16
- package/components/flow-legend/index.js +0 -75
- package/components/flow-legend/index.js.map +0 -1
- package/components/flow-legend/style.d.ts +0 -8
- package/components/flow-legend/style.js.map +0 -1
- package/components/flow-legend/types.d.ts +0 -9
- package/components/flow-legend/types.js +0 -8
- package/components/flow-legend/types.js.map +0 -1
- package/components/free-brush/config.d.ts +0 -45
- package/components/free-brush/config.js +0 -24
- package/components/free-brush/config.js.map +0 -1
- package/components/free-brush/index.d.ts +0 -20
- package/components/free-brush/index.js +0 -192
- package/components/free-brush/index.js.map +0 -1
- package/components/free-brush/style.d.ts +0 -4
- package/components/free-brush/style.js.map +0 -1
- package/components/free-brush/types.d.ts +0 -7
- package/components/free-brush/types.js +0 -9
- package/components/free-brush/types.js.map +0 -1
- package/components/graph/config.d.ts +0 -238
- package/components/graph/config.js +0 -84
- package/components/graph/config.js.map +0 -1
- package/components/graph/index.d.ts +0 -126
- package/components/graph/index.js +0 -656
- package/components/graph/index.js.map +0 -1
- package/components/graph/modules/layout-helpers.d.ts +0 -21
- package/components/graph/modules/layout-helpers.js +0 -69
- package/components/graph/modules/layout-helpers.js.map +0 -1
- package/components/graph/modules/layout.d.ts +0 -10
- package/components/graph/modules/layout.js +0 -399
- package/components/graph/modules/layout.js.map +0 -1
- package/components/graph/modules/link/helper.d.ts +0 -25
- package/components/graph/modules/link/helper.js +0 -74
- package/components/graph/modules/link/helper.js.map +0 -1
- package/components/graph/modules/link/index.d.ts +0 -11
- package/components/graph/modules/link/index.js +0 -212
- package/components/graph/modules/link/index.js.map +0 -1
- package/components/graph/modules/link/style.d.ts +0 -15
- package/components/graph/modules/link/style.js.map +0 -1
- package/components/graph/modules/node/helper.d.ts +0 -21
- package/components/graph/modules/node/helper.js +0 -126
- package/components/graph/modules/node/helper.js.map +0 -1
- package/components/graph/modules/node/index.d.ts +0 -11
- package/components/graph/modules/node/index.js +0 -252
- package/components/graph/modules/node/index.js.map +0 -1
- package/components/graph/modules/node/style.d.ts +0 -24
- package/components/graph/modules/node/style.js.map +0 -1
- package/components/graph/modules/panel/helper.d.ts +0 -18
- package/components/graph/modules/panel/helper.js +0 -111
- package/components/graph/modules/panel/helper.js.map +0 -1
- package/components/graph/modules/panel/index.d.ts +0 -7
- package/components/graph/modules/panel/index.js +0 -98
- package/components/graph/modules/panel/index.js.map +0 -1
- package/components/graph/modules/panel/style.d.ts +0 -14
- package/components/graph/modules/panel/style.js.map +0 -1
- package/components/graph/modules/shape.d.ts +0 -6
- package/components/graph/modules/shape.js +0 -80
- package/components/graph/modules/shape.js.map +0 -1
- package/components/graph/modules/zoom-levels.d.ts +0 -6
- package/components/graph/modules/zoom-levels.js +0 -10
- package/components/graph/modules/zoom-levels.js.map +0 -1
- package/components/graph/style.d.ts +0 -6
- package/components/graph/style.js +0 -66
- package/components/graph/style.js.map +0 -1
- package/components/graph/types.d.ts +0 -125
- package/components/graph/types.js +0 -30
- package/components/graph/types.js.map +0 -1
- package/components/grouped-bar/config.d.ts +0 -36
- package/components/grouped-bar/config.js +0 -20
- package/components/grouped-bar/config.js.map +0 -1
- package/components/grouped-bar/index.d.ts +0 -32
- package/components/grouped-bar/index.js +0 -249
- package/components/grouped-bar/index.js.map +0 -1
- package/components/grouped-bar/style.d.ts +0 -5
- package/components/grouped-bar/style.js.map +0 -1
- package/components/leaflet-flow-map/config.d.ts +0 -46
- package/components/leaflet-flow-map/config.js +0 -25
- package/components/leaflet-flow-map/config.js.map +0 -1
- package/components/leaflet-flow-map/index.d.ts +0 -52
- package/components/leaflet-flow-map/index.js +0 -220
- package/components/leaflet-flow-map/index.js.map +0 -1
- package/components/leaflet-flow-map/renderer-utils.d.ts +0 -5
- package/components/leaflet-flow-map/renderer-utils.js +0 -15
- package/components/leaflet-flow-map/renderer-utils.js.map +0 -1
- package/components/leaflet-flow-map/renderer.d.ts +0 -26
- package/components/leaflet-flow-map/renderer.js +0 -117
- package/components/leaflet-flow-map/renderer.js.map +0 -1
- package/components/leaflet-flow-map/shaders.d.ts +0 -2
- package/components/leaflet-flow-map/shaders.js.map +0 -1
- package/components/leaflet-flow-map/types.d.ts +0 -23
- package/components/leaflet-map/config.d.ts +0 -193
- package/components/leaflet-map/config.js +0 -71
- package/components/leaflet-map/config.js.map +0 -1
- package/components/leaflet-map/index.d.ts +0 -130
- package/components/leaflet-map/index.js +0 -690
- package/components/leaflet-map/index.js.map +0 -1
- package/components/leaflet-map/leaflet.css.js +0 -5
- package/components/leaflet-map/leaflet.css.js.map +0 -1
- package/components/leaflet-map/modules/clusterBackground.d.ts +0 -5
- package/components/leaflet-map/modules/clusterBackground.js +0 -27
- package/components/leaflet-map/modules/clusterBackground.js.map +0 -1
- package/components/leaflet-map/modules/donut.d.ts +0 -3
- package/components/leaflet-map/modules/donut.js +0 -25
- package/components/leaflet-map/modules/donut.js.map +0 -1
- package/components/leaflet-map/modules/map.d.ts +0 -14
- package/components/leaflet-map/modules/map.js +0 -154
- package/components/leaflet-map/modules/map.js.map +0 -1
- package/components/leaflet-map/modules/node.d.ts +0 -9
- package/components/leaflet-map/modules/node.js +0 -162
- package/components/leaflet-map/modules/node.js.map +0 -1
- package/components/leaflet-map/modules/selectionRing.d.ts +0 -7
- package/components/leaflet-map/modules/selectionRing.js +0 -41
- package/components/leaflet-map/modules/selectionRing.js.map +0 -1
- package/components/leaflet-map/modules/utils.d.ts +0 -50
- package/components/leaflet-map/modules/utils.js +0 -210
- package/components/leaflet-map/modules/utils.js.map +0 -1
- package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +0 -1
- package/components/leaflet-map/renderer/map-style.d.ts +0 -4
- package/components/leaflet-map/renderer/map-style.js +0 -15
- package/components/leaflet-map/renderer/map-style.js.map +0 -1
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js +0 -40
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js.map +0 -1
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js +0 -40
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js.map +0 -1
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js +0 -4981
- package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js.map +0 -1
- package/components/leaflet-map/renderer/mapboxgl-layer.d.ts +0 -8
- package/components/leaflet-map/renderer/mapboxgl-layer.js +0 -27
- package/components/leaflet-map/renderer/mapboxgl-layer.js.map +0 -1
- package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +0 -4
- package/components/leaflet-map/renderer/mapboxgl-utils.js +0 -39
- package/components/leaflet-map/renderer/mapboxgl-utils.js.map +0 -1
- package/components/leaflet-map/renderer/maplibre-gl.css.js.map +0 -1
- package/components/leaflet-map/style.d.ts +0 -52
- package/components/leaflet-map/style.js +0 -183
- package/components/leaflet-map/style.js.map +0 -1
- package/components/leaflet-map/types.d.ts +0 -75
- package/components/leaflet-map/types.js +0 -15
- package/components/leaflet-map/types.js.map +0 -1
- package/components/line/config.d.ts +0 -30
- package/components/line/config.js +0 -17
- package/components/line/config.js.map +0 -1
- package/components/line/index.d.ts +0 -27
- package/components/line/index.js +0 -152
- package/components/line/index.js.map +0 -1
- package/components/line/style.d.ts +0 -6
- package/components/line/style.js.map +0 -1
- package/components/line/types.d.ts +0 -12
- package/components/nested-donut/config.d.ts +0 -59
- package/components/nested-donut/config.js +0 -19
- package/components/nested-donut/config.js.map +0 -1
- package/components/nested-donut/index.d.ts +0 -38
- package/components/nested-donut/index.js +0 -133
- package/components/nested-donut/index.js.map +0 -1
- package/components/nested-donut/modules/arc.d.ts +0 -17
- package/components/nested-donut/modules/arc.js +0 -50
- package/components/nested-donut/modules/arc.js.map +0 -1
- package/components/nested-donut/modules/label.d.ts +0 -7
- package/components/nested-donut/modules/label.js +0 -34
- package/components/nested-donut/modules/label.js.map +0 -1
- package/components/nested-donut/style.d.ts +0 -26
- package/components/nested-donut/style.js +0 -70
- package/components/nested-donut/style.js.map +0 -1
- package/components/nested-donut/types.d.ts +0 -24
- package/components/nested-donut/types.js +0 -11
- package/components/nested-donut/types.js.map +0 -1
- package/components/sankey/config.d.ts +0 -162
- package/components/sankey/config.js +0 -65
- package/components/sankey/config.js.map +0 -1
- package/components/sankey/index.d.ts +0 -59
- package/components/sankey/index.js +0 -306
- package/components/sankey/index.js.map +0 -1
- package/components/sankey/modules/label.d.ts +0 -23
- package/components/sankey/modules/label.js +0 -168
- package/components/sankey/modules/label.js.map +0 -1
- package/components/sankey/modules/link.d.ts +0 -14
- package/components/sankey/modules/link.js +0 -108
- package/components/sankey/modules/link.js.map +0 -1
- package/components/sankey/modules/node.d.ts +0 -10
- package/components/sankey/modules/node.js +0 -156
- package/components/sankey/modules/node.js.map +0 -1
- package/components/sankey/style.d.ts +0 -20
- package/components/sankey/style.js.map +0 -1
- package/components/sankey/types.d.ts +0 -84
- package/components/sankey/types.js +0 -34
- package/components/sankey/types.js.map +0 -1
- package/components/scatter/config.d.ts +0 -44
- package/components/scatter/config.js +0 -23
- package/components/scatter/config.js.map +0 -1
- package/components/scatter/index.d.ts +0 -28
- package/components/scatter/index.js +0 -167
- package/components/scatter/index.js.map +0 -1
- package/components/scatter/modules/point.d.ts +0 -7
- package/components/scatter/modules/point.js +0 -86
- package/components/scatter/modules/point.js.map +0 -1
- package/components/scatter/modules/utils.d.ts +0 -11
- package/components/scatter/modules/utils.js +0 -112
- package/components/scatter/modules/utils.js.map +0 -1
- package/components/scatter/style.d.ts +0 -5
- package/components/scatter/style.js.map +0 -1
- package/components/scatter/types.d.ts +0 -19
- package/components/stacked-bar/config.d.ts +0 -38
- package/components/stacked-bar/config.js +0 -20
- package/components/stacked-bar/config.js.map +0 -1
- package/components/stacked-bar/index.d.ts +0 -28
- package/components/stacked-bar/index.js +0 -208
- package/components/stacked-bar/index.js.map +0 -1
- package/components/stacked-bar/style.d.ts +0 -5
- package/components/stacked-bar/style.js.map +0 -1
- package/components/stacked-bar/types.d.ts +0 -5
- package/components/timeline/config.d.ts +0 -43
- package/components/timeline/config.js +0 -24
- package/components/timeline/config.js.map +0 -1
- package/components/timeline/index.d.ts +0 -41
- package/components/timeline/index.js +0 -244
- package/components/timeline/index.js.map +0 -1
- package/components/timeline/style.d.ts +0 -13
- package/components/timeline/style.js.map +0 -1
- package/components/tooltip/config.d.ts +0 -68
- package/components/tooltip/config.js +0 -20
- package/components/tooltip/config.js.map +0 -1
- package/components/tooltip/index.d.ts +0 -36
- package/components/tooltip/index.js +0 -184
- package/components/tooltip/index.js.map +0 -1
- package/components/tooltip/style.js.map +0 -1
- package/components/topojson-map/config.d.ts +0 -99
- package/components/topojson-map/config.js +0 -42
- package/components/topojson-map/config.js.map +0 -1
- package/components/topojson-map/index.d.ts +0 -52
- package/components/topojson-map/index.js +0 -355
- package/components/topojson-map/index.js.map +0 -1
- package/components/topojson-map/style.d.ts +0 -11
- package/components/topojson-map/style.js.map +0 -1
- package/components/topojson-map/types.d.ts +0 -78
- package/components/topojson-map/types.js +0 -80
- package/components/topojson-map/types.js.map +0 -1
- package/components/topojson-map/utils.d.ts +0 -3
- package/components/topojson-map/utils.js +0 -30
- package/components/topojson-map/utils.js.map +0 -1
- package/components/vis-controls/config.d.ts +0 -12
- package/components/vis-controls/config.js +0 -13
- package/components/vis-controls/config.js.map +0 -1
- package/components/vis-controls/index.d.ts +0 -14
- package/components/vis-controls/index.js +0 -52
- package/components/vis-controls/index.js.map +0 -1
- package/components/vis-controls/style.d.ts +0 -11
- package/components/vis-controls/style.js.map +0 -1
- package/components/vis-controls/types.d.ts +0 -13
- package/components/vis-controls/types.js +0 -8
- package/components/vis-controls/types.js.map +0 -1
- package/components/xy-labels/config.d.ts +0 -48
- package/components/xy-labels/config.js +0 -25
- package/components/xy-labels/config.js.map +0 -1
- package/components/xy-labels/index.d.ts +0 -15
- package/components/xy-labels/index.js +0 -87
- package/components/xy-labels/index.js.map +0 -1
- package/components/xy-labels/modules/label.d.ts +0 -9
- package/components/xy-labels/modules/label.js +0 -107
- package/components/xy-labels/modules/label.js.map +0 -1
- package/components/xy-labels/style.d.ts +0 -5
- package/components/xy-labels/style.js.map +0 -1
- package/components/xy-labels/types.d.ts +0 -23
- package/components/xy-labels/types.js +0 -9
- package/components/xy-labels/types.js.map +0 -1
- package/components.d.ts +0 -51
- package/components.js +0 -29
- package/components.js.map +0 -1
- package/containers/single-container/config.d.ts +0 -12
- package/containers/single-container/config.js +0 -12
- package/containers/single-container/config.js.map +0 -1
- package/containers/single-container/index.d.ts +0 -19
- package/containers/single-container/index.js +0 -128
- package/containers/single-container/index.js.map +0 -1
- package/containers/xy-container/config.d.ts +0 -99
- package/containers/xy-container/config.js +0 -30
- package/containers/xy-container/config.js.map +0 -1
- package/containers/xy-container/index.d.ts +0 -34
- package/containers/xy-container/index.js +0 -330
- package/containers/xy-container/index.js.map +0 -1
- package/containers.d.ts +0 -6
- package/containers.js +0 -4
- package/containers.js.map +0 -1
- package/core/component/config.d.ts +0 -58
- package/core/component/config.js +0 -14
- package/core/component/config.js.map +0 -1
- package/core/component/index.d.ts +0 -43
- package/core/component/index.js +0 -118
- package/core/component/index.js.map +0 -1
- package/core/component/types.d.ts +0 -2
- package/core/component/types.js +0 -2
- package/core/component/types.js.map +0 -1
- package/core/config/index.d.ts +0 -3
- package/core/config/index.js +0 -16
- package/core/config/index.js.map +0 -1
- package/core/container/config.d.ts +0 -48
- package/core/container/config.js +0 -29
- package/core/container/config.js.map +0 -1
- package/core/container/index.d.ts +0 -26
- package/core/container/index.js +0 -105
- package/core/container/index.js.map +0 -1
- package/core/xy-component/config.d.ts +0 -38
- package/core/xy-component/config.js +0 -20
- package/core/xy-component/config.js.map +0 -1
- package/core/xy-component/index.d.ts +0 -27
- package/core/xy-component/index.js +0 -74
- package/core/xy-component/index.js.map +0 -1
- package/data-models/core.d.ts +0 -6
- package/data-models/core.js +0 -14
- package/data-models/core.js.map +0 -1
- package/data-models/graph.d.ts +0 -24
- package/data-models/graph.js +0 -107
- package/data-models/graph.js.map +0 -1
- package/data-models/map-graph.d.ts +0 -21
- package/data-models/map-graph.js +0 -62
- package/data-models/map-graph.js.map +0 -1
- package/data-models/map.d.ts +0 -5
- package/data-models/map.js +0 -12
- package/data-models/map.js.map +0 -1
- package/data-models/series.d.ts +0 -6
- package/data-models/series.js +0 -19
- package/data-models/series.js.map +0 -1
- package/index.d.ts +0 -7
- package/index.js +0 -55
- package/index.js.map +0 -1
- package/maps/china-provinces.json.js +0 -140373
- package/maps/fr-regions.json.js +0 -14162
- package/maps/germany-regions.json.js +0 -35760
- package/maps/ind-regions.json.js +0 -290584
- package/maps/uk-regions.json.js +0 -96233
- package/maps/us-counties.json.js +0 -206318
- package/maps/us-states.json.js +0 -16345
- package/maps/world-110m-alpha.json.js +0 -251366
- package/maps/world-simple.json.js +0 -89428
- package/maps/world-simplest.json.js +0 -28175
- package/maps.d.ts +0 -60
- package/maps.js +0 -23
- package/styles/colors.d.ts +0 -7
- package/styles/colors.js +0 -24
- package/styles/colors.js.map +0 -1
- package/styles/index.d.ts +0 -7
- package/styles/index.js +0 -38
- package/styles/index.js.map +0 -1
- package/styles/sizes.d.ts +0 -2
- package/styles/sizes.js.map +0 -1
- package/types/accessor.d.ts +0 -5
- package/types/accessor.js +0 -2
- package/types/accessor.js.map +0 -1
- package/types/component.d.ts +0 -13
- package/types/component.js +0 -14
- package/types/component.js.map +0 -1
- package/types/curve.d.ts +0 -40
- package/types/curve.js +0 -46
- package/types/curve.js.map +0 -1
- package/types/data.d.ts +0 -7
- package/types/data.js +0 -2
- package/types/data.js.map +0 -1
- package/types/direction.d.ts +0 -6
- package/types/direction.js +0 -10
- package/types/direction.js.map +0 -1
- package/types/graph.d.ts +0 -35
- package/types/graph.js +0 -2
- package/types/graph.js.map +0 -1
- package/types/map.d.ts +0 -4
- package/types/map.js +0 -2
- package/types/map.js.map +0 -1
- package/types/misc.d.ts +0 -8
- package/types/position.d.ts +0 -20
- package/types/position.js +0 -27
- package/types/position.js.map +0 -1
- package/types/scale.d.ts +0 -23
- package/types/scale.js +0 -27
- package/types/scale.js.map +0 -1
- package/types/shape.d.ts +0 -7
- package/types/shape.js +0 -11
- package/types/shape.js.map +0 -1
- package/types/spacing.d.ts +0 -6
- package/types/spacing.js +0 -2
- package/types/spacing.js.map +0 -1
- package/types/svg.d.ts +0 -18
- package/types/svg.js +0 -22
- package/types/svg.js.map +0 -1
- package/types/symbol.d.ts +0 -18
- package/types/symbol.js +0 -24
- package/types/symbol.js.map +0 -1
- package/types/text.d.ts +0 -47
- package/types/text.js +0 -26
- package/types/text.js.map +0 -1
- package/types.d.ts +0 -27
- package/types.js +0 -30
- package/types.js.map +0 -1
- package/utils/color.d.ts +0 -10
- package/utils/color.js +0 -32
- package/utils/color.js.map +0 -1
- package/utils/d3.d.ts +0 -3
- package/utils/d3.js +0 -16
- package/utils/d3.js.map +0 -1
- package/utils/data.d.ts +0 -45
- package/utils/data.js +0 -274
- package/utils/data.js.map +0 -1
- package/utils/html.d.ts +0 -1
- package/utils/html.js +0 -16
- package/utils/html.js.map +0 -1
- package/utils/map.d.ts +0 -2
- package/utils/map.js +0 -20
- package/utils/map.js.map +0 -1
- package/utils/misc.d.ts +0 -9
- package/utils/misc.js +0 -47
- package/utils/misc.js.map +0 -1
- package/utils/path.d.ts +0 -23
- package/utils/path.js +0 -144
- package/utils/path.js.map +0 -1
- package/utils/scale.d.ts +0 -1
- package/utils/style.d.ts +0 -6
- package/utils/style.js +0 -24
- package/utils/style.js.map +0 -1
- package/utils/svg.d.ts +0 -3
- package/utils/text.d.ts +0 -139
- package/utils/text.js +0 -443
- package/utils/text.js.map +0 -1
- package/utils/type.d.ts +0 -5
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection'
|
|
2
|
+
import { pie, arc } from 'd3-shape'
|
|
3
|
+
|
|
4
|
+
// Core
|
|
5
|
+
import { ComponentCore } from 'core/component'
|
|
6
|
+
import { SeriesDataModel } from 'data-models/series'
|
|
7
|
+
|
|
8
|
+
// Utils
|
|
9
|
+
import { smartTransition } from 'utils/d3'
|
|
10
|
+
import { isNumber, clamp, getNumber } from 'utils/data'
|
|
11
|
+
import { wrapSVGText } from 'utils/text'
|
|
12
|
+
|
|
13
|
+
// Types
|
|
14
|
+
import { Spacing } from 'types/spacing'
|
|
15
|
+
|
|
16
|
+
// Local Types
|
|
17
|
+
import { DonutArcDatum, DonutArcAnimState, DonutDatum } from './types'
|
|
18
|
+
|
|
19
|
+
// Config
|
|
20
|
+
import { DonutConfig, DonutConfigInterface } from './config'
|
|
21
|
+
|
|
22
|
+
// Modules
|
|
23
|
+
import { createArc, updateArc, removeArc } from './modules/arc'
|
|
24
|
+
|
|
25
|
+
// Styles
|
|
26
|
+
import * as s from './style'
|
|
27
|
+
|
|
28
|
+
export class Donut<Datum> extends ComponentCore<Datum[], DonutConfig<Datum>, DonutConfigInterface<Datum>> {
|
|
29
|
+
static selectors = s
|
|
30
|
+
config: DonutConfig<Datum> = new DonutConfig()
|
|
31
|
+
datamodel: SeriesDataModel<Datum> = new SeriesDataModel()
|
|
32
|
+
|
|
33
|
+
arcBackground: Selection<SVGPathElement, unknown, SVGGElement, unknown>
|
|
34
|
+
arcGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>
|
|
35
|
+
centralLabel: Selection<SVGTextElement, unknown, SVGGElement, unknown>
|
|
36
|
+
centralSubLabel: Selection<SVGTextElement, unknown, SVGGElement, unknown>
|
|
37
|
+
arcGen = arc<DonutArcAnimState>()
|
|
38
|
+
|
|
39
|
+
events = {
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
constructor (config?: DonutConfigInterface<Datum>) {
|
|
43
|
+
super()
|
|
44
|
+
if (config) this.config.init(config)
|
|
45
|
+
this.arcBackground = this.g.append('path')
|
|
46
|
+
this.arcGroup = this.g.append('g')
|
|
47
|
+
this.centralLabel = this.g.append('text')
|
|
48
|
+
.attr('class', s.centralLabel)
|
|
49
|
+
this.centralSubLabel = this.g.append('text')
|
|
50
|
+
.attr('class', s.centralSubLabel)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get bleed (): Spacing {
|
|
54
|
+
return { top: 0, bottom: 0, left: 0, right: 0 }
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_render (customDuration?: number): void {
|
|
58
|
+
const { config, datamodel, bleed } = this
|
|
59
|
+
|
|
60
|
+
// Wrap data to preserve original indices
|
|
61
|
+
const data: DonutDatum<Datum>[] = datamodel.data
|
|
62
|
+
.map((d, i) => ({
|
|
63
|
+
index: i,
|
|
64
|
+
datum: d,
|
|
65
|
+
}))
|
|
66
|
+
.filter(d => config.showEmptySegments || getNumber(d.datum, config.value, d.index))
|
|
67
|
+
|
|
68
|
+
const duration = isNumber(customDuration) ? customDuration : config.duration
|
|
69
|
+
const outerRadius = config.radius || Math.min(this._width - bleed.left - bleed.right, this._height - bleed.top - bleed.bottom) / 2
|
|
70
|
+
const innerRadius = config.arcWidth === 0 ? 0 : clamp(outerRadius - config.arcWidth, 0, outerRadius - 1)
|
|
71
|
+
|
|
72
|
+
this.arcGen
|
|
73
|
+
.startAngle(d => d.startAngle)
|
|
74
|
+
.endAngle(d => d.endAngle)
|
|
75
|
+
.innerRadius(d => d.innerRadius)
|
|
76
|
+
.outerRadius(d => d.outerRadius)
|
|
77
|
+
.padAngle(d => d.padAngle)
|
|
78
|
+
.cornerRadius(config.cornerRadius)
|
|
79
|
+
|
|
80
|
+
const pieGen = pie<DonutDatum<Datum>>()
|
|
81
|
+
.startAngle(config.angleRange?.[0] ?? 0)
|
|
82
|
+
.endAngle(config.angleRange?.[1] ?? 2 * Math.PI)
|
|
83
|
+
.padAngle(config.padAngle)
|
|
84
|
+
.value(d => getNumber(d.datum, config.value, d.index) || 0)
|
|
85
|
+
.sort(config.sortFunction)
|
|
86
|
+
|
|
87
|
+
this.arcGroup.attr('transform', `translate(${this._width / 2},${this._height / 2})`)
|
|
88
|
+
|
|
89
|
+
const arcData: DonutArcDatum<Datum>[] = pieGen(data).map(d => {
|
|
90
|
+
const arc = {
|
|
91
|
+
...d,
|
|
92
|
+
data: d.data.datum,
|
|
93
|
+
index: d.data.index,
|
|
94
|
+
innerRadius,
|
|
95
|
+
outerRadius,
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (config.showEmptySegments && d.endAngle - d.startAngle - d.padAngle <= Number.EPSILON) {
|
|
99
|
+
arc.endAngle = d.startAngle + Math.max(config.emptySegmentAngle, config.padAngle)
|
|
100
|
+
arc.padAngle = d.padAngle / 2
|
|
101
|
+
}
|
|
102
|
+
return arc
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
// Arc segments
|
|
106
|
+
const arcsSelection = this.arcGroup
|
|
107
|
+
.selectAll<SVGPathElement, DonutArcDatum<Datum>>(`.${s.segment}`)
|
|
108
|
+
.data(arcData, (d: DonutArcDatum<Datum>) => config.id(d.data, d.index))
|
|
109
|
+
|
|
110
|
+
const arcsEnter = arcsSelection.enter().append('path')
|
|
111
|
+
.attr('class', s.segment)
|
|
112
|
+
.call(createArc, config)
|
|
113
|
+
|
|
114
|
+
const arcsMerged = arcsSelection.merge(arcsEnter)
|
|
115
|
+
arcsMerged.call(updateArc, config, this.arcGen, duration)
|
|
116
|
+
arcsMerged.sort((a, b) => b.value - a.value)
|
|
117
|
+
|
|
118
|
+
arcsSelection.exit<DonutArcDatum<Datum>>()
|
|
119
|
+
.attr('class', s.segmentExit)
|
|
120
|
+
.call(removeArc, duration)
|
|
121
|
+
|
|
122
|
+
// Label
|
|
123
|
+
this.centralLabel
|
|
124
|
+
.attr('transform', `translate(${this._width / 2},${this._height / 2})`)
|
|
125
|
+
.attr('dy', config.centralSubLabel ? '-0.55em' : null)
|
|
126
|
+
.text(config.centralLabel ?? null)
|
|
127
|
+
|
|
128
|
+
this.centralSubLabel
|
|
129
|
+
.attr('transform', `translate(${this._width / 2},${this._height / 2})`)
|
|
130
|
+
.attr('dy', config.centralLabel ? '0.55em' : null)
|
|
131
|
+
.text(config.centralSubLabel ?? null)
|
|
132
|
+
|
|
133
|
+
if (config.centralSubLabelWrap) wrapSVGText(this.centralSubLabel, innerRadius * 1.9)
|
|
134
|
+
|
|
135
|
+
// Background
|
|
136
|
+
this.arcBackground.attr('class', s.background)
|
|
137
|
+
.attr('visibility', config.showBackground ? null : 'hidden')
|
|
138
|
+
.attr('transform', `translate(${this._width / 2},${this._height / 2})`)
|
|
139
|
+
|
|
140
|
+
smartTransition(this.arcBackground, duration)
|
|
141
|
+
.attr('d', this.arcGen({
|
|
142
|
+
startAngle: config.backgroundAngleRange?.[0] ?? config.angleRange?.[0] ?? 0,
|
|
143
|
+
endAngle: config.backgroundAngleRange?.[1] ?? config.angleRange?.[1] ?? 2 * Math.PI,
|
|
144
|
+
innerRadius,
|
|
145
|
+
outerRadius,
|
|
146
|
+
}))
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Selection } from 'd3-selection'
|
|
2
|
+
import { Transition } from 'd3-transition'
|
|
3
|
+
import { interpolate } from 'd3-interpolate'
|
|
4
|
+
import { Arc } from 'd3-shape'
|
|
5
|
+
|
|
6
|
+
// Utils
|
|
7
|
+
import { getColor } from 'utils/color'
|
|
8
|
+
import { smartTransition } from 'utils/d3'
|
|
9
|
+
|
|
10
|
+
// Local Types
|
|
11
|
+
import { DonutArcDatum, DonutArcAnimState } from '../types'
|
|
12
|
+
|
|
13
|
+
// Config
|
|
14
|
+
import { DonutConfig } from '../config'
|
|
15
|
+
|
|
16
|
+
export interface ArcNode extends SVGElement {
|
|
17
|
+
_animState?: DonutArcAnimState;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function createArc<Datum> (
|
|
21
|
+
selection: Selection<SVGPathElement, DonutArcDatum<Datum>, SVGGElement, unknown>,
|
|
22
|
+
config: DonutConfig<Datum>
|
|
23
|
+
): void {
|
|
24
|
+
selection
|
|
25
|
+
.style('fill', d => getColor(d.data, config.color, d.index))
|
|
26
|
+
.style('opacity', 0)
|
|
27
|
+
.each((d, i, els) => {
|
|
28
|
+
const arcNode: ArcNode = els[i]
|
|
29
|
+
const angleCenter = (d.startAngle + d.endAngle) / 2
|
|
30
|
+
const angleHalfWidth = (d.endAngle - d.startAngle) / 2
|
|
31
|
+
arcNode._animState = {
|
|
32
|
+
startAngle: angleCenter - angleHalfWidth,
|
|
33
|
+
endAngle: angleCenter + angleHalfWidth,
|
|
34
|
+
innerRadius: d.innerRadius,
|
|
35
|
+
outerRadius: d.outerRadius,
|
|
36
|
+
padAngle: d.padAngle,
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function updateArc<Datum> (
|
|
42
|
+
selection: Selection<SVGPathElement, DonutArcDatum<Datum>, SVGGElement, unknown>,
|
|
43
|
+
config: DonutConfig<Datum>,
|
|
44
|
+
arcGen: Arc<any, DonutArcAnimState>,
|
|
45
|
+
duration: number
|
|
46
|
+
): void {
|
|
47
|
+
selection
|
|
48
|
+
.style('transition', `fill ${duration}ms`) // Animate color with CSS because we're using CSS-variables
|
|
49
|
+
.style('fill', d => getColor(d.data, config.color, d.index))
|
|
50
|
+
|
|
51
|
+
const setOpacity = (d: DonutArcDatum<Datum>): number => (config.showEmptySegments || d.value) ? 1 : 0
|
|
52
|
+
if (duration) {
|
|
53
|
+
const transition = smartTransition(selection, duration)
|
|
54
|
+
.style('opacity', setOpacity) as Transition<SVGPathElement, DonutArcDatum<Datum>, SVGGElement, unknown>
|
|
55
|
+
|
|
56
|
+
transition.attrTween('d', (d, i, els) => {
|
|
57
|
+
const arcNode: ArcNode = els[i]
|
|
58
|
+
const nextAnimState: DonutArcAnimState = {
|
|
59
|
+
startAngle: d.startAngle,
|
|
60
|
+
endAngle: d.endAngle,
|
|
61
|
+
innerRadius: d.innerRadius,
|
|
62
|
+
outerRadius: d.outerRadius,
|
|
63
|
+
padAngle: d.padAngle,
|
|
64
|
+
}
|
|
65
|
+
const datum = interpolate(arcNode._animState, nextAnimState)
|
|
66
|
+
|
|
67
|
+
return (t: number): string => {
|
|
68
|
+
arcNode._animState = datum(t)
|
|
69
|
+
return arcGen(arcNode._animState as DonutArcDatum<Datum>)
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
} else {
|
|
73
|
+
selection
|
|
74
|
+
.attr('d', arcGen)
|
|
75
|
+
.style('opacity', setOpacity)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function removeArc<Datum> (
|
|
80
|
+
selection: Selection<SVGPathElement, DonutArcDatum<Datum>, SVGGElement, unknown>,
|
|
81
|
+
duration: number
|
|
82
|
+
): void {
|
|
83
|
+
smartTransition(selection, duration)
|
|
84
|
+
.style('opacity', 0)
|
|
85
|
+
.remove()
|
|
86
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { css, injectGlobal } from '@emotion/css'
|
|
1
|
+
import { css, injectGlobal } from '@emotion/css'
|
|
2
2
|
|
|
3
|
-
const root = css
|
|
3
|
+
export const root = css`
|
|
4
4
|
label: donut-component;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
`
|
|
6
|
+
|
|
7
|
+
export const variables = injectGlobal`
|
|
7
8
|
:root {
|
|
8
9
|
--vis-donut-central-label-font-size: 16px;
|
|
9
10
|
--vis-donut-central-label-text-color: #5b5f6d;
|
|
@@ -33,20 +34,23 @@ const variables = injectGlobal `
|
|
|
33
34
|
--vis-donut-central-sub-label-text-color: var(--vis-dark-donut-central-sub-label-text-color);
|
|
34
35
|
--vis-donut-background-color: var(--vis-dark-donut-background-color);
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
const background = css
|
|
37
|
+
`
|
|
38
|
+
export const background = css`
|
|
38
39
|
label: background;
|
|
39
40
|
fill: var(--vis-donut-background-color);
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
`
|
|
42
|
+
|
|
43
|
+
export const segment = css`
|
|
42
44
|
label: segment;
|
|
43
45
|
stroke-width: var(--vis-donut-segment-stroke-width);
|
|
44
46
|
stroke: var(--vis-donut-segment-stroke-color, var(--vis-donut-background-color));
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
`
|
|
48
|
+
|
|
49
|
+
export const segmentExit = css`
|
|
47
50
|
label: segment-exit;
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
`
|
|
52
|
+
|
|
53
|
+
export const centralLabel = css`
|
|
50
54
|
label: central-label;
|
|
51
55
|
text-anchor: middle;
|
|
52
56
|
dominant-baseline: middle;
|
|
@@ -54,8 +58,9 @@ const centralLabel = css `
|
|
|
54
58
|
font-family: var(--vis-donut-central-label-font-family, var(--vis-font-family));
|
|
55
59
|
font-weight: var(--vis-donut-central-label-font-weight);
|
|
56
60
|
fill: var(--vis-donut-central-label-text-color);
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
`
|
|
62
|
+
|
|
63
|
+
export const centralSubLabel = css`
|
|
59
64
|
label: central-label;
|
|
60
65
|
text-anchor: middle;
|
|
61
66
|
dominant-baseline: middle;
|
|
@@ -63,7 +68,4 @@ const centralSubLabel = css `
|
|
|
63
68
|
font-family: var(--vis-donut-central-sub-label-font-family, var(--vis-font-family));
|
|
64
69
|
font-weight: var(--vis-donut-central-sub-label-font-weight);
|
|
65
70
|
fill: var(--vis-donut-central-sub-label-text-color);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
export { background, centralLabel, centralSubLabel, root, segment, segmentExit, variables };
|
|
69
|
-
//# sourceMappingURL=style.js.map
|
|
71
|
+
`
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PieArcDatum } from 'd3-shape'
|
|
2
|
+
|
|
3
|
+
export type DonutDatum<Datum> = {
|
|
4
|
+
datum: Datum;
|
|
5
|
+
/** Original datum index as in unfiltered data */
|
|
6
|
+
index: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Data type for Donut Arc Generator */
|
|
10
|
+
export interface DonutArcDatum<Datum> extends PieArcDatum<Datum> {
|
|
11
|
+
/** Original datum index as in unfiltered data */
|
|
12
|
+
index: number;
|
|
13
|
+
innerRadius: number;
|
|
14
|
+
outerRadius: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type DonutArcAnimState = { startAngle: number; endAngle: number; innerRadius: number; outerRadius: number; padAngle?: number }
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Config } from 'core/config'
|
|
2
|
+
|
|
3
|
+
export interface FlowLegendConfigInterface {
|
|
4
|
+
/** Custom width of the component. Default: `undefined` */
|
|
5
|
+
customWidth?: number;
|
|
6
|
+
/** Legend items array as string[]. Default: `[]` */
|
|
7
|
+
items?: string[];
|
|
8
|
+
/** Color of the flow line. Default: `undefined` */
|
|
9
|
+
lineColor?: string;
|
|
10
|
+
/** Color of the flow label. Default: `undefined` */
|
|
11
|
+
labelColor?: string;
|
|
12
|
+
/** Font size of flow labels in pixels. Default: `12` */
|
|
13
|
+
labelFontSize?: number;
|
|
14
|
+
/** Arrow symbol. Default: `'▶'` */
|
|
15
|
+
arrowSymbol?: string;
|
|
16
|
+
/** Color of the arrow. Default: `undefined` */
|
|
17
|
+
arrowColor?: string;
|
|
18
|
+
/** Callback function for the legend item click. Default: `undefined` */
|
|
19
|
+
onLegendItemClick?: ((label?: string, i?: number) => void);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class FlowLegendConfig extends Config implements FlowLegendConfigInterface {
|
|
23
|
+
customWidth = undefined
|
|
24
|
+
items = []
|
|
25
|
+
labelFontSize = 12
|
|
26
|
+
lineColor = undefined
|
|
27
|
+
labelColor = undefined
|
|
28
|
+
arrowSymbol = '▶'
|
|
29
|
+
arrowColor = undefined
|
|
30
|
+
onLegendItemClick = undefined
|
|
31
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { select, Selection } from 'd3-selection'
|
|
2
|
+
|
|
3
|
+
// Utils
|
|
4
|
+
import { smartTransition } from 'utils/d3'
|
|
5
|
+
|
|
6
|
+
// Config
|
|
7
|
+
import { FlowLegendConfig, FlowLegendConfigInterface } from './config'
|
|
8
|
+
|
|
9
|
+
// Local Types
|
|
10
|
+
import { FlowLegendItem, FlowLegendItemType } from './types'
|
|
11
|
+
|
|
12
|
+
// Styles
|
|
13
|
+
import * as s from './style'
|
|
14
|
+
|
|
15
|
+
export class FlowLegend {
|
|
16
|
+
div: Selection<HTMLDivElement, unknown, null, undefined>
|
|
17
|
+
element: HTMLElement
|
|
18
|
+
line: Selection<HTMLDivElement, unknown, null, undefined>
|
|
19
|
+
labels: Selection<HTMLDivElement, unknown, null, undefined>
|
|
20
|
+
prevConfig: FlowLegendConfig
|
|
21
|
+
config: FlowLegendConfig
|
|
22
|
+
protected _container: HTMLElement
|
|
23
|
+
|
|
24
|
+
constructor (element: HTMLElement, config?: FlowLegendConfigInterface) {
|
|
25
|
+
this._container = element
|
|
26
|
+
|
|
27
|
+
this.div = select(this._container).append('div').attr('class', s.root)
|
|
28
|
+
this.element = this.div.node()
|
|
29
|
+
|
|
30
|
+
this.line = this.div.append('div')
|
|
31
|
+
this.labels = this.div.append('div').attr('class', s.labels)
|
|
32
|
+
|
|
33
|
+
if (config) this.update(config)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
update (config: FlowLegendConfigInterface): void {
|
|
37
|
+
this.prevConfig = this.config
|
|
38
|
+
this.config = new FlowLegendConfig().init(config)
|
|
39
|
+
this.render()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
render (): void {
|
|
43
|
+
const { config } = this
|
|
44
|
+
if (!config.items.length) return
|
|
45
|
+
|
|
46
|
+
if (config.customWidth) this.div.style('width', `${config.customWidth}px`)
|
|
47
|
+
|
|
48
|
+
// Prepare Data
|
|
49
|
+
const legendData: FlowLegendItem[] = config.items.reduce((acc, label, i) => {
|
|
50
|
+
acc.push({
|
|
51
|
+
text: label,
|
|
52
|
+
index: i,
|
|
53
|
+
type: FlowLegendItemType.Label,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
if (config.arrowSymbol && (acc.length !== config.items.length * 2 - 1)) {
|
|
57
|
+
acc.push({
|
|
58
|
+
text: config.arrowSymbol,
|
|
59
|
+
index: i,
|
|
60
|
+
type: FlowLegendItemType.Symbol,
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
return acc
|
|
64
|
+
}, [])
|
|
65
|
+
|
|
66
|
+
// Draw
|
|
67
|
+
const legendItems = this.labels.selectAll<HTMLDivElement, FlowLegendItem>(`.${s.item}`)
|
|
68
|
+
.data(legendData)
|
|
69
|
+
|
|
70
|
+
const legendItemsEnter = legendItems.enter()
|
|
71
|
+
.append('div')
|
|
72
|
+
.attr('class', s.item)
|
|
73
|
+
.attr('opacity', 0)
|
|
74
|
+
|
|
75
|
+
legendItemsEnter.filter(d => d.type === FlowLegendItemType.Label)
|
|
76
|
+
.on('click', this._onItemClick.bind(this))
|
|
77
|
+
|
|
78
|
+
legendItemsEnter.append('span')
|
|
79
|
+
.attr('class',
|
|
80
|
+
d => d.type === FlowLegendItemType.Symbol
|
|
81
|
+
? s.arrow(config.arrowColor)
|
|
82
|
+
: s.label(config.labelFontSize, config.labelColor)
|
|
83
|
+
)
|
|
84
|
+
.classed(s.clickable, d => d.type === FlowLegendItemType.Label && !!config.onLegendItemClick)
|
|
85
|
+
|
|
86
|
+
const legendItemsMerged = legendItemsEnter.merge(legendItems)
|
|
87
|
+
smartTransition(legendItemsMerged, 500)
|
|
88
|
+
.attr('opacity', 1)
|
|
89
|
+
legendItemsMerged.select('span').html(d => d.text)
|
|
90
|
+
|
|
91
|
+
legendItems.exit().remove()
|
|
92
|
+
|
|
93
|
+
this.line
|
|
94
|
+
.attr('class', s.line(config.lineColor))
|
|
95
|
+
.style('opacity', config.items.length > 1 ? 1 : 0)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
_onItemClick (event: MouseEvent, d: FlowLegendItem): void {
|
|
99
|
+
const { config } = this
|
|
100
|
+
|
|
101
|
+
if (config.onLegendItemClick) config.onLegendItemClick(d.text, d.index)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { css, injectGlobal } from '@emotion/css'
|
|
2
|
-
import { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from '
|
|
1
|
+
import { css, injectGlobal } from '@emotion/css'
|
|
2
|
+
import { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from 'styles/index'
|
|
3
3
|
|
|
4
|
-
const root = css
|
|
4
|
+
export const root = css`
|
|
5
5
|
label: flow-legend-component;
|
|
6
6
|
|
|
7
7
|
position: relative;
|
|
8
8
|
user-select: none;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
`
|
|
10
|
+
|
|
11
|
+
export const globalStyles = injectGlobal`
|
|
11
12
|
:root {
|
|
12
13
|
--vis-flow-legend-label-background: #ffffff;
|
|
13
14
|
--vis-flow-legend-label-color: #71788a;
|
|
@@ -29,8 +30,9 @@ const globalStyles = injectGlobal `
|
|
|
29
30
|
--vis-flow-legend-link-color: var(--vis-dark-flow-legend-link-color);
|
|
30
31
|
--vis-flow-legend-arrow-color: var(--vis-dark-flow-legend-arrow-color);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
`
|
|
34
|
+
|
|
35
|
+
export const line = (lineColor: string): string => css`
|
|
34
36
|
label: line;
|
|
35
37
|
|
|
36
38
|
height: 2px;
|
|
@@ -38,8 +40,9 @@ const line = (lineColor) => css `
|
|
|
38
40
|
background-color: ${lineColor || 'var(--vis-flow-legend-link-color)'};
|
|
39
41
|
position: absolute;
|
|
40
42
|
top: 50%;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
`
|
|
44
|
+
|
|
45
|
+
export const labels = css`
|
|
43
46
|
label: labels;
|
|
44
47
|
|
|
45
48
|
position: relative;
|
|
@@ -47,23 +50,26 @@ const labels = css `
|
|
|
47
50
|
display: flex;
|
|
48
51
|
align-items: center;
|
|
49
52
|
justify-content: space-between;
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
`
|
|
54
|
+
|
|
55
|
+
export const item = css`
|
|
52
56
|
label: item;
|
|
53
57
|
|
|
54
58
|
position: relative;
|
|
55
59
|
max-width: 50px;
|
|
56
60
|
|
|
57
61
|
padding: 10px;
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
`
|
|
63
|
+
|
|
64
|
+
export const clickable = css`
|
|
60
65
|
cursor: pointer;
|
|
61
66
|
|
|
62
67
|
&:hover {
|
|
63
68
|
text-decoration: underline;
|
|
64
69
|
}
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
`
|
|
71
|
+
|
|
72
|
+
export const label = (labelFontSize: number, labelColor: string): string => css`
|
|
67
73
|
label: label;
|
|
68
74
|
|
|
69
75
|
transform: translate(-50%, 0%);
|
|
@@ -74,8 +80,9 @@ const label = (labelFontSize, labelColor) => css `
|
|
|
74
80
|
color: ${labelColor || 'var(--vis-flow-legend-label-color)'};
|
|
75
81
|
display: inline-table;
|
|
76
82
|
text-align: center;
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
`
|
|
84
|
+
|
|
85
|
+
export const arrow = (arrowColor: string): string => css`
|
|
79
86
|
label: arrow;
|
|
80
87
|
|
|
81
88
|
font-family: var(--vis-flow-legend-arrow-font-family, ${UNOVIS_ICON_FONT_FAMILY_DEFAULT});
|
|
@@ -87,7 +94,4 @@ const arrow = (arrowColor) => css `
|
|
|
87
94
|
transform: translate(-25%, 0%);
|
|
88
95
|
display: inline-table;
|
|
89
96
|
text-align: center;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
export { arrow, clickable, globalStyles, item, label, labels, line, root };
|
|
93
|
-
//# sourceMappingURL=style.js.map
|
|
97
|
+
`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { D3BrushEvent } from 'd3-brush'
|
|
2
|
+
import { XYComponentConfigInterface, XYComponentConfig } from 'core/xy-component/config'
|
|
3
|
+
|
|
4
|
+
// Types
|
|
5
|
+
import { FreeBrushMode, FreeBrushSelection } from './types'
|
|
6
|
+
|
|
7
|
+
// We extend partial XY config interface because x and y properties are optional for FreeBrush
|
|
8
|
+
export interface FreeBrushConfigInterface<Datum> extends Partial<XYComponentConfigInterface<Datum>> {
|
|
9
|
+
/** Brush selection mode. X - horizontal, Y - vertical, XY - both. Default: `FreeBrushMode.X` */
|
|
10
|
+
mode?: FreeBrushMode;
|
|
11
|
+
/** Callback function to be called on any Brush event.
|
|
12
|
+
* Default: `(selection: FreeBrushSelection, event: D3BrushEvent<Datum>, userDriven: boolean): void => {}`
|
|
13
|
+
*/
|
|
14
|
+
onBrush?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
|
|
15
|
+
/** Callback function to be called on the Brush start event.
|
|
16
|
+
* Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean): void => {}`
|
|
17
|
+
*/
|
|
18
|
+
onBrushStart?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
|
|
19
|
+
/** Callback function to be called on the Brush move event.
|
|
20
|
+
* Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean): void => {}`
|
|
21
|
+
*/
|
|
22
|
+
onBrushMove?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
|
|
23
|
+
/** Callback function to be called on the Brush end event.
|
|
24
|
+
* Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean)L void => {}`
|
|
25
|
+
*/
|
|
26
|
+
onBrushEnd?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
|
|
27
|
+
/** Width of the Brush handle. Default: `1` */
|
|
28
|
+
handleWidth?: number;
|
|
29
|
+
/** Brush selection in data space, can be used to force set the selection from outside.
|
|
30
|
+
* In case of two dimensional mode, the selection has the following format: `[[xMin, xMax], [yMin, yMax]]`.
|
|
31
|
+
* This config property gets updated on internal brush events. Default: `undefined`
|
|
32
|
+
*/
|
|
33
|
+
selection?: FreeBrushSelection | null | undefined;
|
|
34
|
+
/** Constraint Brush selection to a minimal length in data units. Default: `undefined` */
|
|
35
|
+
selectionMinLength?: number | [number, number];
|
|
36
|
+
/** Automatically hide the brush after selection. Default: `true` */
|
|
37
|
+
autoHide?: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class FreeBrushConfig<Datum> extends XYComponentConfig<Datum> implements FreeBrushConfigInterface<Datum> {
|
|
41
|
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function */
|
|
42
|
+
onBrush = (s: FreeBrushSelection | undefined, e: D3BrushEvent<unknown>, userDriven: boolean): void => {}
|
|
43
|
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function */
|
|
44
|
+
onBrushStart = (s: FreeBrushSelection | undefined, e: D3BrushEvent<unknown>, userDriven: boolean): void => {}
|
|
45
|
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function */
|
|
46
|
+
onBrushMove = (s: FreeBrushSelection | undefined, e: D3BrushEvent<unknown>, userDriven: boolean): void => {}
|
|
47
|
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function */
|
|
48
|
+
onBrushEnd = (s: FreeBrushSelection | undefined, e: D3BrushEvent<unknown>, userDriven: boolean): void => {}
|
|
49
|
+
handleWidth = 1
|
|
50
|
+
selection: FreeBrushSelection | null | undefined = undefined
|
|
51
|
+
selectionMinLength = undefined
|
|
52
|
+
mode: FreeBrushMode = FreeBrushMode.X
|
|
53
|
+
autoHide = true
|
|
54
|
+
}
|