layerchart 2.0.0-next.0 → 2.0.0-next.2
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/dist/actions/movable.d.ts +28 -0
- package/dist/actions/movable.js +91 -0
- package/dist/components/AnnotationLine.svelte +155 -0
- package/dist/components/AnnotationLine.svelte.d.ts +28 -0
- package/dist/components/AnnotationPoint.svelte +121 -0
- package/dist/components/AnnotationPoint.svelte.d.ts +32 -0
- package/dist/components/AnnotationRange.svelte +147 -0
- package/dist/components/AnnotationRange.svelte.d.ts +40 -0
- package/dist/components/Arc.svelte +344 -151
- package/dist/components/Arc.svelte.d.ts +138 -0
- package/dist/components/Area.svelte +165 -149
- package/dist/components/Area.svelte.d.ts +45 -0
- package/dist/components/Axis.svelte +287 -174
- package/dist/components/Axis.svelte.d.ts +116 -0
- package/dist/components/Bar.svelte +163 -107
- package/dist/components/Bar.svelte.d.ts +48 -0
- package/dist/components/Bars.svelte +54 -68
- package/dist/components/Bars.svelte.d.ts +27 -0
- package/dist/components/Blur.svelte +31 -7
- package/dist/components/Blur.svelte.d.ts +23 -21
- package/dist/components/Bounds.svelte +49 -19
- package/dist/components/Bounds.svelte.d.ts +24 -50
- package/dist/components/BrushContext.svelte +296 -168
- package/dist/components/BrushContext.svelte.d.ts +97 -65
- package/dist/components/Calendar.svelte +116 -59
- package/dist/components/Calendar.svelte.d.ts +50 -31
- package/dist/components/Chart.svelte +1289 -398
- package/dist/components/Chart.svelte.d.ts +535 -410
- package/dist/components/ChartClipPath.svelte +37 -15
- package/dist/components/ChartClipPath.svelte.d.ts +21 -19
- package/dist/components/Circle.svelte +124 -85
- package/dist/components/Circle.svelte.d.ts +52 -0
- package/dist/components/CircleClipPath.svelte +76 -16
- package/dist/components/CircleClipPath.svelte.d.ts +46 -0
- package/dist/components/ClipPath.svelte +60 -15
- package/dist/components/ClipPath.svelte.d.ts +40 -27
- package/dist/components/ColorRamp.svelte +75 -9
- package/dist/components/ColorRamp.svelte.d.ts +37 -19
- package/dist/components/ComputedStyles.svelte +17 -5
- package/dist/components/ComputedStyles.svelte.d.ts +11 -19
- package/dist/components/Connector.svelte +149 -0
- package/dist/components/Connector.svelte.d.ts +51 -0
- package/dist/components/Dagre.svelte +211 -122
- package/dist/components/Dagre.svelte.d.ts +119 -56
- package/dist/components/ForceSimulation.svelte +215 -90
- package/dist/components/ForceSimulation.svelte.d.ts +82 -35
- package/dist/components/Frame.svelte +33 -13
- package/dist/components/Frame.svelte.d.ts +13 -17
- package/dist/components/GeoCircle.svelte +29 -16
- package/dist/components/GeoCircle.svelte.d.ts +22 -24
- package/dist/components/GeoContext.svelte +113 -72
- package/dist/components/GeoContext.svelte.d.ts +49 -41
- package/dist/components/GeoEdgeFade.svelte +47 -12
- package/dist/components/GeoEdgeFade.svelte.d.ts +17 -19
- package/dist/components/GeoPath.svelte +157 -127
- package/dist/components/GeoPath.svelte.d.ts +48 -36
- package/dist/components/GeoPoint.svelte +52 -20
- package/dist/components/GeoPoint.svelte.d.ts +25 -22
- package/dist/components/GeoSpline.svelte +75 -26
- package/dist/components/GeoSpline.svelte.d.ts +29 -20
- package/dist/components/GeoTile.svelte +100 -49
- package/dist/components/GeoTile.svelte.d.ts +38 -23
- package/dist/components/GeoVisible.svelte +17 -9
- package/dist/components/GeoVisible.svelte.d.ts +10 -18
- package/dist/components/Graticule.svelte +28 -13
- package/dist/components/Graticule.svelte.d.ts +11 -52
- package/dist/components/Grid.svelte +226 -114
- package/dist/components/Grid.svelte.d.ts +70 -0
- package/dist/components/Group.svelte +132 -105
- package/dist/components/Group.svelte.d.ts +53 -0
- package/dist/components/Highlight.svelte +409 -307
- package/dist/components/Highlight.svelte.d.ts +107 -0
- package/dist/components/Hull.svelte +96 -45
- package/dist/components/Hull.svelte.d.ts +40 -30
- package/dist/components/Labels.svelte +125 -46
- package/dist/components/Labels.svelte.d.ts +70 -27
- package/dist/components/Legend.svelte +374 -190
- package/dist/components/Legend.svelte.d.ts +95 -44
- package/dist/components/Line.svelte +163 -125
- package/dist/components/Line.svelte.d.ts +75 -0
- package/dist/components/LinearGradient.svelte +153 -78
- package/dist/components/LinearGradient.svelte.d.ts +66 -31
- package/dist/components/Link.svelte +160 -104
- package/dist/components/Link.svelte.d.ts +54 -0
- package/dist/components/Marker.svelte +100 -39
- package/dist/components/Marker.svelte.d.ts +59 -27
- package/dist/components/MarkerWrapper.svelte +35 -0
- package/dist/components/MarkerWrapper.svelte.d.ts +18 -0
- package/dist/components/MonthPath.svelte +65 -20
- package/dist/components/MonthPath.svelte.d.ts +23 -17
- package/dist/components/MotionPath.svelte +80 -24
- package/dist/components/MotionPath.svelte.d.ts +46 -27
- package/dist/components/Pack.svelte +53 -17
- package/dist/components/Pack.svelte.d.ts +42 -21
- package/dist/components/Partition.svelte +64 -22
- package/dist/components/Partition.svelte.d.ts +49 -26
- package/dist/components/Pattern.svelte +297 -11
- package/dist/components/Pattern.svelte.d.ts +103 -19
- package/dist/components/Pie.svelte +122 -76
- package/dist/components/Pie.svelte.d.ts +65 -51
- package/dist/components/Point.svelte +20 -9
- package/dist/components/Point.svelte.d.ts +16 -20
- package/dist/components/Points.svelte +148 -137
- package/dist/components/Points.svelte.d.ts +45 -34
- package/dist/components/RadialGradient.svelte +143 -70
- package/dist/components/RadialGradient.svelte.d.ts +69 -31
- package/dist/components/Rect.svelte +121 -102
- package/dist/components/Rect.svelte.d.ts +36 -0
- package/dist/components/RectClipPath.svelte +82 -18
- package/dist/components/RectClipPath.svelte.d.ts +55 -0
- package/dist/components/Rule.svelte +105 -62
- package/dist/components/Rule.svelte.d.ts +40 -19
- package/dist/components/Sankey.svelte +132 -55
- package/dist/components/Sankey.svelte.d.ts +61 -31
- package/dist/components/Spline.svelte +281 -218
- package/dist/components/Spline.svelte.d.ts +95 -0
- package/dist/components/Text.svelte +437 -176
- package/dist/components/Text.svelte.d.ts +130 -0
- package/dist/components/Threshold.svelte +48 -16
- package/dist/components/Threshold.svelte.d.ts +29 -31
- package/dist/components/TileImage.svelte +103 -30
- package/dist/components/TileImage.svelte.d.ts +48 -23
- package/dist/components/TransformContext.svelte +365 -171
- package/dist/components/TransformControls.svelte +50 -26
- package/dist/components/TransformControls.svelte.d.ts +27 -19
- package/dist/components/Tree.svelte +74 -33
- package/dist/components/Tree.svelte.d.ts +42 -30
- package/dist/components/Treemap.svelte +119 -42
- package/dist/components/Treemap.svelte.d.ts +75 -27
- package/dist/components/Voronoi.svelte +106 -75
- package/dist/components/Voronoi.svelte.d.ts +40 -41
- package/dist/components/charts/ArcChart.svelte +464 -0
- package/dist/components/charts/ArcChart.svelte.d.ts +90 -0
- package/dist/components/charts/AreaChart.svelte +450 -393
- package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
- package/dist/components/charts/BarChart.svelte +454 -389
- package/dist/components/charts/BarChart.svelte.d.ts +76 -0
- package/dist/components/charts/ChartAnnotations.svelte +37 -0
- package/dist/components/charts/ChartAnnotations.svelte.d.ts +10 -0
- package/dist/components/charts/DefaultTooltip.svelte +60 -0
- package/dist/components/charts/DefaultTooltip.svelte.d.ts +10 -0
- package/dist/components/charts/LineChart.svelte +369 -314
- package/dist/components/charts/LineChart.svelte.d.ts +53 -0
- package/dist/components/charts/PieChart.svelte +458 -316
- package/dist/components/charts/PieChart.svelte.d.ts +137 -353
- package/dist/components/charts/ScatterChart.svelte +334 -296
- package/dist/components/charts/ScatterChart.svelte.d.ts +39 -0
- package/dist/components/charts/index.d.ts +8 -0
- package/dist/components/charts/index.js +7 -0
- package/dist/components/charts/types.d.ts +253 -0
- package/dist/components/charts/utils.svelte.d.ts +30 -0
- package/dist/components/charts/utils.svelte.js +55 -0
- package/dist/components/index.d.ts +76 -4
- package/dist/components/index.js +76 -5
- package/dist/components/layout/Canvas.svelte +321 -155
- package/dist/components/layout/Canvas.svelte.d.ts +104 -55
- package/dist/components/layout/Html.svelte +82 -42
- package/dist/components/layout/Html.svelte.d.ts +39 -28
- package/dist/components/layout/Layer.svelte +39 -0
- package/dist/components/layout/Layer.svelte.d.ts +17 -0
- package/dist/components/layout/Svg.svelte +122 -70
- package/dist/components/layout/Svg.svelte.d.ts +53 -34
- package/dist/components/layout/WebGL.svelte +135 -0
- package/dist/components/layout/WebGL.svelte.d.ts +50 -0
- package/dist/components/tooltip/Tooltip.svelte +246 -78
- package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
- package/dist/components/tooltip/TooltipContext.svelte +409 -271
- package/dist/components/tooltip/TooltipContext.svelte.d.ts +86 -55
- package/dist/components/tooltip/TooltipHeader.svelte +100 -11
- package/dist/components/tooltip/TooltipHeader.svelte.d.ts +43 -23
- package/dist/components/tooltip/TooltipItem.svelte +167 -27
- package/dist/components/tooltip/TooltipItem.svelte.d.ts +63 -31
- package/dist/components/tooltip/TooltipList.svelte +22 -3
- package/dist/components/tooltip/TooltipList.svelte.d.ts +6 -17
- package/dist/components/tooltip/TooltipSeparator.svelte +27 -1
- package/dist/components/tooltip/TooltipSeparator.svelte.d.ts +6 -15
- package/dist/components/tooltip/index.d.ts +6 -0
- package/dist/components/tooltip/index.js +6 -0
- package/dist/components/tooltip/tooltipMetaContext.d.ts +79 -0
- package/dist/components/tooltip/tooltipMetaContext.js +139 -0
- package/dist/components/types.d.ts +1 -0
- package/dist/components/types.js +1 -0
- package/dist/docs/Blockquote.svelte.d.ts +18 -14
- package/dist/docs/Code.svelte.d.ts +26 -22
- package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
- package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
- package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
- package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
- package/dist/docs/CurveMenuField.svelte +14 -3
- package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
- package/dist/docs/GeoDebug.svelte +47 -42
- package/dist/docs/GeoDebug.svelte.d.ts +4 -16
- package/dist/docs/Header1.svelte.d.ts +27 -16
- package/dist/docs/Json.svelte.d.ts +20 -16
- package/dist/docs/Layout.svelte.d.ts +18 -13
- package/dist/docs/Link.svelte.d.ts +33 -21
- package/dist/docs/PathDataMenuField.svelte +14 -10
- package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
- package/dist/docs/Preview.svelte +20 -7
- package/dist/docs/Preview.svelte.d.ts +12 -22
- package/dist/docs/TilesetField.svelte.d.ts +21 -17
- package/dist/docs/TransformDebug.svelte +5 -6
- package/dist/docs/TransformDebug.svelte.d.ts +18 -14
- package/dist/docs/ViewSourceButton.svelte.d.ts +21 -17
- package/dist/types/d3-shape-extentions.d.ts +7 -0
- package/dist/utils/afterTick.d.ts +5 -0
- package/dist/utils/afterTick.js +8 -0
- package/dist/utils/arcText.svelte.d.ts +57 -0
- package/dist/utils/arcText.svelte.js +262 -0
- package/dist/utils/array.d.ts +9 -1
- package/dist/utils/array.js +13 -0
- package/dist/utils/attributes.d.ts +29 -0
- package/dist/utils/attributes.js +40 -0
- package/dist/utils/canvas.js +47 -10
- package/dist/utils/chart.d.ts +78 -0
- package/dist/utils/chart.js +512 -0
- package/dist/utils/color.d.ts +1 -0
- package/dist/utils/color.js +8 -0
- package/dist/utils/common.d.ts +3 -5
- package/dist/utils/common.js +3 -2
- package/dist/utils/connectorUtils.d.ts +21 -0
- package/dist/utils/connectorUtils.js +111 -0
- package/dist/utils/createId.d.ts +7 -0
- package/dist/utils/createId.js +9 -0
- package/dist/utils/debug.d.ts +1 -0
- package/dist/utils/debug.js +84 -0
- package/dist/utils/filterObject.d.ts +9 -0
- package/dist/utils/filterObject.js +12 -0
- package/dist/utils/graph/dagre.d.ts +34 -0
- package/dist/utils/graph/dagre.js +78 -0
- package/dist/utils/graph/dagre.test.d.ts +1 -0
- package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
- package/dist/utils/graph/sankey.d.ts +28 -0
- package/dist/utils/{graph.js → graph/sankey.js} +13 -41
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/key.svelte.d.ts +3 -0
- package/dist/utils/key.svelte.js +11 -0
- package/dist/utils/legendPayload.d.ts +7 -0
- package/dist/utils/legendPayload.js +8 -0
- package/dist/utils/motion.svelte.d.ts +140 -0
- package/dist/utils/motion.svelte.js +180 -0
- package/dist/utils/motion.test.d.ts +1 -0
- package/dist/utils/motion.test.js +213 -0
- package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
- package/dist/utils/rect.svelte.js +105 -0
- package/dist/utils/scales.svelte.d.ts +90 -0
- package/dist/utils/{scales.js → scales.svelte.js} +100 -39
- package/dist/utils/stack.d.ts +2 -3
- package/dist/utils/stack.js +1 -1
- package/dist/utils/string.js +87 -0
- package/dist/utils/ticks.d.ts +8 -2
- package/dist/utils/ticks.js +28 -0
- package/dist/utils/ticks.test.d.ts +1 -0
- package/dist/utils/ticks.test.js +67 -0
- package/dist/utils/types.d.ts +81 -0
- package/package.json +25 -24
- package/dist/components/ChartContext.svelte +0 -295
- package/dist/components/ChartContext.svelte.d.ts +0 -139
- package/dist/components/TransformContext.svelte.d.ts +0 -158
- package/dist/stores/motionStore.d.ts +0 -30
- package/dist/stores/motionStore.js +0 -62
- package/dist/utils/graph.d.ts +0 -37
- package/dist/utils/rect.js +0 -107
- package/dist/utils/scales.d.ts +0 -66
- /package/dist/{utils/graph.test.d.ts → components/charts/types.js} +0 -0
|
@@ -1,8 +1,41 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Placement } from './types.js';
|
|
3
|
+
|
|
4
|
+
type Actions = 'zoomIn' | 'zoomOut' | 'center' | 'reset' | 'scrollMode';
|
|
5
|
+
|
|
6
|
+
export type TransformControlsPropsWithoutHTML = {
|
|
7
|
+
/**
|
|
8
|
+
* @default 'top-right'
|
|
9
|
+
*/
|
|
10
|
+
placement?: Placement;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @default 'vertical'
|
|
14
|
+
*/
|
|
15
|
+
orientation?: 'horizontal' | 'vertical';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @default 'md'
|
|
19
|
+
*/
|
|
20
|
+
size?: ComponentProps<Button>['size'];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @default ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode']
|
|
24
|
+
*/
|
|
25
|
+
show?: Actions[];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type TransformControlsProps = TransformControlsPropsWithoutHTML &
|
|
29
|
+
Without<HTMLAttributes<HTMLElement>, TransformControlsPropsWithoutHTML>;
|
|
30
|
+
</script>
|
|
31
|
+
|
|
1
32
|
<script lang="ts">
|
|
2
33
|
import { type ComponentProps } from 'svelte';
|
|
3
34
|
import { Button, Icon, MenuButton, Tooltip } from 'svelte-ux';
|
|
4
35
|
import { cls } from '@layerstack/tailwind';
|
|
5
36
|
|
|
37
|
+
// TODO: maybe we include the icons as I think importing them like this
|
|
38
|
+
// will bog down the dev server
|
|
6
39
|
import {
|
|
7
40
|
mdiArrowULeftTop,
|
|
8
41
|
mdiMagnifyPlusOutline,
|
|
@@ -14,27 +47,19 @@
|
|
|
14
47
|
mdiCancel,
|
|
15
48
|
} from '@mdi/js';
|
|
16
49
|
|
|
17
|
-
import {
|
|
50
|
+
import { getTransformContext } from './TransformContext.svelte';
|
|
51
|
+
import type { Without } from '../utils/types.js';
|
|
52
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
18
53
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
| 'bottom-left'
|
|
27
|
-
| 'bottom'
|
|
28
|
-
| 'bottom-right';
|
|
29
|
-
|
|
30
|
-
export let placement: Placement = 'top-right';
|
|
31
|
-
export let orientation: 'horizontal' | 'vertical' = 'vertical';
|
|
32
|
-
export let size: ComponentProps<Button>['size'] = 'md';
|
|
33
|
-
|
|
34
|
-
type Actions = 'zoomIn' | 'zoomOut' | 'center' | 'reset' | 'scrollMode';
|
|
35
|
-
export let show: Actions[] = ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode'];
|
|
54
|
+
let {
|
|
55
|
+
placement = 'top-right',
|
|
56
|
+
orientation = 'vertical',
|
|
57
|
+
size = 'md',
|
|
58
|
+
show = ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode'],
|
|
59
|
+
class: className,
|
|
60
|
+
}: TransformControlsProps = $props();
|
|
36
61
|
|
|
37
|
-
|
|
62
|
+
const menuPlacementByOrientationAndPlacement = $derived({
|
|
38
63
|
horizontal: {
|
|
39
64
|
'top-left': 'bottom-end',
|
|
40
65
|
top: 'bottom-end',
|
|
@@ -57,13 +82,12 @@
|
|
|
57
82
|
bottom: 'right-end',
|
|
58
83
|
'bottom-right': 'left-end',
|
|
59
84
|
},
|
|
60
|
-
} as const;
|
|
85
|
+
} as const);
|
|
61
86
|
|
|
62
|
-
const transform =
|
|
63
|
-
const scrollMode = transform.scrollMode;
|
|
87
|
+
const transform = getTransformContext();
|
|
64
88
|
</script>
|
|
65
89
|
|
|
66
|
-
<!-- svelte-ignore
|
|
90
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
67
91
|
<div
|
|
68
92
|
class={cls(
|
|
69
93
|
'bg-surface-300/50 border rounded-full m-1 backdrop-blur-sm z-10 flex',
|
|
@@ -79,9 +103,9 @@
|
|
|
79
103
|
bottom: 'absolute bottom-0 left-1/2 -translate-x-1/2',
|
|
80
104
|
'bottom-right': 'absolute bottom-0 right-0',
|
|
81
105
|
}[placement],
|
|
82
|
-
|
|
106
|
+
className
|
|
83
107
|
)}
|
|
84
|
-
|
|
108
|
+
ondblclick={(e) => {
|
|
85
109
|
// Stop from propagating to TransformContext
|
|
86
110
|
e.stopPropagation();
|
|
87
111
|
}}
|
|
@@ -142,7 +166,7 @@
|
|
|
142
166
|
menuProps={{ placement: menuPlacementByOrientationAndPlacement[orientation][placement] }}
|
|
143
167
|
menuIcon={null}
|
|
144
168
|
{size}
|
|
145
|
-
value={
|
|
169
|
+
value={transform.scrollMode}
|
|
146
170
|
on:change={(e) => transform.setScrollMode(e.detail.value)}
|
|
147
171
|
class="text-surface-content"
|
|
148
172
|
>
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import type { Placement } from './types.js';
|
|
2
|
+
type Actions = 'zoomIn' | 'zoomOut' | 'center' | 'reset' | 'scrollMode';
|
|
3
|
+
export type TransformControlsPropsWithoutHTML = {
|
|
4
|
+
/**
|
|
5
|
+
* @default 'top-right'
|
|
6
|
+
*/
|
|
7
|
+
placement?: Placement;
|
|
8
|
+
/**
|
|
9
|
+
* @default 'vertical'
|
|
10
|
+
*/
|
|
11
|
+
orientation?: 'horizontal' | 'vertical';
|
|
12
|
+
/**
|
|
13
|
+
* @default 'md'
|
|
14
|
+
*/
|
|
15
|
+
size?: ComponentProps<Button>['size'];
|
|
16
|
+
/**
|
|
17
|
+
* @default ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode']
|
|
18
|
+
*/
|
|
19
|
+
show?: Actions[];
|
|
14
20
|
};
|
|
15
|
-
export type TransformControlsProps =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
+
export type TransformControlsProps = TransformControlsPropsWithoutHTML & Without<HTMLAttributes<HTMLElement>, TransformControlsPropsWithoutHTML>;
|
|
22
|
+
import { type ComponentProps } from 'svelte';
|
|
23
|
+
import { Button } from 'svelte-ux';
|
|
24
|
+
import type { Without } from '../utils/types.js';
|
|
25
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
26
|
+
declare const TransformControls: import("svelte").Component<TransformControlsProps, {}, "">;
|
|
27
|
+
type TransformControls = ReturnType<typeof TransformControls>;
|
|
28
|
+
export default TransformControls;
|
|
@@ -1,41 +1,82 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
export type TreeProps<T> = {
|
|
3
|
+
/**
|
|
4
|
+
* Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
|
|
5
|
+
* If unset, layout size is used instead. When a node size is specified, the root node is always
|
|
6
|
+
* positioned at `⟨0, 0⟩`.
|
|
7
|
+
*
|
|
8
|
+
* see: https://github.com/d3/d3-hierarchy#tree_nodeSize
|
|
9
|
+
*/
|
|
10
|
+
nodeSize?: [number, number];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* see: https://github.com/d3/d3-hierarchy#tree_separation
|
|
14
|
+
*/
|
|
15
|
+
separation?: (a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number;
|
|
16
|
+
|
|
17
|
+
hierarchy?: HierarchyNode<T>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Orientation of the tree layout.
|
|
21
|
+
*
|
|
22
|
+
* @default 'horizontal'
|
|
23
|
+
*/
|
|
24
|
+
orientation?: 'vertical' | 'horizontal';
|
|
25
|
+
|
|
26
|
+
children?: Snippet<[{ nodes: HierarchyPointNode<any>[]; links: HierarchyPointLink<any>[] }]>;
|
|
27
|
+
};
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<script lang="ts" generics="T">
|
|
31
|
+
import {
|
|
32
|
+
type HierarchyPointNode,
|
|
33
|
+
tree as d3Tree,
|
|
34
|
+
type HierarchyPointLink,
|
|
35
|
+
type HierarchyNode,
|
|
36
|
+
} from 'd3-hierarchy';
|
|
37
|
+
import type { Snippet } from 'svelte';
|
|
38
|
+
import { getChartContext } from './Chart.svelte';
|
|
39
|
+
|
|
40
|
+
let {
|
|
41
|
+
nodeSize,
|
|
42
|
+
separation,
|
|
43
|
+
orientation = 'horizontal',
|
|
44
|
+
children,
|
|
45
|
+
hierarchy,
|
|
46
|
+
}: TreeProps<T> = $props();
|
|
47
|
+
|
|
48
|
+
const ctx = getChartContext();
|
|
49
|
+
|
|
50
|
+
const treeData = $derived.by(() => {
|
|
51
|
+
const _tree = d3Tree<T>().size(
|
|
52
|
+
orientation === 'horizontal' ? [ctx.height, ctx.width] : [ctx.width, ctx.height]
|
|
53
|
+
);
|
|
28
54
|
|
|
29
55
|
if (nodeSize) {
|
|
30
|
-
|
|
56
|
+
_tree.nodeSize(nodeSize);
|
|
31
57
|
}
|
|
58
|
+
|
|
32
59
|
if (separation) {
|
|
33
|
-
|
|
60
|
+
_tree.separation(separation);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (hierarchy) {
|
|
64
|
+
const h = hierarchy.copy();
|
|
65
|
+
const treeData = _tree(h);
|
|
66
|
+
return {
|
|
67
|
+
links: treeData.links(),
|
|
68
|
+
nodes: treeData.descendants(),
|
|
69
|
+
};
|
|
34
70
|
}
|
|
35
|
-
}
|
|
36
71
|
|
|
37
|
-
|
|
38
|
-
|
|
72
|
+
return {
|
|
73
|
+
links: [],
|
|
74
|
+
nodes: [],
|
|
75
|
+
};
|
|
76
|
+
});
|
|
39
77
|
</script>
|
|
40
78
|
|
|
41
|
-
|
|
79
|
+
{@render children?.({
|
|
80
|
+
nodes: treeData.nodes,
|
|
81
|
+
links: treeData.links,
|
|
82
|
+
})}
|
|
@@ -1,32 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
1
|
+
export type TreeProps<T> = {
|
|
2
|
+
/**
|
|
3
|
+
* Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
|
|
4
|
+
* If unset, layout size is used instead. When a node size is specified, the root node is always
|
|
5
|
+
* positioned at `⟨0, 0⟩`.
|
|
6
|
+
*
|
|
7
|
+
* see: https://github.com/d3/d3-hierarchy#tree_nodeSize
|
|
8
|
+
*/
|
|
9
|
+
nodeSize?: [number, number];
|
|
10
|
+
/**
|
|
11
|
+
* see: https://github.com/d3/d3-hierarchy#tree_separation
|
|
12
|
+
*/
|
|
13
|
+
separation?: (a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number;
|
|
14
|
+
hierarchy?: HierarchyNode<T>;
|
|
15
|
+
/**
|
|
16
|
+
* Orientation of the tree layout.
|
|
17
|
+
*
|
|
18
|
+
* @default 'horizontal'
|
|
19
|
+
*/
|
|
20
|
+
orientation?: 'vertical' | 'horizontal';
|
|
21
|
+
children?: Snippet<[{
|
|
22
|
+
nodes: HierarchyPointNode<any>[];
|
|
23
|
+
links: HierarchyPointLink<any>[];
|
|
24
|
+
}]>;
|
|
26
25
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
import { type HierarchyPointNode, type HierarchyPointLink, type HierarchyNode } from 'd3-hierarchy';
|
|
27
|
+
import type { Snippet } from 'svelte';
|
|
28
|
+
declare class __sveltets_Render<T> {
|
|
29
|
+
props(): TreeProps<T>;
|
|
30
|
+
events(): {};
|
|
31
|
+
slots(): {};
|
|
32
|
+
bindings(): "";
|
|
33
|
+
exports(): {};
|
|
31
34
|
}
|
|
32
|
-
|
|
35
|
+
interface $$IsomorphicComponent {
|
|
36
|
+
new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
37
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
38
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
39
|
+
<T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
40
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
41
|
+
}
|
|
42
|
+
declare const Tree: $$IsomorphicComponent;
|
|
43
|
+
type Tree<T> = InstanceType<typeof Tree<T>>;
|
|
44
|
+
export default Tree;
|
|
@@ -1,4 +1,78 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
export type TreemapProps<T> = {
|
|
3
|
+
/**
|
|
4
|
+
* The tile function to use for the treemap layout.
|
|
5
|
+
*
|
|
6
|
+
* @default treemapSquarify
|
|
7
|
+
*/
|
|
8
|
+
tile?:
|
|
9
|
+
| typeof treemapSquarify
|
|
10
|
+
| 'binary'
|
|
11
|
+
| 'squarify'
|
|
12
|
+
| 'resquarify'
|
|
13
|
+
| 'dice'
|
|
14
|
+
| 'slice'
|
|
15
|
+
| 'sliceDice';
|
|
16
|
+
/**
|
|
17
|
+
* The padding between nodes.
|
|
18
|
+
*
|
|
19
|
+
* @default 0
|
|
20
|
+
*/
|
|
21
|
+
padding?: number;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The inner padding between nodes.
|
|
25
|
+
*
|
|
26
|
+
* @default 0
|
|
27
|
+
*/
|
|
28
|
+
paddingInner?: number;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The outer padding between nodes.
|
|
32
|
+
*
|
|
33
|
+
* @default 0
|
|
34
|
+
*/
|
|
35
|
+
paddingOuter?: number;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The top padding between nodes.
|
|
39
|
+
*
|
|
40
|
+
* @default 0
|
|
41
|
+
*/
|
|
42
|
+
paddingTop?: number;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The bottom padding between nodes.
|
|
46
|
+
*
|
|
47
|
+
* @default 0
|
|
48
|
+
*/
|
|
49
|
+
paddingBottom?: number;
|
|
50
|
+
/**
|
|
51
|
+
* The left padding between nodes.
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
paddingLeft?: number;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The right padding between nodes.
|
|
58
|
+
*
|
|
59
|
+
*/
|
|
60
|
+
paddingRight?: number;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The selected node.
|
|
64
|
+
*
|
|
65
|
+
* @default null
|
|
66
|
+
*/
|
|
67
|
+
selected?: HierarchyRectangularNode<T> | null;
|
|
68
|
+
|
|
69
|
+
hierarchy?: HierarchyNode<T>;
|
|
70
|
+
|
|
71
|
+
children?: Snippet<[{ nodes: HierarchyRectangularNode<T>[] }]>;
|
|
72
|
+
};
|
|
73
|
+
</script>
|
|
74
|
+
|
|
75
|
+
<script lang="ts" generics="T">
|
|
2
76
|
import {
|
|
3
77
|
treemap as d3treemap,
|
|
4
78
|
treemapBinary,
|
|
@@ -9,33 +83,29 @@
|
|
|
9
83
|
treemapSquarify,
|
|
10
84
|
type HierarchyNode,
|
|
11
85
|
type HierarchyRectangularNode,
|
|
12
|
-
type TreemapLayout,
|
|
13
86
|
} from 'd3-hierarchy';
|
|
14
87
|
|
|
15
|
-
import { chartContext } from './ChartContext.svelte';
|
|
16
88
|
import { aspectTile } from '../utils/treemap.js';
|
|
89
|
+
import { getChartContext } from './Chart.svelte';
|
|
90
|
+
import type { Snippet } from 'svelte';
|
|
91
|
+
|
|
92
|
+
let {
|
|
93
|
+
hierarchy,
|
|
94
|
+
tile = treemapSquarify,
|
|
95
|
+
padding = 0,
|
|
96
|
+
paddingInner = 0,
|
|
97
|
+
paddingOuter = 0,
|
|
98
|
+
paddingTop = 0,
|
|
99
|
+
paddingBottom = 0,
|
|
100
|
+
paddingLeft,
|
|
101
|
+
paddingRight,
|
|
102
|
+
selected = $bindable(null),
|
|
103
|
+
children,
|
|
104
|
+
}: TreemapProps<T> = $props();
|
|
17
105
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
| typeof treemapSquarify
|
|
22
|
-
| 'binary'
|
|
23
|
-
| 'squarify'
|
|
24
|
-
| 'resquarify'
|
|
25
|
-
| 'dice'
|
|
26
|
-
| 'slice'
|
|
27
|
-
| 'sliceDice' = treemapSquarify;
|
|
28
|
-
export let padding = 0;
|
|
29
|
-
export let paddingInner = 0;
|
|
30
|
-
export let paddingOuter = 0;
|
|
31
|
-
export let paddingTop = 0;
|
|
32
|
-
export let paddingBottom = 0;
|
|
33
|
-
export let paddingLeft: number | undefined = undefined;
|
|
34
|
-
export let paddingRight: number | undefined = undefined;
|
|
35
|
-
|
|
36
|
-
export let selected: HierarchyRectangularNode<any> | null | undefined = null;
|
|
37
|
-
|
|
38
|
-
$: tileFunc =
|
|
106
|
+
const ctx = getChartContext();
|
|
107
|
+
|
|
108
|
+
const tileFunc = $derived(
|
|
39
109
|
tile === 'squarify'
|
|
40
110
|
? treemapSquarify
|
|
41
111
|
: tile === 'resquarify'
|
|
@@ -48,41 +118,48 @@
|
|
|
48
118
|
? treemapSlice
|
|
49
119
|
: tile === 'sliceDice'
|
|
50
120
|
? treemapSliceDice
|
|
51
|
-
: tile
|
|
121
|
+
: tile
|
|
122
|
+
);
|
|
52
123
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.
|
|
57
|
-
.tile(aspectTile(tileFunc, $width, $height));
|
|
124
|
+
const treemap = $derived.by(() => {
|
|
125
|
+
const _treemap = d3treemap<T>()
|
|
126
|
+
.size([ctx.width, ctx.height])
|
|
127
|
+
.tile(aspectTile(tileFunc, ctx.width, ctx.height));
|
|
58
128
|
|
|
59
129
|
if (padding) {
|
|
60
|
-
|
|
130
|
+
_treemap.padding(padding);
|
|
61
131
|
}
|
|
132
|
+
|
|
62
133
|
if (paddingInner) {
|
|
63
|
-
|
|
134
|
+
_treemap.paddingInner(paddingInner);
|
|
64
135
|
}
|
|
136
|
+
|
|
65
137
|
if (paddingOuter) {
|
|
66
|
-
|
|
138
|
+
_treemap.paddingOuter(paddingOuter);
|
|
67
139
|
}
|
|
140
|
+
|
|
68
141
|
if (paddingTop) {
|
|
69
|
-
|
|
142
|
+
_treemap.paddingTop(paddingTop);
|
|
70
143
|
}
|
|
144
|
+
|
|
71
145
|
if (paddingBottom) {
|
|
72
|
-
|
|
146
|
+
_treemap.paddingBottom(paddingBottom);
|
|
73
147
|
}
|
|
148
|
+
|
|
74
149
|
if (paddingLeft) {
|
|
75
|
-
|
|
150
|
+
_treemap.paddingLeft(paddingLeft);
|
|
76
151
|
}
|
|
77
152
|
if (paddingRight) {
|
|
78
|
-
|
|
153
|
+
_treemap.paddingRight(paddingRight);
|
|
79
154
|
}
|
|
80
|
-
|
|
155
|
+
return _treemap;
|
|
156
|
+
});
|
|
81
157
|
|
|
82
|
-
|
|
158
|
+
const treemapData = $derived(hierarchy ? treemap(hierarchy) : null);
|
|
83
159
|
|
|
84
|
-
|
|
85
|
-
|
|
160
|
+
$effect.pre(() => {
|
|
161
|
+
selected = treemapData;
|
|
162
|
+
});
|
|
86
163
|
</script>
|
|
87
164
|
|
|
88
|
-
|
|
165
|
+
{@render children?.({ nodes: treemapData ? treemapData.descendants() : [] })}
|
|
@@ -1,29 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
export type TreemapProps<T> = {
|
|
2
|
+
/**
|
|
3
|
+
* The tile function to use for the treemap layout.
|
|
4
|
+
*
|
|
5
|
+
* @default treemapSquarify
|
|
6
|
+
*/
|
|
7
|
+
tile?: typeof treemapSquarify | 'binary' | 'squarify' | 'resquarify' | 'dice' | 'slice' | 'sliceDice';
|
|
8
|
+
/**
|
|
9
|
+
* The padding between nodes.
|
|
10
|
+
*
|
|
11
|
+
* @default 0
|
|
12
|
+
*/
|
|
13
|
+
padding?: number;
|
|
14
|
+
/**
|
|
15
|
+
* The inner padding between nodes.
|
|
16
|
+
*
|
|
17
|
+
* @default 0
|
|
18
|
+
*/
|
|
19
|
+
paddingInner?: number;
|
|
20
|
+
/**
|
|
21
|
+
* The outer padding between nodes.
|
|
22
|
+
*
|
|
23
|
+
* @default 0
|
|
24
|
+
*/
|
|
25
|
+
paddingOuter?: number;
|
|
26
|
+
/**
|
|
27
|
+
* The top padding between nodes.
|
|
28
|
+
*
|
|
29
|
+
* @default 0
|
|
30
|
+
*/
|
|
31
|
+
paddingTop?: number;
|
|
32
|
+
/**
|
|
33
|
+
* The bottom padding between nodes.
|
|
34
|
+
*
|
|
35
|
+
* @default 0
|
|
36
|
+
*/
|
|
37
|
+
paddingBottom?: number;
|
|
38
|
+
/**
|
|
39
|
+
* The left padding between nodes.
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
paddingLeft?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The right padding between nodes.
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
paddingRight?: number;
|
|
48
|
+
/**
|
|
49
|
+
* The selected node.
|
|
50
|
+
*
|
|
51
|
+
* @default null
|
|
52
|
+
*/
|
|
53
|
+
selected?: HierarchyRectangularNode<T> | null;
|
|
54
|
+
hierarchy?: HierarchyNode<T>;
|
|
55
|
+
children?: Snippet<[{
|
|
56
|
+
nodes: HierarchyRectangularNode<T>[];
|
|
57
|
+
}]>;
|
|
23
58
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
59
|
+
import { treemapSquarify, type HierarchyNode, type HierarchyRectangularNode } from 'd3-hierarchy';
|
|
60
|
+
import type { Snippet } from 'svelte';
|
|
61
|
+
declare class __sveltets_Render<T> {
|
|
62
|
+
props(): TreemapProps<T>;
|
|
63
|
+
events(): {};
|
|
64
|
+
slots(): {};
|
|
65
|
+
bindings(): "selected";
|
|
66
|
+
exports(): {};
|
|
28
67
|
}
|
|
29
|
-
|
|
68
|
+
interface $$IsomorphicComponent {
|
|
69
|
+
new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
70
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
71
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
72
|
+
<T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
73
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
74
|
+
}
|
|
75
|
+
declare const Treemap: $$IsomorphicComponent;
|
|
76
|
+
type Treemap<T> = InstanceType<typeof Treemap<T>>;
|
|
77
|
+
export default Treemap;
|