layerchart 2.0.0-next.1 → 2.0.0-next.11

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 (275) 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 +320 -179
  14. package/dist/components/Axis.svelte.d.ts +127 -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 +148 -77
  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 +463 -197
  118. package/dist/components/Text.svelte.d.ts +136 -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 +153 -103
  131. package/dist/components/Voronoi.svelte.d.ts +42 -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 +444 -393
  135. package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
  136. package/dist/components/charts/BarChart.svelte +463 -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 +366 -315
  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 +332 -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 +59 -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 +347 -171
  156. package/dist/components/layout/Canvas.svelte.d.ts +110 -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 +253 -78
  166. package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
  167. package/dist/components/tooltip/TooltipContext.svelte +426 -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 +3 -1
  184. package/dist/docs/Blockquote.svelte.d.ts +5 -16
  185. package/dist/docs/Code.svelte +20 -12
  186. package/dist/docs/Code.svelte.d.ts +12 -22
  187. package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
  188. package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
  189. package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
  190. package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
  191. package/dist/docs/CurveMenuField.svelte +14 -3
  192. package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
  193. package/dist/docs/GeoDebug.svelte +47 -42
  194. package/dist/docs/GeoDebug.svelte.d.ts +4 -16
  195. package/dist/docs/Header1.svelte +4 -2
  196. package/dist/docs/Header1.svelte.d.ts +5 -18
  197. package/dist/docs/Json.svelte +11 -3
  198. package/dist/docs/Json.svelte.d.ts +9 -17
  199. package/dist/docs/Layout.svelte +10 -7
  200. package/dist/docs/Layout.svelte.d.ts +5 -15
  201. package/dist/docs/Link.svelte +7 -3
  202. package/dist/docs/Link.svelte.d.ts +5 -27
  203. package/dist/docs/PathDataMenuField.svelte +14 -10
  204. package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
  205. package/dist/docs/Preview.svelte +20 -7
  206. package/dist/docs/Preview.svelte.d.ts +12 -22
  207. package/dist/docs/TilesetField.svelte +20 -19
  208. package/dist/docs/TilesetField.svelte.d.ts +6 -19
  209. package/dist/docs/TransformDebug.svelte +5 -6
  210. package/dist/docs/TransformDebug.svelte.d.ts +18 -14
  211. package/dist/docs/ViewSourceButton.svelte +7 -4
  212. package/dist/docs/ViewSourceButton.svelte.d.ts +8 -18
  213. package/dist/types/d3-shape-extentions.d.ts +7 -0
  214. package/dist/utils/afterTick.d.ts +5 -0
  215. package/dist/utils/afterTick.js +8 -0
  216. package/dist/utils/arcText.svelte.d.ts +57 -0
  217. package/dist/utils/arcText.svelte.js +262 -0
  218. package/dist/utils/array.d.ts +9 -1
  219. package/dist/utils/array.js +13 -0
  220. package/dist/utils/attributes.d.ts +29 -0
  221. package/dist/utils/attributes.js +40 -0
  222. package/dist/utils/canvas.js +47 -10
  223. package/dist/utils/chart.d.ts +78 -0
  224. package/dist/utils/chart.js +512 -0
  225. package/dist/utils/color.d.ts +1 -0
  226. package/dist/utils/color.js +8 -0
  227. package/dist/utils/common.d.ts +3 -5
  228. package/dist/utils/common.js +3 -2
  229. package/dist/utils/connectorUtils.d.ts +21 -0
  230. package/dist/utils/connectorUtils.js +111 -0
  231. package/dist/utils/createId.d.ts +7 -0
  232. package/dist/utils/createId.js +9 -0
  233. package/dist/utils/debug.d.ts +1 -0
  234. package/dist/utils/debug.js +84 -0
  235. package/dist/utils/filterObject.d.ts +9 -0
  236. package/dist/utils/filterObject.js +12 -0
  237. package/dist/utils/graph/dagre.d.ts +34 -0
  238. package/dist/utils/graph/dagre.js +78 -0
  239. package/dist/utils/graph/dagre.test.d.ts +1 -0
  240. package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
  241. package/dist/utils/graph/sankey.d.ts +28 -0
  242. package/dist/utils/{graph.js → graph/sankey.js} +13 -41
  243. package/dist/utils/index.d.ts +3 -1
  244. package/dist/utils/index.js +3 -1
  245. package/dist/utils/key.svelte.d.ts +3 -0
  246. package/dist/utils/key.svelte.js +11 -0
  247. package/dist/utils/legendPayload.d.ts +7 -0
  248. package/dist/utils/legendPayload.js +8 -0
  249. package/dist/utils/motion.svelte.d.ts +140 -0
  250. package/dist/utils/motion.svelte.js +180 -0
  251. package/dist/utils/motion.test.d.ts +1 -0
  252. package/dist/utils/motion.test.js +213 -0
  253. package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
  254. package/dist/utils/rect.svelte.js +105 -0
  255. package/dist/utils/scales.svelte.d.ts +91 -0
  256. package/dist/utils/scales.svelte.js +201 -0
  257. package/dist/utils/stack.d.ts +2 -3
  258. package/dist/utils/stack.js +1 -1
  259. package/dist/utils/string.js +87 -0
  260. package/dist/utils/ticks.d.ts +9 -3
  261. package/dist/utils/ticks.js +122 -147
  262. package/dist/utils/ticks.test.d.ts +1 -0
  263. package/dist/utils/ticks.test.js +57 -0
  264. package/dist/utils/types.d.ts +81 -0
  265. package/package.json +28 -24
  266. package/dist/components/ChartContext.svelte +0 -295
  267. package/dist/components/ChartContext.svelte.d.ts +0 -139
  268. package/dist/components/TransformContext.svelte.d.ts +0 -158
  269. package/dist/stores/motionStore.d.ts +0 -30
  270. package/dist/stores/motionStore.js +0 -62
  271. package/dist/utils/graph.d.ts +0 -37
  272. package/dist/utils/rect.js +0 -107
  273. package/dist/utils/scales.d.ts +0 -66
  274. package/dist/utils/scales.js +0 -136
  275. /package/dist/{utils/graph.test.d.ts → components/charts/types.js} +0 -0
@@ -1,109 +1,153 @@
1
+ <script lang="ts" module>
2
+ import type { Without } from '../utils/types.js';
3
+
4
+ export type VoronoiPropsWithoutHTML = {
5
+ /**
6
+ * Override data instead of using context
7
+ */
8
+ data?: any;
9
+
10
+ /** Radius to clip voronoi cells. `0` or `undefined` to disables clipping */
11
+ r?: number;
12
+
13
+ /**
14
+ * Classes to apply to the root and path elements
15
+ *
16
+ * @default = {}
17
+ */
18
+ classes?: {
19
+ root?: string;
20
+ path?: string;
21
+ };
22
+
23
+ onclick?: (
24
+ e: MouseEvent,
25
+ details: { data: any; point?: [number, number]; feature?: GeoPermissibleObjects }
26
+ ) => void;
27
+
28
+ onpointerenter?: (
29
+ e: PointerEvent,
30
+ details: {
31
+ data: any;
32
+ point?: [number, number];
33
+ feature?: GeoPermissibleObjects;
34
+ }
35
+ ) => void;
36
+ onpointermove?: (
37
+ e: PointerEvent,
38
+ details: {
39
+ data: any;
40
+ point?: [number, number];
41
+ feature?: GeoPermissibleObjects;
42
+ }
43
+ ) => void;
44
+ onpointerdown?: (
45
+ e: PointerEvent,
46
+ details: {
47
+ data: any;
48
+ point?: [number, number];
49
+ feature?: GeoPermissibleObjects;
50
+ }
51
+ ) => void;
52
+ };
53
+
54
+ export type VoronoiProps = VoronoiPropsWithoutHTML &
55
+ Without<Omit<GroupProps, 'children'>, VoronoiPropsWithoutHTML>;
56
+ </script>
57
+
1
58
  <script lang="ts">
2
59
  import { min } from 'd3-array';
3
60
  import { Delaunay } from 'd3-delaunay';
4
- import type { GeoPermissibleObjects } from 'd3-geo';
61
+ import { type GeoPermissibleObjects } from 'd3-geo';
5
62
  // @ts-expect-error
6
63
  import { geoVoronoi } from 'd3-geo-voronoi';
7
64
  import { pointRadial } from 'd3-shape';
8
65
  import { cls } from '@layerstack/tailwind';
9
66
 
10
- import { chartContext } from './ChartContext.svelte';
11
67
  import GeoPath from './GeoPath.svelte';
12
- import { geoContext, type GeoContext } from './GeoContext.svelte';
68
+ import Group, { type GroupProps } from './Group.svelte';
13
69
  import Spline from './Spline.svelte';
70
+ import { getChartContext } from './Chart.svelte';
71
+ import { getGeoContext } from './GeoContext.svelte';
72
+ import CircleClipPath from './CircleClipPath.svelte';
73
+
74
+ import { layerClass } from '../utils/attributes.js';
75
+
76
+ let {
77
+ data,
78
+ r,
79
+ classes = {},
80
+ onclick,
81
+ onpointerenter,
82
+ onpointerdown,
83
+ onpointermove,
84
+ class: className,
85
+ ...restProps
86
+ }: VoronoiProps = $props();
87
+
88
+ const ctx = getChartContext();
89
+ const geo = getGeoContext();
90
+
91
+ const points = $derived(
92
+ (data ?? ctx.flatData).map((d: any) => {
93
+ // geo voronoi needs raw latitude/longitude, not mapped to range (chart dimensions)
94
+ const xValue = geo.projection ? ctx.x(d) : ctx.xGet(d);
95
+ const yValue = geo.projection ? ctx.y(d) : ctx.yGet(d);
14
96
 
15
- const { flatData, xGet, yGet, x: xContext, y: yContext, width, height, radial } = chartContext();
16
- const geo = geoContext() as GeoContext | undefined;
17
-
18
- /** Override data instead of using context */
19
- export let data: any = undefined;
20
-
21
- export let classes: {
22
- root?: string;
23
- path?: string;
24
- } = {};
25
-
26
- export let onclick:
27
- | ((
28
- e: MouseEvent,
29
- details: { data: any; point?: [number, number]; feature?: GeoPermissibleObjects }
30
- ) => void)
31
- | undefined = undefined;
32
- export let onpointerenter:
33
- | ((
34
- e: PointerEvent,
35
- details: {
36
- data: any;
37
- point?: [number, number];
38
- feature?: GeoPermissibleObjects;
39
- }
40
- ) => void)
41
- | undefined = undefined;
42
- export let onpointermove:
43
- | ((
44
- e: PointerEvent,
45
- details: {
46
- data: any;
47
- point?: [number, number];
48
- feature?: GeoPermissibleObjects;
49
- }
50
- ) => void)
51
- | undefined = undefined;
52
- export let onpointerleave: ((e: PointerEvent) => void) | undefined = undefined;
53
- export let onpointerdown:
54
- | ((
55
- e: PointerEvent,
56
- details: {
57
- data: any;
58
- point?: [number, number];
59
- feature?: GeoPermissibleObjects;
60
- }
61
- ) => void)
62
- | undefined = undefined;
63
-
64
- $: points = (data ?? $flatData).map((d: any) => {
65
- // geo voronoi needs raw latitude/longtude, not mapped to range (chart dimensions)
66
- const xValue = $geo ? $xContext(d) : $xGet(d);
67
- const yValue = $geo ? $yContext(d) : $yGet(d);
68
-
69
- const x = Array.isArray(xValue) ? min(xValue) : xValue;
70
- const y = Array.isArray(yValue) ? min(yValue) : yValue;
71
-
72
- let point: [number, number];
73
- if ($radial) {
74
- const radialPoint = pointRadial(x, y);
75
- // Assume radial is also centered
76
- point = [radialPoint[0] + $width / 2, radialPoint[1] + $height / 2];
77
- } else {
78
- point = [x, y];
79
- }
80
- // @ts-expect-error
81
- point.data = d;
82
- return point;
83
- });
97
+ const x = Array.isArray(xValue) ? min(xValue) : xValue;
98
+ const y = Array.isArray(yValue) ? min(yValue) : yValue;
99
+
100
+ let point: [number, number];
101
+ if (ctx.radial) {
102
+ const radialPoint = pointRadial(x, y);
103
+ // Assume radial is also centered
104
+ point = [radialPoint[0] + ctx.width / 2, radialPoint[1] + ctx.height / 2];
105
+ } else {
106
+ point = [x, y];
107
+ }
108
+ // @ts-expect-error
109
+ point.data = d;
110
+ return point;
111
+ })
112
+ );
84
113
 
85
114
  // Width and/or height can sometimes be negative (when loading data remotely and updately)
86
- $: boundWidth = Math.max($width, 0);
87
- $: boundHeight = Math.max($height, 0);
115
+ const boundWidth = $derived(Math.max(ctx.width, 0));
116
+ const boundHeight = $derived(Math.max(ctx.height, 0));
117
+
118
+ const disableClip = $derived(r === 0 || r == null || r === Infinity);
88
119
  </script>
89
120
 
90
- <g {...$$restProps} class={cls(classes.root, $$props.class)}>
91
- {#if $geo}
121
+ <Group {...restProps} class={cls(layerClass('voronoi-g'), classes.root, className)}>
122
+ {#if geo.projection}
92
123
  {@const polygons = geoVoronoi().polygons(points)}
93
124
  {#each polygons.features as feature}
94
- <GeoPath
95
- geojson={feature}
96
- class={cls('fill-transparent stroke-transparent', classes.path)}
97
- onclick={(e) => onclick?.(e, { data: feature.properties.site.data, feature })}
98
- onpointerenter={(e) => onpointerenter?.(e, { data: feature.properties.site.data, feature })}
99
- onpointermove={(e) => onpointermove?.(e, { data: feature.properties.site.data, feature })}
100
- onpointerdown={(e) => onpointerdown?.(e, { data: feature.properties.site.data, feature })}
101
- {onpointerleave}
102
- ontouchmove={(e) => {
103
- // Prevent touch to not interfer with pointer
104
- e.preventDefault();
105
- }}
106
- />
125
+ {@const point = r ? geo.projection?.(feature.properties.sitecoordinates) : null}
126
+ <CircleClipPath
127
+ cx={point?.[0]}
128
+ cy={point?.[1]}
129
+ r={r ?? 0}
130
+ disabled={point == null || disableClip}
131
+ >
132
+ <GeoPath
133
+ geojson={feature}
134
+ class={cls(
135
+ layerClass('voronoi-geo-path'),
136
+ 'fill-transparent stroke-transparent',
137
+ classes.path
138
+ )}
139
+ onclick={(e) => onclick?.(e, { data: feature.properties.site.data, feature })}
140
+ onpointerenter={(e) =>
141
+ onpointerenter?.(e, { data: feature.properties.site.data, feature })}
142
+ onpointermove={(e) => onpointermove?.(e, { data: feature.properties.site.data, feature })}
143
+ onpointerdown={(e) => onpointerdown?.(e, { data: feature.properties.site.data, feature })}
144
+ {onpointerleave}
145
+ ontouchmove={(e) => {
146
+ // Prevent touch to not interfere with pointer
147
+ e.preventDefault();
148
+ }}
149
+ />
150
+ </CircleClipPath>
107
151
  {/each}
108
152
  {:else}
109
153
  {@const voronoi = Delaunay.from(points).voronoi([0, 0, boundWidth, boundHeight])}
@@ -111,20 +155,26 @@
111
155
  {@const pathData = voronoi.renderCell(i)}
112
156
  <!-- Wait to render Spline until pathData is available to fix path artifacts from injected tweened points in Spline -->
113
157
  {#if pathData}
114
- <Spline
115
- {pathData}
116
- class={cls('fill-transparent stroke-transparent', classes.path)}
117
- onclick={(e) => onclick?.(e, { data: point.data, point })}
118
- onpointerenter={(e) => onpointerenter?.(e, { data: point.data, point })}
119
- onpointermove={(e) => onpointermove?.(e, { data: point.data, point })}
120
- {onpointerleave}
121
- onpointerdown={(e) => onpointerdown?.(e, { data: point.data, point })}
122
- ontouchmove={(e) => {
123
- // Prevent touch to not interfer with pointer
124
- e.preventDefault();
125
- }}
126
- />
158
+ <CircleClipPath cx={point[0]} cy={point[1]} r={r ?? 0} disabled={disableClip}>
159
+ <Spline
160
+ {pathData}
161
+ class={cls(
162
+ layerClass('voronoi-path'),
163
+ 'fill-transparent stroke-transparent',
164
+ classes.path
165
+ )}
166
+ onclick={(e) => onclick?.(e, { data: point.data, point })}
167
+ onpointerenter={(e) => onpointerenter?.(e, { data: point.data, point })}
168
+ onpointermove={(e) => onpointermove?.(e, { data: point.data, point })}
169
+ {onpointerleave}
170
+ onpointerdown={(e) => onpointerdown?.(e, { data: point.data, point })}
171
+ ontouchmove={(e) => {
172
+ // Prevent touch to not interfere with pointer
173
+ e.preventDefault();
174
+ }}
175
+ />
176
+ </CircleClipPath>
127
177
  {/if}
128
178
  {/each}
129
179
  {/if}
130
- </g>
180
+ </Group>
@@ -1,43 +1,44 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { GeoPermissibleObjects } from 'd3-geo';
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- data?: any;
7
- classes?: {
8
- root?: string;
9
- path?: string;
10
- } | undefined;
11
- onclick?: ((e: MouseEvent, details: {
12
- data: any;
13
- point?: [number, number];
14
- feature?: GeoPermissibleObjects;
15
- }) => void) | undefined | undefined;
16
- onpointerenter?: ((e: PointerEvent, details: {
17
- data: any;
18
- point?: [number, number];
19
- feature?: GeoPermissibleObjects;
20
- }) => void) | undefined | undefined;
21
- onpointermove?: ((e: PointerEvent, details: {
22
- data: any;
23
- point?: [number, number];
24
- feature?: GeoPermissibleObjects;
25
- }) => void) | undefined | undefined;
26
- onpointerleave?: ((e: PointerEvent) => void) | undefined | undefined;
27
- onpointerdown?: ((e: PointerEvent, details: {
28
- data: any;
29
- point?: [number, number];
30
- feature?: GeoPermissibleObjects;
31
- }) => void) | undefined | undefined;
1
+ import type { Without } from '../utils/types.js';
2
+ export type VoronoiPropsWithoutHTML = {
3
+ /**
4
+ * Override data instead of using context
5
+ */
6
+ data?: any;
7
+ /** Radius to clip voronoi cells. `0` or `undefined` to disables clipping */
8
+ r?: number;
9
+ /**
10
+ * Classes to apply to the root and path elements
11
+ *
12
+ * @default = {}
13
+ */
14
+ classes?: {
15
+ root?: string;
16
+ path?: string;
32
17
  };
33
- events: {
34
- [evt: string]: CustomEvent<any>;
35
- };
36
- slots: {};
18
+ onclick?: (e: MouseEvent, details: {
19
+ data: any;
20
+ point?: [number, number];
21
+ feature?: GeoPermissibleObjects;
22
+ }) => void;
23
+ onpointerenter?: (e: PointerEvent, details: {
24
+ data: any;
25
+ point?: [number, number];
26
+ feature?: GeoPermissibleObjects;
27
+ }) => void;
28
+ onpointermove?: (e: PointerEvent, details: {
29
+ data: any;
30
+ point?: [number, number];
31
+ feature?: GeoPermissibleObjects;
32
+ }) => void;
33
+ onpointerdown?: (e: PointerEvent, details: {
34
+ data: any;
35
+ point?: [number, number];
36
+ feature?: GeoPermissibleObjects;
37
+ }) => void;
37
38
  };
38
- export type VoronoiProps = typeof __propDef.props;
39
- export type VoronoiEvents = typeof __propDef.events;
40
- export type VoronoiSlots = typeof __propDef.slots;
41
- export default class Voronoi extends SvelteComponentTyped<VoronoiProps, VoronoiEvents, VoronoiSlots> {
42
- }
43
- export {};
39
+ export type VoronoiProps = VoronoiPropsWithoutHTML & Without<Omit<GroupProps, 'children'>, VoronoiPropsWithoutHTML>;
40
+ import { type GeoPermissibleObjects } from 'd3-geo';
41
+ import { type GroupProps } from './Group.svelte';
42
+ declare const Voronoi: import("svelte").Component<VoronoiProps, {}, "">;
43
+ type Voronoi = ReturnType<typeof Voronoi>;
44
+ export default Voronoi;