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,52 +1,66 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { spring as springStore, tweened as tweenedStore } from 'svelte/motion';
3
- import type { TooltipContextValue } from './tooltip/TooltipContext.svelte';
4
- declare const __propDef: {
5
- props: {
6
- data?: any[] | undefined;
7
- /**
8
- * Range [min,max] in degrees. See also startAngle/endAngle
9
- */ range?: number[];
10
- /**
11
- * Start angle in radians
12
- */ startAngle?: number | undefined;
13
- /**
14
- * End angle in radians
15
- */ endAngle?: number | undefined;
16
- /**
17
- * Define innerRadius.
18
- * value >= 1: discrete value
19
- * value > 0: percent of `outerRadius`
20
- * value < 0: offset of `outerRadius`
21
- * default: yRange min
22
- */ innerRadius?: number | undefined;
23
- /**
24
- * Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
25
- */ outerRadius?: number | undefined;
26
- cornerRadius?: number;
27
- padAngle?: number;
28
- spring?: boolean | Parameters<typeof springStore>[1];
29
- tweened?: boolean | Parameters<typeof tweenedStore>[1];
30
- /**
31
- * Offset all arcs from center
32
- */ offset?: number;
33
- /**
34
- * Tooltip context to setup pointer events to show tooltip for related data
35
- */ tooltip?: TooltipContextValue | undefined;
36
- sort?: ((a: any, b: any) => number) | null | undefined;
37
- };
38
- events: {
39
- [evt: string]: CustomEvent<any>;
40
- };
41
- slots: {
42
- default: {
43
- arcs: import("d3-shape").PieArcDatum<any>[];
44
- };
45
- };
1
+ import { type PieArcDatum } from 'd3-shape';
2
+ export type PiePropsWithoutHTML = {
3
+ data?: any[];
4
+ /**
5
+ * Range [min,max] in degrees. See also startAngle/endAngle
6
+ *
7
+ * @default [0, 360]
8
+ */
9
+ range?: [number, number] | number[];
10
+ /**
11
+ * Start angle in radians
12
+ */
13
+ startAngle?: number;
14
+ /**
15
+ * End angle in radians
16
+ */
17
+ endAngle?: number;
18
+ /**
19
+ * Define innerRadius.
20
+ * value >= 1: discrete value
21
+ * value > 0: percent of `outerRadius`
22
+ * value < 0: offset of `outerRadius`
23
+ * default: yRange min
24
+ */
25
+ innerRadius?: number;
26
+ /**
27
+ * Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
28
+ */
29
+ outerRadius?: number;
30
+ /**
31
+ * Corner radius of the arc
32
+ *
33
+ * @default 0
34
+ */
35
+ cornerRadius?: number;
36
+ /**
37
+ * Angle between the arcs
38
+ *
39
+ * @default 0
40
+ */
41
+ padAngle?: number;
42
+ /**
43
+ * Offset all arcs from center
44
+ *
45
+ * @default 0
46
+ */
47
+ offset?: number;
48
+ /**
49
+ * Tooltip context to setup pointer events to show tooltip for related data
50
+ */
51
+ tooltipContext?: TooltipContextValue;
52
+ /**
53
+ * Sort function to sort the arcs
54
+ */
55
+ sort?: ((a: any, b: any) => number) | null;
56
+ children?: Snippet<[{
57
+ arcs: PieArcDatum<any>[];
58
+ }]>;
59
+ motion?: MotionProp;
46
60
  };
47
- export type PieProps = typeof __propDef.props;
48
- export type PieEvents = typeof __propDef.events;
49
- export type PieSlots = typeof __propDef.slots;
50
- export default class Pie extends SvelteComponentTyped<PieProps, PieEvents, PieSlots> {
51
- }
52
- export {};
61
+ import { type MotionProp } from '../utils/motion.svelte.js';
62
+ import type { TooltipContextValue } from './tooltip/TooltipContext.svelte';
63
+ import type { Snippet } from 'svelte';
64
+ declare const Pie: import("svelte").Component<PiePropsWithoutHTML, {}, "">;
65
+ type Pie = ReturnType<typeof Pie>;
66
+ export default Pie;
@@ -1,14 +1,25 @@
1
- <script lang="ts">
2
- import { chartContext } from './ChartContext.svelte';
1
+ <script lang="ts" module>
2
+ import type { Snippet } from 'svelte';
3
+
4
+ export type PointProps = {
5
+ /**
6
+ * Single data point to translate to x/y
7
+ */
8
+ d: any;
3
9
 
4
- const context = chartContext() as any;
5
- const { xGet, yGet } = context;
10
+ /**
11
+ * Children containing the x and y values
12
+ */
13
+ children?: Snippet<[{ x: number; y: number }]>;
14
+ };
15
+ </script>
16
+
17
+ <script lang="ts">
18
+ import { getChartContext } from './Chart.svelte';
6
19
 
7
- /** Single data point to translate to x/y */
8
- export let d;
20
+ let { d, children }: PointProps = $props();
9
21
 
10
- $: x = $xGet(d);
11
- $: y = $yGet(d);
22
+ const ctx = getChartContext();
12
23
  </script>
13
24
 
14
- <slot {x} {y} />
25
+ {@render children?.({ x: ctx.xGet(d), y: ctx.yGet(d) })}
@@ -1,21 +1,17 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- /** Single data point to translate to x/y */ d: any;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {
10
- default: {
11
- x: any;
12
- y: any;
13
- };
14
- };
1
+ import type { Snippet } from 'svelte';
2
+ export type PointProps = {
3
+ /**
4
+ * Single data point to translate to x/y
5
+ */
6
+ d: any;
7
+ /**
8
+ * Children containing the x and y values
9
+ */
10
+ children?: Snippet<[{
11
+ x: number;
12
+ y: number;
13
+ }]>;
15
14
  };
16
- export type PointProps = typeof __propDef.props;
17
- export type PointEvents = typeof __propDef.events;
18
- export type PointSlots = typeof __propDef.slots;
19
- export default class Point extends SvelteComponentTyped<PointProps, PointEvents, PointSlots> {
20
- }
21
- export {};
15
+ declare const Point: import("svelte").Component<PointProps, {}, "">;
16
+ type Point = ReturnType<typeof Point>;
17
+ export default Point;
@@ -1,79 +1,139 @@
1
- <script lang="ts" context="module">
1
+ <script lang="ts" module>
2
+ import type { CommonStyleProps, Without } from '../utils/types.js';
3
+ import type { ComponentProps, Snippet } from 'svelte';
4
+
2
5
  export type Point = { x: number; y: number; r: number; xValue: any; yValue: any; data: any };
6
+ type Offset = number | ((value: number, context: any) => number) | undefined;
7
+
8
+ export type PointsPropsWithoutHTML = {
9
+ /**
10
+ * Override data instead of using context
11
+ */
12
+ data?: any;
13
+
14
+ /**
15
+ * Override `x` accessor from Chart context
16
+ */
17
+ x?: Accessor;
18
+ /**
19
+ * Override `y` accessor from Chart context
20
+ */
21
+ y?: Accessor;
22
+
23
+ /**
24
+ * Override `r` accessor from Chart context
25
+ *
26
+ * @default 5
27
+ */
28
+ r?: number;
29
+
30
+ /**
31
+ * The offset of the point in the x direction
32
+ */
33
+ offsetX?: Offset;
34
+
35
+ /**
36
+ * The offset of the point in the y direction
37
+ */
38
+ offsetY?: Offset;
39
+
40
+ /**
41
+ * Enable showing links between related points (array x/y accessors)
42
+ *
43
+ * @default false
44
+ */
45
+ links?: boolean | Partial<ComponentProps<typeof Link>>;
46
+
47
+ children?: Snippet<[{ points: Point[] }]>;
48
+ } & CommonStyleProps;
49
+
50
+ export type PointsProps = PointsPropsWithoutHTML &
51
+ Omit<Without<CircleProps, PointsPropsWithoutHTML>, 'ref'>;
3
52
  </script>
4
53
 
5
54
  <script lang="ts">
6
- import { type ComponentProps } from 'svelte';
7
55
  import { extent } from 'd3-array';
8
56
  import { pointRadial } from 'd3-shape';
9
- import { notNull } from '@layerstack/utils';
10
57
 
11
- import { chartContext } from './ChartContext.svelte';
12
- import Circle from './Circle.svelte';
58
+ import Circle, { type CircleProps } from './Circle.svelte';
13
59
  import Link from './Link.svelte';
14
- import { isScaleBand, type AnyScale } from '../utils/scales.js';
60
+ import { isScaleBand, type AnyScale } from '../utils/scales.svelte.js';
15
61
  import { accessor, type Accessor } from '../utils/common.js';
16
-
17
- const context = chartContext() as any;
18
- const {
19
- data: contextData,
20
- x: contextX,
21
- xScale,
22
- xGet,
23
- y: contextY,
24
- yScale,
25
- yGet,
26
- cGet,
27
- rGet,
28
- config,
29
- radial,
30
- } = context;
31
-
32
- type Offset = number | ((value: number, context: any) => number) | undefined;
33
-
34
- /** Override data instead of using context */
35
- export let data: any = undefined;
36
-
37
- /** Override `x` accessor from Chart context */
38
- export let x: Accessor = undefined;
39
- /** Override `y` accessor from Chart context */
40
- export let y: Accessor = undefined;
41
-
42
- export let r = 5;
43
- export let offsetX: Offset = undefined;
44
- export let offsetY: Offset = undefined;
45
-
46
- /** Enable showing links between related points (array x/y accessors) */
47
- export let links: boolean | Partial<ComponentProps<Link>> = false;
48
-
49
- export let fill: string | undefined = undefined;
50
- export let fillOpacity: number | undefined = undefined;
51
- export let stroke: string | undefined = undefined;
52
- export let strokeWidth: number | undefined = undefined;
53
- export let opacity: number | undefined = undefined;
54
-
55
- let className: string | undefined = undefined;
56
- export { className as class };
62
+ import { getChartContext } from './Chart.svelte';
63
+ import { extractLayerProps } from '../utils/attributes.js';
64
+
65
+ const ctx = getChartContext();
66
+
67
+ let {
68
+ data,
69
+ x,
70
+ y,
71
+ r = 5,
72
+ offsetX,
73
+ offsetY,
74
+ links = false,
75
+ fill,
76
+ fillOpacity,
77
+ stroke,
78
+ strokeWidth,
79
+ opacity,
80
+ children,
81
+ ...restProps
82
+ }: PointsProps = $props();
57
83
 
58
84
  function getOffset(value: any, offset: Offset, scale: AnyScale) {
59
85
  if (typeof offset === 'function') {
60
- return offset(value, context);
86
+ return offset(value, ctx);
61
87
  } else if (offset != null) {
62
88
  return offset;
63
- } else if (isScaleBand(scale) && !$radial) {
89
+ } else if (isScaleBand(scale) && !ctx.radial) {
64
90
  return scale.bandwidth() / 2;
65
91
  } else {
66
92
  return 0;
67
93
  }
68
94
  }
69
95
 
70
- $: xAccessor = x ? accessor(x) : $contextX;
71
- $: yAccessor = y ? accessor(y) : $contextY;
96
+ const xAccessor = $derived(x ? accessor(x) : ctx.x);
97
+ const yAccessor = $derived(y ? accessor(y) : ctx.y);
98
+ const pointsData = $derived(data ?? ctx.data);
99
+
100
+ // Pre-calculate common values to avoid redundant calculations
101
+ const getPointObject = (xVal: number, yVal: number, d: any): Point => {
102
+ // Only calculate these scaled values once per point
103
+ const scaledX: number = ctx.xScale(xVal);
104
+ const scaledY: number = ctx.yScale(yVal);
105
+
106
+ return {
107
+ x: scaledX + getOffset(scaledX, offsetX, ctx.xScale),
108
+ y: scaledY + getOffset(scaledY, offsetY, ctx.yScale),
109
+ r: ctx.config.r ? ctx.rGet(d) : r,
110
+ xValue: xVal,
111
+ yValue: yVal,
112
+ data: d,
113
+ };
114
+ };
115
+
116
+ const points = $derived(
117
+ pointsData.flatMap((d: any) => {
118
+ const xValue: number | number[] = xAccessor(d);
119
+ const yValue: number | number[] = yAccessor(d);
120
+
121
+ if (Array.isArray(xValue)) {
122
+ return xValue
123
+ .filter(Boolean)
124
+ .map((xVal: number) => getPointObject(xVal, yValue as number, d));
125
+ } else if (Array.isArray(yValue)) {
126
+ return yValue.filter(Boolean).map((yVal: number) => getPointObject(xValue, yVal, d));
127
+ } else if (xValue != null && yValue != null) {
128
+ return getPointObject(xValue as number, yValue as number, d);
129
+ }
72
130
 
73
- $: pointsData = data ?? $contextData;
131
+ return [];
132
+ }) as Point[]
133
+ );
74
134
 
75
- $: points = pointsData
76
- .flatMap((d: any) => {
135
+ const _links = $derived(
136
+ pointsData.flatMap((d: any) => {
77
137
  const xValue = xAccessor(d);
78
138
  const yValue = yAccessor(d);
79
139
 
@@ -82,99 +142,51 @@
82
142
  x={["prop1" ,"prop2"]}
83
143
  y="prop3"
84
144
  */
85
- return xValue.filter(notNull).map((xValue: number) => {
86
- return {
87
- x: $xScale(xValue) + getOffset($xScale(xValue), offsetX, $xScale),
88
- y: $yScale(yValue) + getOffset($yScale(yValue), offsetY, $yScale),
89
- r: $config.r ? $rGet(d) : r,
90
- xValue,
91
- yValue,
92
- data: d,
93
- };
94
- });
145
+ const [xMin, xMax] = extent(ctx.xGet(d)) as unknown as [number, number];
146
+ const y = ctx.yGet(d) + getOffset(ctx.yGet(d), offsetY, ctx.yScale);
147
+ return {
148
+ source: {
149
+ x: xMin + getOffset(xMin, offsetX, ctx.xScale) + (ctx.config.r ? ctx.rGet(d) : r),
150
+ y,
151
+ },
152
+ target: {
153
+ x: xMax + getOffset(xMax, offsetX, ctx.xScale) - (ctx.config.r ? ctx.rGet(d) : r),
154
+ y: y,
155
+ },
156
+ data: d,
157
+ };
95
158
  } else if (Array.isArray(yValue)) {
96
159
  /*
97
160
  x="prop1"
98
161
  y={["prop2" ,"prop3"]}
99
162
  */
100
- return yValue.filter(notNull).map((yValue: number) => {
101
- return {
102
- x: $xScale(xValue) + getOffset($xScale(xValue), offsetX, $xScale),
103
- y: $yScale(yValue) + getOffset($yScale(yValue), offsetY, $yScale),
104
- r: $config.r ? $rGet(d) : r,
105
- xValue,
106
- yValue,
107
- data: d,
108
- };
109
- });
110
- } else if (xValue != null && yValue != null) {
111
- /*
112
- x="prop1"
113
- y="prop2"
114
- */
163
+ const x = ctx.xGet(d) + getOffset(ctx.xGet(d), offsetX, ctx.xScale);
164
+ const [yMin, yMax] = extent(ctx.yGet(d)) as unknown as [number, number];
115
165
  return {
116
- x: $xScale(xValue) + getOffset($xScale(xValue), offsetX, $xScale),
117
- y: $yScale(yValue) + getOffset($yScale(yValue), offsetY, $yScale),
118
- r: $config.r ? $rGet(d) : r,
119
- xValue,
120
- yValue,
166
+ source: {
167
+ x: x,
168
+ y: yMin + getOffset(yMin, offsetY, ctx.yScale),
169
+ },
170
+ target: {
171
+ x: x,
172
+ y: yMax + getOffset(yMax, offsetY, ctx.yScale),
173
+ },
121
174
  data: d,
122
175
  };
123
176
  }
124
177
  })
125
- .filter((p: Point) => p) as Point[];
126
-
127
- $: _links = pointsData.flatMap((d: any) => {
128
- const xValue = xAccessor(d);
129
- const yValue = yAccessor(d);
130
-
131
- if (Array.isArray(xValue)) {
132
- /*
133
- x={["prop1" ,"prop2"]}
134
- y="prop3"
135
- */
136
- const [xMin, xMax] = extent($xGet(d)) as unknown as [number, number];
137
- const y = $yGet(d) + getOffset($yGet(d), offsetY, $yScale);
138
- return {
139
- source: {
140
- x: xMin + getOffset(xMin, offsetX, $xScale) + ($config.r ? $rGet(d) : r),
141
- y,
142
- },
143
- target: {
144
- x: xMax + getOffset(xMax, offsetX, $xScale) - ($config.r ? $rGet(d) : r),
145
- y: y,
146
- },
147
- data: d,
148
- };
149
- } else if (Array.isArray(yValue)) {
150
- /*
151
- x="prop1"
152
- y={["prop2" ,"prop3"]}
153
- */
154
- const x = $xGet(d) + getOffset($xGet(d), offsetX, $xScale);
155
- const [yMin, yMax] = extent($yGet(d)) as unknown as [number, number];
156
- return {
157
- source: {
158
- x: x,
159
- y: yMin + getOffset(yMin, offsetY, $yScale),
160
- },
161
- target: {
162
- x: x,
163
- y: yMax + getOffset(yMax, offsetY, $yScale),
164
- },
165
- data: d,
166
- };
167
- }
168
- });
178
+ );
169
179
  </script>
170
180
 
171
- <slot {points}>
181
+ {#if children}
182
+ {@render children({ points })}
183
+ {:else}
172
184
  {#if links}
173
185
  {#each _links as link}
174
186
  <Link
175
187
  data={link}
176
- stroke={fill ?? ($config.c ? $cGet(link.data) : null)}
177
- {...typeof links === 'object' ? links : null}
188
+ stroke={fill ?? (ctx.config.c ? ctx.cGet(link.data) : null)}
189
+ {...extractLayerProps(links, 'points-link')}
178
190
  />
179
191
  {/each}
180
192
  {/if}
@@ -182,16 +194,15 @@
182
194
  {#each points as point}
183
195
  {@const radialPoint = pointRadial(point.x, point.y)}
184
196
  <Circle
185
- cx={$radial ? radialPoint[0] : point.x}
186
- cy={$radial ? radialPoint[1] : point.y}
197
+ cx={ctx.radial ? radialPoint[0] : point.x}
198
+ cy={ctx.radial ? radialPoint[1] : point.y}
187
199
  r={point.r}
188
- fill={fill ?? ($config.c ? $cGet(point.data) : null)}
200
+ fill={fill ?? (ctx.config.c ? ctx.cGet(point.data) : null)}
189
201
  {fillOpacity}
190
202
  {stroke}
191
203
  {strokeWidth}
192
204
  {opacity}
193
- class={className}
194
- {...$$restProps}
205
+ {...extractLayerProps(restProps, 'point')}
195
206
  />
196
207
  {/each}
197
- </slot>
208
+ {/if}
@@ -1,4 +1,5 @@
1
- import { SvelteComponentTyped } from "svelte";
1
+ import type { CommonStyleProps, Without } from '../utils/types.js';
2
+ import type { ComponentProps, Snippet } from 'svelte';
2
3
  export type Point = {
3
4
  x: number;
4
5
  y: number;
@@ -7,38 +8,48 @@ export type Point = {
7
8
  yValue: any;
8
9
  data: any;
9
10
  };
10
- import { type ComponentProps } from 'svelte';
11
+ type Offset = number | ((value: number, context: any) => number) | undefined;
12
+ export type PointsPropsWithoutHTML = {
13
+ /**
14
+ * Override data instead of using context
15
+ */
16
+ data?: any;
17
+ /**
18
+ * Override `x` accessor from Chart context
19
+ */
20
+ x?: Accessor;
21
+ /**
22
+ * Override `y` accessor from Chart context
23
+ */
24
+ y?: Accessor;
25
+ /**
26
+ * Override `r` accessor from Chart context
27
+ *
28
+ * @default 5
29
+ */
30
+ r?: number;
31
+ /**
32
+ * The offset of the point in the x direction
33
+ */
34
+ offsetX?: Offset;
35
+ /**
36
+ * The offset of the point in the y direction
37
+ */
38
+ offsetY?: Offset;
39
+ /**
40
+ * Enable showing links between related points (array x/y accessors)
41
+ *
42
+ * @default false
43
+ */
44
+ links?: boolean | Partial<ComponentProps<typeof Link>>;
45
+ children?: Snippet<[{
46
+ points: Point[];
47
+ }]>;
48
+ } & CommonStyleProps;
49
+ export type PointsProps = PointsPropsWithoutHTML & Omit<Without<CircleProps, PointsPropsWithoutHTML>, 'ref'>;
50
+ import { type CircleProps } from './Circle.svelte';
11
51
  import Link from './Link.svelte';
12
52
  import { type Accessor } from '../utils/common.js';
13
- declare const __propDef: {
14
- props: {
15
- [x: string]: any;
16
- data?: any;
17
- x?: Accessor;
18
- y?: Accessor;
19
- r?: number | undefined;
20
- offsetX?: number | ((value: number, context: any) => number) | undefined;
21
- offsetY?: number | ((value: number, context: any) => number) | undefined;
22
- links?: (boolean | Partial<ComponentProps<Link>>) | undefined;
23
- fill?: string | undefined | undefined;
24
- fillOpacity?: number | undefined | undefined;
25
- stroke?: string | undefined | undefined;
26
- strokeWidth?: number | undefined | undefined;
27
- opacity?: number | undefined | undefined;
28
- class?: string | undefined | undefined;
29
- };
30
- events: {
31
- [evt: string]: CustomEvent<any>;
32
- };
33
- slots: {
34
- default: {
35
- points: Point[];
36
- };
37
- };
38
- };
39
- export type PointsProps = typeof __propDef.props;
40
- export type PointsEvents = typeof __propDef.events;
41
- export type PointsSlots = typeof __propDef.slots;
42
- export default class Points extends SvelteComponentTyped<PointsProps, PointsEvents, PointsSlots> {
43
- }
44
- export {};
53
+ declare const Points: import("svelte").Component<PointsProps, {}, "">;
54
+ type Points = ReturnType<typeof Points>;
55
+ export default Points;