layerchart 2.0.0-next.3 → 2.0.0-next.31

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 (112) hide show
  1. package/dist/components/AnnotationPoint.svelte +16 -9
  2. package/dist/components/AnnotationRange.svelte +3 -3
  3. package/dist/components/Arc.svelte +2 -2
  4. package/dist/components/Axis.svelte +83 -29
  5. package/dist/components/Axis.svelte.d.ts +13 -3
  6. package/dist/components/Bar.svelte +12 -8
  7. package/dist/components/Blur.svelte +5 -3
  8. package/dist/components/Blur.svelte.d.ts +2 -5
  9. package/dist/components/BrushContext.svelte +1 -1
  10. package/dist/components/Calendar.svelte +10 -6
  11. package/dist/components/Calendar.svelte.d.ts +2 -1
  12. package/dist/components/Chart.svelte +39 -3
  13. package/dist/components/Chart.svelte.d.ts +11 -0
  14. package/dist/components/Connector.svelte +2 -2
  15. package/dist/components/Connector.svelte.d.ts +1 -1
  16. package/dist/components/Ellipse.svelte +187 -0
  17. package/dist/components/Ellipse.svelte.d.ts +64 -0
  18. package/dist/components/ForceSimulation.svelte +184 -50
  19. package/dist/components/ForceSimulation.svelte.d.ts +88 -21
  20. package/dist/components/GeoPath.svelte +12 -5
  21. package/dist/components/GeoPoint.svelte +1 -2
  22. package/dist/components/GeoSpline.svelte +4 -4
  23. package/dist/components/GeoSpline.svelte.d.ts +1 -1
  24. package/dist/components/Group.svelte +2 -2
  25. package/dist/components/Highlight.svelte +9 -6
  26. package/dist/components/Hull.svelte +1 -1
  27. package/dist/components/Labels.svelte +3 -2
  28. package/dist/components/Labels.svelte.d.ts +2 -2
  29. package/dist/components/Legend.svelte +19 -12
  30. package/dist/components/Legend.svelte.d.ts +5 -5
  31. package/dist/components/MonthPath.svelte +14 -11
  32. package/dist/components/MonthPath.svelte.d.ts +4 -3
  33. package/dist/components/Polygon.svelte +285 -0
  34. package/dist/components/Polygon.svelte.d.ts +115 -0
  35. package/dist/components/RadialGradient.svelte +1 -3
  36. package/dist/components/Spline.svelte +30 -18
  37. package/dist/components/Spline.svelte.d.ts +12 -4
  38. package/dist/components/Text.svelte +62 -60
  39. package/dist/components/Text.svelte.d.ts +6 -0
  40. package/dist/components/TransformControls.svelte +16 -20
  41. package/dist/components/Treemap.svelte +63 -26
  42. package/dist/components/Treemap.svelte.d.ts +11 -11
  43. package/dist/components/Voronoi.svelte +51 -33
  44. package/dist/components/Voronoi.svelte.d.ts +3 -1
  45. package/dist/components/charts/ArcChart.svelte +5 -3
  46. package/dist/components/charts/AreaChart.svelte +11 -11
  47. package/dist/components/charts/BarChart.svelte +72 -53
  48. package/dist/components/charts/DefaultTooltip.svelte +1 -1
  49. package/dist/components/charts/LineChart.svelte +10 -6
  50. package/dist/components/charts/PieChart.svelte +5 -3
  51. package/dist/components/charts/ScatterChart.svelte +2 -3
  52. package/dist/components/charts/utils.svelte.d.ts +2 -2
  53. package/dist/components/charts/utils.svelte.js +5 -1
  54. package/dist/components/index.d.ts +4 -0
  55. package/dist/components/index.js +5 -1
  56. package/dist/components/layout/Canvas.svelte +67 -49
  57. package/dist/components/layout/Canvas.svelte.d.ts +6 -0
  58. package/dist/components/layout/Layer.svelte +6 -4
  59. package/dist/components/layout/Layer.svelte.d.ts +6 -4
  60. package/dist/components/tooltip/Tooltip.svelte +14 -7
  61. package/dist/components/tooltip/TooltipContext.svelte +136 -43
  62. package/dist/components/tooltip/TooltipContext.svelte.d.ts +3 -3
  63. package/dist/components/tooltip/TooltipHeader.svelte +5 -4
  64. package/dist/components/tooltip/TooltipHeader.svelte.d.ts +3 -3
  65. package/dist/components/tooltip/TooltipItem.svelte +5 -4
  66. package/dist/components/tooltip/TooltipItem.svelte.d.ts +3 -3
  67. package/dist/components/tooltip/TooltipList.svelte +1 -1
  68. package/dist/components/tooltip/tooltipMetaContext.d.ts +2 -2
  69. package/dist/docs/Blockquote.svelte +6 -4
  70. package/dist/docs/Blockquote.svelte.d.ts +4 -19
  71. package/dist/docs/Code.svelte +20 -12
  72. package/dist/docs/Code.svelte.d.ts +9 -23
  73. package/dist/docs/Header1.svelte +4 -2
  74. package/dist/docs/Header1.svelte.d.ts +4 -28
  75. package/dist/docs/Json.svelte +11 -3
  76. package/dist/docs/Json.svelte.d.ts +9 -21
  77. package/dist/docs/Layout.svelte +10 -7
  78. package/dist/docs/Layout.svelte.d.ts +4 -19
  79. package/dist/docs/Link.svelte +7 -3
  80. package/dist/docs/Link.svelte.d.ts +4 -38
  81. package/dist/docs/Preview.svelte +6 -3
  82. package/dist/docs/TilesetField.svelte +20 -19
  83. package/dist/docs/TilesetField.svelte.d.ts +5 -22
  84. package/dist/docs/ViewSourceButton.svelte +9 -6
  85. package/dist/docs/ViewSourceButton.svelte.d.ts +7 -21
  86. package/dist/utils/arcText.svelte.js +4 -4
  87. package/dist/utils/array.d.ts +11 -0
  88. package/dist/utils/array.js +23 -0
  89. package/dist/utils/array.test.d.ts +1 -0
  90. package/dist/utils/array.test.js +200 -0
  91. package/dist/utils/canvas.d.ts +77 -0
  92. package/dist/utils/canvas.js +105 -41
  93. package/dist/utils/genData.d.ts +14 -0
  94. package/dist/utils/genData.js +24 -6
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.js +1 -0
  97. package/dist/utils/path.d.ts +10 -0
  98. package/dist/utils/path.js +30 -0
  99. package/dist/utils/rect.svelte.d.ts +2 -2
  100. package/dist/utils/rect.svelte.js +69 -1
  101. package/dist/utils/scales.svelte.d.ts +3 -2
  102. package/dist/utils/scales.svelte.js +7 -3
  103. package/dist/utils/shape.d.ts +43 -0
  104. package/dist/utils/shape.js +59 -0
  105. package/dist/utils/string.d.ts +49 -0
  106. package/dist/utils/string.js +4 -2
  107. package/dist/utils/ticks.d.ts +15 -4
  108. package/dist/utils/ticks.js +144 -158
  109. package/dist/utils/ticks.test.js +11 -16
  110. package/dist/utils/treemap.d.ts +1 -1
  111. package/package.json +27 -25
  112. package/dist/utils/object.js +0 -2
@@ -4,6 +4,8 @@ export type VoronoiPropsWithoutHTML = {
4
4
  * Override data instead of using context
5
5
  */
6
6
  data?: any;
7
+ /** Radius to clip voronoi cells. `0` or `undefined` to disables clipping */
8
+ r?: number;
7
9
  /**
8
10
  * Classes to apply to the root and path elements
9
11
  *
@@ -35,7 +37,7 @@ export type VoronoiPropsWithoutHTML = {
35
37
  }) => void;
36
38
  };
37
39
  export type VoronoiProps = VoronoiPropsWithoutHTML & Without<Omit<GroupProps, 'children'>, VoronoiPropsWithoutHTML>;
38
- import type { GeoPermissibleObjects } from 'd3-geo';
40
+ import { type GeoPermissibleObjects } from 'd3-geo';
39
41
  import { type GroupProps } from './Group.svelte';
40
42
  declare const Voronoi: import("svelte").Component<VoronoiProps, {}, "">;
41
43
  type Voronoi = ReturnType<typeof Voronoi>;
@@ -264,8 +264,8 @@
264
264
  placement: 'bottom',
265
265
  variant: 'swatches',
266
266
  onclick: (e, item) => {
267
- selectedKeys.toggleSelected(item.value);
268
- selectedSeries.toggleSelected(item.value);
267
+ selectedKeys.toggle(item.value);
268
+ selectedSeries.toggle(item.value);
269
269
  },
270
270
  onpointerenter: (e, item) => (highlightKey.current = item.value),
271
271
  onpointerleave: (e) => (highlightKey.current = null),
@@ -384,7 +384,9 @@
384
384
  ]}
385
385
  padding={{ bottom: legend === true ? 32 : 0 }}
386
386
  {...restProps}
387
- tooltip={tooltip === false ? false : props.tooltip?.context}
387
+ tooltip={tooltip === false
388
+ ? false
389
+ : { ...props.tooltip?.context, ...(typeof tooltip === 'object' ? tooltip : null) }}
388
390
  >
389
391
  {#snippet children({ context })}
390
392
  {@const snippetProps = {
@@ -69,7 +69,6 @@
69
69
  import { onMount, type ComponentProps } from 'svelte';
70
70
  import { scaleLinear, scaleTime } from 'd3-scale';
71
71
  import { stack, stackOffsetDiverging, stackOffsetExpand, stackOffsetNone } from 'd3-shape';
72
- import { format } from '@layerstack/utils';
73
72
  import { cls } from '@layerstack/tailwind';
74
73
 
75
74
  import Area from '../Area.svelte';
@@ -136,7 +135,14 @@
136
135
 
137
136
  const series = $derived(
138
137
  seriesProp === undefined
139
- ? [{ key: 'default', value: y, color: 'var(--color-primary)' }]
138
+ ? [
139
+ {
140
+ key: 'default',
141
+ label: typeof y === 'string' ? y : 'value',
142
+ value: y,
143
+ color: 'var(--color-primary)',
144
+ },
145
+ ]
140
146
  : seriesProp
141
147
  );
142
148
 
@@ -398,13 +404,7 @@
398
404
  if (axisDirection === 'y') {
399
405
  return {
400
406
  placement: radial ? 'radius' : 'left',
401
- format: (value) => {
402
- if (seriesLayout === 'stackExpand') {
403
- return format(value, 'percentRound');
404
- } else {
405
- return format(value, undefined, { variant: 'short' });
406
- }
407
- },
407
+ format: seriesLayout === 'stackExpand' ? 'percentRound' : undefined,
408
408
  ...(typeof axis === 'object' ? axis : null),
409
409
  ...props.yAxis,
410
410
  };
@@ -412,7 +412,6 @@
412
412
 
413
413
  return {
414
414
  placement: radial ? 'angle' : 'bottom',
415
- format: (value) => format(value, undefined, { variant: 'short' }),
416
415
  ...(typeof axis === 'object' ? axis : null),
417
416
  ...props.xAxis,
418
417
  };
@@ -444,10 +443,11 @@
444
443
  tooltip={tooltip === false
445
444
  ? false
446
445
  : {
447
- mode: 'bisect-x',
446
+ mode: 'quadtree-x',
448
447
  onclick: onTooltipClick,
449
448
  debug,
450
449
  ...props.tooltip?.context,
450
+ ...(typeof tooltip === 'object' ? tooltip : null),
451
451
  }}
452
452
  brush={brush && (brush === true || brush.mode == undefined || brush.mode === 'integrated')
453
453
  ? {
@@ -84,9 +84,8 @@
84
84
 
85
85
  <script lang="ts" generics="TData">
86
86
  import { onMount, type ComponentProps } from 'svelte';
87
- import { scaleBand, scaleLinear } from 'd3-scale';
87
+ import { scaleBand, scaleLinear, scaleTime } from 'd3-scale';
88
88
  import { stack, stackOffsetDiverging, stackOffsetExpand, stackOffsetNone } from 'd3-shape';
89
- import { format } from '@layerstack/utils';
90
89
  import { cls } from '@layerstack/tailwind';
91
90
 
92
91
  import Axis from '../Axis.svelte';
@@ -109,7 +108,7 @@
109
108
  import { asAny } from '../../utils/types.js';
110
109
  import type { Insets } from '../../utils/rect.svelte.js';
111
110
  import type { SeriesData, SimplifiedChartProps, SimplifiedChartPropsObject } from './types.js';
112
- import type { AnyScale } from '../../utils/scales.svelte.js';
111
+ import { isScaleTime, type AnyScale } from '../../utils/scales.svelte.js';
113
112
  import { createLegendProps, SeriesState } from './utils.svelte.js';
114
113
  import { setTooltipMetaContext } from '../tooltip/tooltipMetaContext.js';
115
114
  import DefaultTooltip from './DefaultTooltip.svelte';
@@ -142,6 +141,8 @@
142
141
  bandPadding = radial ? 0 : 0.4,
143
142
  groupPadding = 0,
144
143
  stackPadding = 0,
144
+ xInterval,
145
+ yInterval,
145
146
  tooltip = true,
146
147
  children: childrenProp,
147
148
  aboveContext,
@@ -160,6 +161,14 @@
160
161
  ? [
161
162
  {
162
163
  key: 'default',
164
+ label:
165
+ orientation === 'vertical'
166
+ ? typeof yProp === 'string'
167
+ ? yProp
168
+ : 'value'
169
+ : typeof xProp === 'string'
170
+ ? xProp
171
+ : 'value',
163
172
  value: orientation === 'vertical' ? yProp : xProp,
164
173
  },
165
174
  ]
@@ -171,15 +180,60 @@
171
180
  const isStackSeries = $derived(seriesLayout.startsWith('stack'));
172
181
  const isGroupSeries = $derived(seriesLayout === 'group');
173
182
 
183
+ const chartData: Array<TData & { stackData?: any }> = $derived.by(() => {
184
+ let _chartData = (
185
+ seriesState.allSeriesData.length ? seriesState.allSeriesData : chartDataArray(data)
186
+ ) as Array<TData & { stackData?: any }>;
187
+ if (isStackSeries) {
188
+ const seriesKeys = seriesState.visibleSeries.map((s) => s.key);
189
+
190
+ const offset =
191
+ seriesLayout === 'stackExpand'
192
+ ? stackOffsetExpand
193
+ : seriesLayout === 'stackDiverging'
194
+ ? stackOffsetDiverging
195
+ : stackOffsetNone;
196
+ const stackData = stack()
197
+ .keys(seriesKeys)
198
+ .value((d, key) => {
199
+ const s = series.find((d) => d.key === key)!;
200
+ return accessor(s.value ?? s.key)(d as any);
201
+ })
202
+ .offset(offset)(chartDataArray(data)) as any[];
203
+
204
+ _chartData = _chartData.map((d, i) => {
205
+ return {
206
+ ...d,
207
+ stackData: stackData.map((sd) => sd[i]),
208
+ };
209
+ });
210
+ }
211
+ return _chartData;
212
+ });
213
+
174
214
  const xScale = $derived(
175
- xScaleProp ?? (isVertical ? scaleBand().padding(bandPadding) : scaleLinear())
215
+ xScaleProp ??
216
+ (xInterval
217
+ ? scaleTime()
218
+ : isVertical
219
+ ? scaleBand().padding(bandPadding)
220
+ : accessor(xProp)(chartData[0]) instanceof Date // TODO: also check for Array<Date> instances (ex. x={['start', 'end']})
221
+ ? scaleTime()
222
+ : scaleLinear())
176
223
  );
177
- const xBaseline = $derived(isVertical ? undefined : 0);
224
+ const xBaseline = $derived(isVertical || isScaleTime(xScale) ? undefined : 0);
178
225
 
179
226
  const yScale = $derived(
180
- yScaleProp ?? (isVertical ? scaleLinear() : scaleBand().padding(bandPadding))
227
+ yScaleProp ??
228
+ (yInterval
229
+ ? scaleTime()
230
+ : isVertical
231
+ ? accessor(yProp)(chartData[0]) instanceof Date // TODO: also check for Array<Date> instances (ex. y={['start', 'end']})
232
+ ? scaleTime()
233
+ : scaleLinear()
234
+ : scaleBand().padding(bandPadding))
181
235
  );
182
- const yBaseline = $derived(isVertical ? 0 : undefined);
236
+ const yBaseline = $derived(isVertical || isScaleTime(yScale) ? 0 : undefined);
183
237
 
184
238
  const x1Scale = $derived(
185
239
  isGroupSeries && isVertical ? scaleBand().padding(groupPadding) : undefined
@@ -214,37 +268,6 @@
214
268
  return d && typeof d === 'object' && 'stackData' in d;
215
269
  }
216
270
 
217
- const chartData: Array<TData & { stackData?: any }> = $derived.by(() => {
218
- let _chartData = (
219
- seriesState.allSeriesData.length ? seriesState.allSeriesData : chartDataArray(data)
220
- ) as Array<TData & { stackData?: any }>;
221
- if (isStackSeries) {
222
- const seriesKeys = seriesState.visibleSeries.map((s) => s.key);
223
-
224
- const offset =
225
- seriesLayout === 'stackExpand'
226
- ? stackOffsetExpand
227
- : seriesLayout === 'stackDiverging'
228
- ? stackOffsetDiverging
229
- : stackOffsetNone;
230
- const stackData = stack()
231
- .keys(seriesKeys)
232
- .value((d, key) => {
233
- const s = series.find((d) => d.key === key)!;
234
- return accessor(s.value ?? s.key)(d as any);
235
- })
236
- .offset(offset)(chartDataArray(data)) as any[];
237
-
238
- _chartData = _chartData.map((d, i) => {
239
- return {
240
- ...d,
241
- stackData: stackData.map((sd) => sd[i]),
242
- };
243
- });
244
- }
245
- return _chartData;
246
- });
247
-
248
271
  function getBarsProps(s: SeriesData<TData, typeof Bars>, i: number): ComponentProps<typeof Bars> {
249
272
  const isFirst = i == 0;
250
273
  const isLast = i == seriesState.visibleSeries.length - 1;
@@ -278,7 +301,12 @@
278
301
  y: isVertical ? valueAccessor : undefined,
279
302
  x1: isVertical && isGroupSeries ? (d) => s.value ?? s.key : undefined,
280
303
  y1: !isVertical && isGroupSeries ? (d) => s.value ?? s.key : undefined,
281
- rounded: isStackLayout && i !== seriesState.visibleSeries.length - 1 ? 'none' : 'edge',
304
+ rounded:
305
+ isStackLayout && i !== seriesState.visibleSeries.length - 1
306
+ ? 'none'
307
+ : Array.isArray(xProp) || Array.isArray(yProp)
308
+ ? 'all'
309
+ : 'edge',
282
310
  radius: 4,
283
311
  strokeWidth: 1,
284
312
  insets: stackInsets,
@@ -350,26 +378,14 @@
350
378
  return {
351
379
  placement: radial ? 'radius' : 'left',
352
380
 
353
- format: (value) => {
354
- if (isVertical && seriesLayout === 'stackExpand') {
355
- return format(value, 'percentRound');
356
- } else {
357
- return format(value, undefined, { variant: 'short' });
358
- }
359
- },
381
+ format: isVertical && seriesLayout === 'stackExpand' ? 'percentRound' : undefined,
360
382
  ...(typeof axis === 'object' ? axis : null),
361
383
  ...props.yAxis,
362
384
  };
363
385
  }
364
386
  return {
365
387
  placement: radial ? 'angle' : 'bottom',
366
- format: (value) => {
367
- if (!isVertical && seriesLayout === 'stackExpand') {
368
- return format(value, 'percentRound');
369
- } else {
370
- return format(value, undefined, { variant: 'short' });
371
- }
372
- },
388
+ format: !isVertical && seriesLayout === 'stackExpand' ? 'percentRound' : undefined,
373
389
  ...(typeof axis === 'object' ? axis : null),
374
390
  ...props.xAxis,
375
391
  };
@@ -426,6 +442,7 @@
426
442
  {x1Scale}
427
443
  {x1Domain}
428
444
  {x1Range}
445
+ {xInterval}
429
446
  y={resolveAccessor(yProp)}
430
447
  {yScale}
431
448
  {yBaseline}
@@ -433,6 +450,7 @@
433
450
  {y1Scale}
434
451
  {y1Domain}
435
452
  {y1Range}
453
+ {yInterval}
436
454
  c={isVertical ? yProp : xProp}
437
455
  cRange={['var(--color-primary)']}
438
456
  {radial}
@@ -445,6 +463,7 @@
445
463
  onclick: onTooltipClick,
446
464
  debug,
447
465
  ...props.tooltip?.context,
466
+ ...(typeof tooltip === 'object' ? tooltip : null),
448
467
  }}
449
468
  brush={brush && (brush === true || brush.mode == undefined || brush.mode === 'integrated')
450
469
  ? {
@@ -41,7 +41,7 @@
41
41
  {/each}
42
42
 
43
43
  {#if canHaveTotal && payload.length > 1 && !tooltipProps?.hideTotal}
44
- <Tooltip.Separator {...tooltipProps?.separator} />
44
+ <Tooltip.Separator {...tooltipProps?.separator} children={undefined} />
45
45
 
46
46
  <Tooltip.Item
47
47
  label="total"
@@ -70,7 +70,6 @@
70
70
  <script lang="ts" generics="TData">
71
71
  import { onMount, type ComponentProps } from 'svelte';
72
72
  import { scaleLinear, scaleTime } from 'd3-scale';
73
- import { format } from '@layerstack/utils';
74
73
  import { cls } from '@layerstack/tailwind';
75
74
 
76
75
  import Axis from '../Axis.svelte';
@@ -142,7 +141,14 @@
142
141
 
143
142
  const series = $derived(
144
143
  seriesProp === undefined
145
- ? [{ key: 'default', value: yProp, color: 'var(--color-primary)' }]
144
+ ? [
145
+ {
146
+ key: 'default',
147
+ label: typeof yProp === 'string' ? yProp : 'value',
148
+ value: yProp,
149
+ color: 'var(--color-primary)',
150
+ },
151
+ ]
146
152
  : seriesProp
147
153
  );
148
154
  const seriesState = new SeriesState(() => series);
@@ -284,14 +290,12 @@
284
290
  if (axisDirection === 'y') {
285
291
  return {
286
292
  placement: radial ? 'radius' : 'left',
287
- format: (value) => format(value, undefined, { variant: 'short' }),
288
293
  ...(typeof axis === 'object' ? axis : null),
289
294
  ...props.yAxis,
290
295
  };
291
296
  }
292
297
  return {
293
298
  placement: radial ? 'angle' : 'bottom',
294
- format: (value) => format(value, undefined, { variant: 'short' }),
295
299
  ...(typeof axis === 'object' ? axis : null),
296
300
  ...props.xAxis,
297
301
  };
@@ -339,10 +343,11 @@
339
343
  tooltip={tooltip === false
340
344
  ? false
341
345
  : {
342
- mode: 'bisect-x',
346
+ mode: 'quadtree-x',
343
347
  onclick: onTooltipClick,
344
348
  debug,
345
349
  ...props.tooltip?.context,
350
+ ...(typeof tooltip === 'object' ? tooltip : null),
346
351
  }}
347
352
  brush={brush && (brush === true || brush.mode == undefined || brush.mode === 'integrated')
348
353
  ? {
@@ -377,7 +382,6 @@
377
382
  {@render childrenProp(snippetProps)}
378
383
  {:else}
379
384
  {@render belowContext?.(snippetProps)}
380
- <!-- TODO: Always use `Svg` until `Pattern` supports `Canvas` (issue #307) -->
381
385
 
382
386
  <Layer
383
387
  type={renderContext}
@@ -281,9 +281,9 @@
281
281
  placement: 'bottom',
282
282
  variant: 'swatches',
283
283
  onclick: (e, item) => {
284
- selectedKeys.toggleSelected(item.value);
284
+ selectedKeys.toggle(item.value);
285
285
  // TODO: investigate
286
- // selectedSeries.toggleSelected(item.value);
286
+ // selectedSeries.toggle(item.value);
287
287
  },
288
288
  onpointerenter: (e, item) => (highlightKey.current = item.value),
289
289
  onpointerleave: (e) => (highlightKey.current = null),
@@ -409,7 +409,9 @@
409
409
  ]}
410
410
  padding={{ bottom: legend === true ? 32 : 0 }}
411
411
  {...restProps}
412
- tooltip={tooltip === false ? false : props.tooltip?.context}
412
+ tooltip={tooltip === false
413
+ ? false
414
+ : { ...props.tooltip?.context, ...(typeof tooltip === 'object' ? tooltip : null) }}
413
415
  >
414
416
  {#snippet children({ context })}
415
417
  {@const snippetProps = {
@@ -205,14 +205,12 @@
205
205
  if (axisDirection === 'y') {
206
206
  return {
207
207
  placement: 'left',
208
- format: (value) => format(value, undefined, { variant: 'short' }),
209
208
  ...(typeof axis === 'object' ? axis : null),
210
209
  ...props.yAxis,
211
210
  };
212
211
  }
213
212
  return {
214
213
  placement: 'bottom',
215
- format: (value) => format(value, undefined, { variant: 'short' }),
216
214
  ...(typeof axis === 'object' ? axis : null),
217
215
  ...props.xAxis,
218
216
  };
@@ -255,10 +253,11 @@
255
253
  tooltip={tooltip === false
256
254
  ? false
257
255
  : {
258
- mode: 'voronoi',
256
+ mode: 'quadtree',
259
257
  onclick: onTooltipClick,
260
258
  debug,
261
259
  ...props.tooltip?.context,
260
+ ...(typeof tooltip === 'object' ? tooltip : null),
262
261
  }}
263
262
  brush={brush && (brush === true || brush.mode == undefined || brush.mode === 'integrated')
264
263
  ? {
@@ -8,8 +8,8 @@ export declare class HighlightKey<TData, SeriesComponent extends Component> {
8
8
  }
9
9
  export declare class SeriesState<TData, TComponent extends Component> {
10
10
  #private;
11
- selectedSeries: SelectionState<unknown>;
12
- selectedKeys: SelectionState<unknown>;
11
+ selectedSeries: SelectionState<unknown, false>;
12
+ selectedKeys: SelectionState<unknown, false>;
13
13
  highlightKey: HighlightKey<TData, TComponent>;
14
14
  constructor(getSeries: () => SeriesData<TData, TComponent>[]);
15
15
  get series(): SeriesData<TData, TComponent>[];
@@ -13,6 +13,10 @@ export class SeriesState {
13
13
  highlightKey = new HighlightKey();
14
14
  constructor(getSeries) {
15
15
  this.#series = getSeries();
16
+ $effect.pre(() => {
17
+ // keep series state in sync with the prop
18
+ this.#series = getSeries();
19
+ });
16
20
  }
17
21
  get series() {
18
22
  return this.#series;
@@ -40,7 +44,7 @@ export function createLegendProps(opts) {
40
44
  tickFormat: (key) => opts.seriesState.series.find((s) => s.key === key)?.label ?? key,
41
45
  placement: 'bottom',
42
46
  variant: 'swatches',
43
- onclick: (_, item) => opts.seriesState.selectedSeries.toggleSelected(item.value),
47
+ onclick: (_, item) => opts.seriesState.selectedSeries.toggle(item.value),
44
48
  onpointerenter: (_, item) => (opts.seriesState.highlightKey.current = item.value),
45
49
  onpointerleave: () => (opts.seriesState.highlightKey.current = null),
46
50
  ...opts.props,
@@ -42,6 +42,8 @@ export { default as Connector } from './Connector.svelte';
42
42
  export * from './Connector.svelte';
43
43
  export { default as Dagre } from './Dagre.svelte';
44
44
  export * from './Dagre.svelte';
45
+ export { default as Ellipse } from './Ellipse.svelte';
46
+ export * from './Ellipse.svelte';
45
47
  export { default as Frame } from './Frame.svelte';
46
48
  export * from './Frame.svelte';
47
49
  export { default as ForceSimulation } from './ForceSimulation.svelte';
@@ -102,6 +104,8 @@ export { default as Point } from './Point.svelte';
102
104
  export * from './Point.svelte';
103
105
  export { default as Points } from './Points.svelte';
104
106
  export * from './Points.svelte';
107
+ export { default as Polygon } from './Polygon.svelte';
108
+ export * from './Polygon.svelte';
105
109
  export { default as RadialGradient } from './RadialGradient.svelte';
106
110
  export * from './RadialGradient.svelte';
107
111
  export { default as Rect } from './Rect.svelte';
@@ -42,6 +42,8 @@ export { default as Connector } from './Connector.svelte';
42
42
  export * from './Connector.svelte';
43
43
  export { default as Dagre } from './Dagre.svelte';
44
44
  export * from './Dagre.svelte';
45
+ export { default as Ellipse } from './Ellipse.svelte';
46
+ export * from './Ellipse.svelte';
45
47
  export { default as Frame } from './Frame.svelte';
46
48
  export * from './Frame.svelte';
47
49
  export { default as ForceSimulation } from './ForceSimulation.svelte';
@@ -102,6 +104,8 @@ export { default as Point } from './Point.svelte';
102
104
  export * from './Point.svelte';
103
105
  export { default as Points } from './Points.svelte';
104
106
  export * from './Points.svelte';
107
+ export { default as Polygon } from './Polygon.svelte';
108
+ export * from './Polygon.svelte';
105
109
  export { default as RadialGradient } from './RadialGradient.svelte';
106
110
  export * from './RadialGradient.svelte';
107
111
  export { default as Rect } from './Rect.svelte';
@@ -124,7 +128,7 @@ export * as Tooltip from './tooltip/index.js';
124
128
  export * from './tooltip/TooltipContext.svelte';
125
129
  export { default as TransformContext } from './TransformContext.svelte';
126
130
  export * from './TransformContext.svelte';
127
- // export { default as TransformControls } from './TransformControls.svelte'; // TODO: Restore once no longer using `svelet-ux` or `@mdi/js` (as they are dev dependencies)
131
+ // export { default as TransformControls } from './TransformControls.svelte'; // TODO: Restore once no longer using `svelte-ux` or `~icons` (as they are dev dependencies)
128
132
  export { default as Tree } from './Tree.svelte';
129
133
  export * from './Tree.svelte';
130
134
  export { default as Treemap } from './Treemap.svelte';