layerchart 2.0.0-next.1 → 2.0.0-next.3

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.
Files changed (266) hide show
  1. package/dist/actions/movable.d.ts +28 -0
  2. package/dist/actions/movable.js +91 -0
  3. package/dist/components/AnnotationLine.svelte +143 -0
  4. package/dist/components/AnnotationLine.svelte.d.ts +30 -0
  5. package/dist/components/AnnotationPoint.svelte +119 -0
  6. package/dist/components/AnnotationPoint.svelte.d.ts +34 -0
  7. package/dist/components/AnnotationRange.svelte +147 -0
  8. package/dist/components/AnnotationRange.svelte.d.ts +40 -0
  9. package/dist/components/Arc.svelte +344 -151
  10. package/dist/components/Arc.svelte.d.ts +138 -0
  11. package/dist/components/Area.svelte +165 -149
  12. package/dist/components/Area.svelte.d.ts +45 -0
  13. package/dist/components/Axis.svelte +283 -180
  14. package/dist/components/Axis.svelte.d.ts +117 -0
  15. package/dist/components/Bar.svelte +166 -107
  16. package/dist/components/Bar.svelte.d.ts +51 -0
  17. package/dist/components/Bars.svelte +56 -67
  18. package/dist/components/Bars.svelte.d.ts +27 -0
  19. package/dist/components/Blur.svelte +42 -12
  20. package/dist/components/Blur.svelte.d.ts +23 -21
  21. package/dist/components/Bounds.svelte +49 -19
  22. package/dist/components/Bounds.svelte.d.ts +24 -50
  23. package/dist/components/BrushContext.svelte +296 -168
  24. package/dist/components/BrushContext.svelte.d.ts +97 -65
  25. package/dist/components/Calendar.svelte +116 -59
  26. package/dist/components/Calendar.svelte.d.ts +50 -31
  27. package/dist/components/Chart.svelte +1289 -398
  28. package/dist/components/Chart.svelte.d.ts +535 -410
  29. package/dist/components/ChartClipPath.svelte +37 -15
  30. package/dist/components/ChartClipPath.svelte.d.ts +21 -19
  31. package/dist/components/Circle.svelte +124 -85
  32. package/dist/components/Circle.svelte.d.ts +52 -0
  33. package/dist/components/CircleClipPath.svelte +76 -16
  34. package/dist/components/CircleClipPath.svelte.d.ts +46 -0
  35. package/dist/components/ClipPath.svelte +71 -21
  36. package/dist/components/ClipPath.svelte.d.ts +40 -27
  37. package/dist/components/ColorRamp.svelte +75 -9
  38. package/dist/components/ColorRamp.svelte.d.ts +37 -19
  39. package/dist/components/ComputedStyles.svelte +17 -5
  40. package/dist/components/ComputedStyles.svelte.d.ts +11 -19
  41. package/dist/components/Connector.svelte +149 -0
  42. package/dist/components/Connector.svelte.d.ts +51 -0
  43. package/dist/components/Dagre.svelte +211 -122
  44. package/dist/components/Dagre.svelte.d.ts +119 -56
  45. package/dist/components/ForceSimulation.svelte +215 -90
  46. package/dist/components/ForceSimulation.svelte.d.ts +82 -35
  47. package/dist/components/Frame.svelte +33 -13
  48. package/dist/components/Frame.svelte.d.ts +13 -17
  49. package/dist/components/GeoCircle.svelte +29 -16
  50. package/dist/components/GeoCircle.svelte.d.ts +22 -24
  51. package/dist/components/GeoContext.svelte +113 -72
  52. package/dist/components/GeoContext.svelte.d.ts +49 -41
  53. package/dist/components/GeoEdgeFade.svelte +49 -13
  54. package/dist/components/GeoEdgeFade.svelte.d.ts +17 -19
  55. package/dist/components/GeoPath.svelte +157 -127
  56. package/dist/components/GeoPath.svelte.d.ts +48 -36
  57. package/dist/components/GeoPoint.svelte +52 -20
  58. package/dist/components/GeoPoint.svelte.d.ts +25 -22
  59. package/dist/components/GeoSpline.svelte +75 -26
  60. package/dist/components/GeoSpline.svelte.d.ts +29 -20
  61. package/dist/components/GeoTile.svelte +100 -49
  62. package/dist/components/GeoTile.svelte.d.ts +38 -23
  63. package/dist/components/GeoVisible.svelte +17 -9
  64. package/dist/components/GeoVisible.svelte.d.ts +10 -18
  65. package/dist/components/Graticule.svelte +30 -14
  66. package/dist/components/Graticule.svelte.d.ts +11 -52
  67. package/dist/components/Grid.svelte +230 -117
  68. package/dist/components/Grid.svelte.d.ts +71 -0
  69. package/dist/components/Group.svelte +173 -106
  70. package/dist/components/Group.svelte.d.ts +81 -0
  71. package/dist/components/Highlight.svelte +410 -308
  72. package/dist/components/Highlight.svelte.d.ts +107 -0
  73. package/dist/components/Hull.svelte +97 -46
  74. package/dist/components/Hull.svelte.d.ts +40 -30
  75. package/dist/components/Labels.svelte +127 -47
  76. package/dist/components/Labels.svelte.d.ts +70 -27
  77. package/dist/components/Legend.svelte +374 -190
  78. package/dist/components/Legend.svelte.d.ts +95 -44
  79. package/dist/components/Line.svelte +163 -125
  80. package/dist/components/Line.svelte.d.ts +75 -0
  81. package/dist/components/LinearGradient.svelte +153 -78
  82. package/dist/components/LinearGradient.svelte.d.ts +66 -31
  83. package/dist/components/Link.svelte +160 -104
  84. package/dist/components/Link.svelte.d.ts +54 -0
  85. package/dist/components/Marker.svelte +100 -39
  86. package/dist/components/Marker.svelte.d.ts +59 -27
  87. package/dist/components/MarkerWrapper.svelte +35 -0
  88. package/dist/components/MarkerWrapper.svelte.d.ts +18 -0
  89. package/dist/components/MonthPath.svelte +65 -20
  90. package/dist/components/MonthPath.svelte.d.ts +23 -17
  91. package/dist/components/MotionPath.svelte +80 -24
  92. package/dist/components/MotionPath.svelte.d.ts +46 -27
  93. package/dist/components/Pack.svelte +53 -17
  94. package/dist/components/Pack.svelte.d.ts +42 -21
  95. package/dist/components/Partition.svelte +64 -22
  96. package/dist/components/Partition.svelte.d.ts +49 -26
  97. package/dist/components/Pattern.svelte +297 -11
  98. package/dist/components/Pattern.svelte.d.ts +103 -19
  99. package/dist/components/Pie.svelte +122 -76
  100. package/dist/components/Pie.svelte.d.ts +65 -51
  101. package/dist/components/Point.svelte +20 -9
  102. package/dist/components/Point.svelte.d.ts +16 -20
  103. package/dist/components/Points.svelte +148 -137
  104. package/dist/components/Points.svelte.d.ts +45 -34
  105. package/dist/components/RadialGradient.svelte +143 -70
  106. package/dist/components/RadialGradient.svelte.d.ts +69 -31
  107. package/dist/components/Rect.svelte +121 -102
  108. package/dist/components/Rect.svelte.d.ts +36 -0
  109. package/dist/components/RectClipPath.svelte +82 -18
  110. package/dist/components/RectClipPath.svelte.d.ts +55 -0
  111. package/dist/components/Rule.svelte +107 -63
  112. package/dist/components/Rule.svelte.d.ts +40 -19
  113. package/dist/components/Sankey.svelte +132 -55
  114. package/dist/components/Sankey.svelte.d.ts +61 -31
  115. package/dist/components/Spline.svelte +281 -218
  116. package/dist/components/Spline.svelte.d.ts +95 -0
  117. package/dist/components/Text.svelte +437 -176
  118. package/dist/components/Text.svelte.d.ts +130 -0
  119. package/dist/components/Threshold.svelte +48 -16
  120. package/dist/components/Threshold.svelte.d.ts +29 -31
  121. package/dist/components/TileImage.svelte +103 -30
  122. package/dist/components/TileImage.svelte.d.ts +48 -23
  123. package/dist/components/TransformContext.svelte +365 -171
  124. package/dist/components/TransformControls.svelte +50 -26
  125. package/dist/components/TransformControls.svelte.d.ts +27 -19
  126. package/dist/components/Tree.svelte +74 -33
  127. package/dist/components/Tree.svelte.d.ts +42 -30
  128. package/dist/components/Treemap.svelte +119 -42
  129. package/dist/components/Treemap.svelte.d.ts +75 -27
  130. package/dist/components/Voronoi.svelte +108 -76
  131. package/dist/components/Voronoi.svelte.d.ts +40 -41
  132. package/dist/components/charts/ArcChart.svelte +464 -0
  133. package/dist/components/charts/ArcChart.svelte.d.ts +90 -0
  134. package/dist/components/charts/AreaChart.svelte +450 -393
  135. package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
  136. package/dist/components/charts/BarChart.svelte +454 -389
  137. package/dist/components/charts/BarChart.svelte.d.ts +76 -0
  138. package/dist/components/charts/ChartAnnotations.svelte +37 -0
  139. package/dist/components/charts/ChartAnnotations.svelte.d.ts +10 -0
  140. package/dist/components/charts/DefaultTooltip.svelte +60 -0
  141. package/dist/components/charts/DefaultTooltip.svelte.d.ts +10 -0
  142. package/dist/components/charts/LineChart.svelte +369 -314
  143. package/dist/components/charts/LineChart.svelte.d.ts +53 -0
  144. package/dist/components/charts/PieChart.svelte +458 -316
  145. package/dist/components/charts/PieChart.svelte.d.ts +137 -353
  146. package/dist/components/charts/ScatterChart.svelte +334 -296
  147. package/dist/components/charts/ScatterChart.svelte.d.ts +39 -0
  148. package/dist/components/charts/index.d.ts +8 -0
  149. package/dist/components/charts/index.js +7 -0
  150. package/dist/components/charts/types.d.ts +253 -0
  151. package/dist/components/charts/utils.svelte.d.ts +30 -0
  152. package/dist/components/charts/utils.svelte.js +55 -0
  153. package/dist/components/index.d.ts +76 -4
  154. package/dist/components/index.js +76 -5
  155. package/dist/components/layout/Canvas.svelte +321 -155
  156. package/dist/components/layout/Canvas.svelte.d.ts +104 -55
  157. package/dist/components/layout/Html.svelte +82 -42
  158. package/dist/components/layout/Html.svelte.d.ts +39 -28
  159. package/dist/components/layout/Layer.svelte +39 -0
  160. package/dist/components/layout/Layer.svelte.d.ts +17 -0
  161. package/dist/components/layout/Svg.svelte +122 -70
  162. package/dist/components/layout/Svg.svelte.d.ts +53 -34
  163. package/dist/components/layout/WebGL.svelte +135 -0
  164. package/dist/components/layout/WebGL.svelte.d.ts +50 -0
  165. package/dist/components/tooltip/Tooltip.svelte +246 -78
  166. package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
  167. package/dist/components/tooltip/TooltipContext.svelte +409 -271
  168. package/dist/components/tooltip/TooltipContext.svelte.d.ts +86 -55
  169. package/dist/components/tooltip/TooltipHeader.svelte +100 -11
  170. package/dist/components/tooltip/TooltipHeader.svelte.d.ts +43 -23
  171. package/dist/components/tooltip/TooltipItem.svelte +167 -27
  172. package/dist/components/tooltip/TooltipItem.svelte.d.ts +63 -31
  173. package/dist/components/tooltip/TooltipList.svelte +22 -3
  174. package/dist/components/tooltip/TooltipList.svelte.d.ts +6 -17
  175. package/dist/components/tooltip/TooltipSeparator.svelte +27 -1
  176. package/dist/components/tooltip/TooltipSeparator.svelte.d.ts +6 -15
  177. package/dist/components/tooltip/index.d.ts +6 -0
  178. package/dist/components/tooltip/index.js +6 -0
  179. package/dist/components/tooltip/tooltipMetaContext.d.ts +79 -0
  180. package/dist/components/tooltip/tooltipMetaContext.js +139 -0
  181. package/dist/components/types.d.ts +1 -0
  182. package/dist/components/types.js +1 -0
  183. package/dist/docs/Blockquote.svelte.d.ts +18 -14
  184. package/dist/docs/Code.svelte.d.ts +26 -22
  185. package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
  186. package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
  187. package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
  188. package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
  189. package/dist/docs/CurveMenuField.svelte +14 -3
  190. package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
  191. package/dist/docs/GeoDebug.svelte +47 -42
  192. package/dist/docs/GeoDebug.svelte.d.ts +4 -16
  193. package/dist/docs/Header1.svelte.d.ts +27 -16
  194. package/dist/docs/Json.svelte.d.ts +20 -16
  195. package/dist/docs/Layout.svelte.d.ts +18 -13
  196. package/dist/docs/Link.svelte.d.ts +33 -21
  197. package/dist/docs/PathDataMenuField.svelte +14 -10
  198. package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
  199. package/dist/docs/Preview.svelte +20 -7
  200. package/dist/docs/Preview.svelte.d.ts +12 -22
  201. package/dist/docs/TilesetField.svelte.d.ts +21 -17
  202. package/dist/docs/TransformDebug.svelte +5 -6
  203. package/dist/docs/TransformDebug.svelte.d.ts +18 -14
  204. package/dist/docs/ViewSourceButton.svelte.d.ts +21 -17
  205. package/dist/types/d3-shape-extentions.d.ts +7 -0
  206. package/dist/utils/afterTick.d.ts +5 -0
  207. package/dist/utils/afterTick.js +8 -0
  208. package/dist/utils/arcText.svelte.d.ts +57 -0
  209. package/dist/utils/arcText.svelte.js +262 -0
  210. package/dist/utils/array.d.ts +9 -1
  211. package/dist/utils/array.js +13 -0
  212. package/dist/utils/attributes.d.ts +29 -0
  213. package/dist/utils/attributes.js +40 -0
  214. package/dist/utils/canvas.js +47 -10
  215. package/dist/utils/chart.d.ts +78 -0
  216. package/dist/utils/chart.js +512 -0
  217. package/dist/utils/color.d.ts +1 -0
  218. package/dist/utils/color.js +8 -0
  219. package/dist/utils/common.d.ts +3 -5
  220. package/dist/utils/common.js +3 -2
  221. package/dist/utils/connectorUtils.d.ts +21 -0
  222. package/dist/utils/connectorUtils.js +111 -0
  223. package/dist/utils/createId.d.ts +7 -0
  224. package/dist/utils/createId.js +9 -0
  225. package/dist/utils/debug.d.ts +1 -0
  226. package/dist/utils/debug.js +84 -0
  227. package/dist/utils/filterObject.d.ts +9 -0
  228. package/dist/utils/filterObject.js +12 -0
  229. package/dist/utils/graph/dagre.d.ts +34 -0
  230. package/dist/utils/graph/dagre.js +78 -0
  231. package/dist/utils/graph/dagre.test.d.ts +1 -0
  232. package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
  233. package/dist/utils/graph/sankey.d.ts +28 -0
  234. package/dist/utils/{graph.js → graph/sankey.js} +13 -41
  235. package/dist/utils/index.d.ts +3 -1
  236. package/dist/utils/index.js +3 -1
  237. package/dist/utils/key.svelte.d.ts +3 -0
  238. package/dist/utils/key.svelte.js +11 -0
  239. package/dist/utils/legendPayload.d.ts +7 -0
  240. package/dist/utils/legendPayload.js +8 -0
  241. package/dist/utils/motion.svelte.d.ts +140 -0
  242. package/dist/utils/motion.svelte.js +180 -0
  243. package/dist/utils/motion.test.d.ts +1 -0
  244. package/dist/utils/motion.test.js +213 -0
  245. package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
  246. package/dist/utils/rect.svelte.js +105 -0
  247. package/dist/utils/scales.svelte.d.ts +90 -0
  248. package/dist/utils/{scales.js → scales.svelte.js} +100 -39
  249. package/dist/utils/stack.d.ts +2 -3
  250. package/dist/utils/stack.js +1 -1
  251. package/dist/utils/string.js +87 -0
  252. package/dist/utils/ticks.d.ts +8 -2
  253. package/dist/utils/ticks.js +28 -0
  254. package/dist/utils/ticks.test.d.ts +1 -0
  255. package/dist/utils/ticks.test.js +67 -0
  256. package/dist/utils/types.d.ts +81 -0
  257. package/package.json +21 -19
  258. package/dist/components/ChartContext.svelte +0 -295
  259. package/dist/components/ChartContext.svelte.d.ts +0 -139
  260. package/dist/components/TransformContext.svelte.d.ts +0 -158
  261. package/dist/stores/motionStore.d.ts +0 -30
  262. package/dist/stores/motionStore.js +0 -62
  263. package/dist/utils/graph.d.ts +0 -37
  264. package/dist/utils/rect.js +0 -107
  265. package/dist/utils/scales.d.ts +0 -66
  266. /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 { transformContext } from './TransformContext.svelte';
50
+ import { getTransformContext } from './TransformContext.svelte';
51
+ import type { Without } from '../utils/types.js';
52
+ import type { HTMLAttributes } from 'svelte/elements';
18
53
 
19
- type Placement =
20
- | 'top-left'
21
- | 'top'
22
- | 'top-right'
23
- | 'left'
24
- | 'center'
25
- | 'right'
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
- $: menuPlacementByOrientationAndPlacement = {
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 = transformContext();
63
- const scrollMode = transform.scrollMode;
87
+ const transform = getTransformContext();
64
88
  </script>
65
89
 
66
- <!-- svelte-ignore a11y-no-static-element-interactions -->
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
- $$props.class
106
+ className
83
107
  )}
84
- on:dblclick={(e) => {
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={$scrollMode}
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 { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- placement?: ("bottom" | "left" | "right" | "top" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
6
- orientation?: "horizontal" | "vertical" | undefined;
7
- size?: import("svelte-ux").ButtonSize | undefined;
8
- show?: ("center" | "reset" | "scrollMode" | "zoomIn" | "zoomOut")[] | undefined;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
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 = typeof __propDef.props;
16
- export type TransformControlsEvents = typeof __propDef.events;
17
- export type TransformControlsSlots = typeof __propDef.slots;
18
- export default class TransformControls extends SvelteComponentTyped<TransformControlsProps, TransformControlsEvents, TransformControlsSlots> {
19
- }
20
- export {};
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
- import { type HierarchyPointNode, tree as d3Tree, type TreeLayout } from 'd3-hierarchy';
3
- import { chartContext } from './ChartContext.svelte';
4
-
5
- const { data, width, height } = chartContext();
6
-
7
- /**
8
- * Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
9
- * If unset, layout size is used instead. When a node size is specified, the root node is always
10
- * positioned at `⟨0, 0⟩`.
11
- *
12
- * see: https://github.com/d3/d3-hierarchy#tree_nodeSize
13
- */
14
- export let nodeSize: [number, number] | undefined = undefined;
15
-
16
- /**
17
- * see: https://github.com/d3/d3-hierarchy#tree_separation
18
- */
19
- export let separation:
20
- | ((a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number)
21
- | undefined = undefined;
22
-
23
- export let orientation: 'vertical' | 'horizontal' = 'horizontal';
24
-
25
- let tree: TreeLayout<any>;
26
- $: {
27
- tree = d3Tree().size(orientation === 'horizontal' ? [$height, $width] : [$width, $height]);
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
- tree.nodeSize(nodeSize);
56
+ _tree.nodeSize(nodeSize);
31
57
  }
58
+
32
59
  if (separation) {
33
- tree.separation(separation);
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
- // @ts-expect-error
38
- $: treeData = tree($data);
72
+ return {
73
+ links: [],
74
+ nodes: [],
75
+ };
76
+ });
39
77
  </script>
40
78
 
41
- <slot nodes={treeData.descendants()} links={treeData.links()} />
79
+ {@render children?.({
80
+ nodes: treeData.nodes,
81
+ links: treeData.links,
82
+ })}
@@ -1,32 +1,44 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import { type HierarchyPointNode } from 'd3-hierarchy';
3
- declare const __propDef: {
4
- props: {
5
- /**
6
- * Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
7
- * If unset, layout size is used instead. When a node size is specified, the root node is always
8
- * positioned at `⟨0, 0⟩`.
9
- *
10
- * see: https://github.com/d3/d3-hierarchy#tree_nodeSize
11
- */ nodeSize?: [number, number] | undefined;
12
- /**
13
- * see: https://github.com/d3/d3-hierarchy#tree_separation
14
- */ separation?: ((a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number) | undefined;
15
- orientation?: "vertical" | "horizontal";
16
- };
17
- events: {
18
- [evt: string]: CustomEvent<any>;
19
- };
20
- slots: {
21
- default: {
22
- nodes: HierarchyPointNode<any>[];
23
- links: import("d3-hierarchy").HierarchyPointLink<any>[];
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
- export type TreeProps = typeof __propDef.props;
28
- export type TreeEvents = typeof __propDef.events;
29
- export type TreeSlots = typeof __propDef.slots;
30
- export default class Tree extends SvelteComponentTyped<TreeProps, TreeEvents, TreeSlots> {
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
- export {};
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 { data, width, height } = chartContext();
19
-
20
- export let tile:
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
- let treemap: TreemapLayout<any>;
54
- $: {
55
- treemap = d3treemap()
56
- .size([$width, $height])
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
- treemap.padding(padding);
130
+ _treemap.padding(padding);
61
131
  }
132
+
62
133
  if (paddingInner) {
63
- treemap.paddingInner(paddingInner);
134
+ _treemap.paddingInner(paddingInner);
64
135
  }
136
+
65
137
  if (paddingOuter) {
66
- treemap.paddingOuter(paddingOuter);
138
+ _treemap.paddingOuter(paddingOuter);
67
139
  }
140
+
68
141
  if (paddingTop) {
69
- treemap.paddingTop(paddingTop);
142
+ _treemap.paddingTop(paddingTop);
70
143
  }
144
+
71
145
  if (paddingBottom) {
72
- treemap.paddingBottom(paddingBottom);
146
+ _treemap.paddingBottom(paddingBottom);
73
147
  }
148
+
74
149
  if (paddingLeft) {
75
- treemap.paddingLeft(paddingLeft);
150
+ _treemap.paddingLeft(paddingLeft);
76
151
  }
77
152
  if (paddingRight) {
78
- treemap.paddingRight(paddingRight);
153
+ _treemap.paddingRight(paddingRight);
79
154
  }
80
- }
155
+ return _treemap;
156
+ });
81
157
 
82
- $: treemapData = treemap($data as HierarchyNode<any>);
158
+ const treemapData = $derived(hierarchy ? treemap(hierarchy) : null);
83
159
 
84
- // TODO: Remove selected
85
- $: selected = treemapData; // set initial selection
160
+ $effect.pre(() => {
161
+ selected = treemapData;
162
+ });
86
163
  </script>
87
164
 
88
- <slot nodes={treemapData.descendants()} />
165
+ {@render children?.({ nodes: treemapData ? treemapData.descendants() : [] })}
@@ -1,29 +1,77 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import { treemapSquarify, type HierarchyRectangularNode } from 'd3-hierarchy';
3
- declare const __propDef: {
4
- props: {
5
- tile?: typeof treemapSquarify | "binary" | "squarify" | "resquarify" | "dice" | "slice" | "sliceDice";
6
- padding?: number;
7
- paddingInner?: number;
8
- paddingOuter?: number;
9
- paddingTop?: number;
10
- paddingBottom?: number;
11
- paddingLeft?: number | undefined;
12
- paddingRight?: number | undefined;
13
- selected?: HierarchyRectangularNode<any> | null | undefined;
14
- };
15
- events: {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {
19
- default: {
20
- nodes: HierarchyRectangularNode<any>[];
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
- export type TreemapProps = typeof __propDef.props;
25
- export type TreemapEvents = typeof __propDef.events;
26
- export type TreemapSlots = typeof __propDef.slots;
27
- export default class Treemap extends SvelteComponentTyped<TreemapProps, TreemapEvents, TreemapSlots> {
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
- export {};
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;