layerchart 2.0.0-next.4 → 2.0.0-next.41

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 (180) hide show
  1. package/dist/components/AnnotationLine.svelte +15 -2
  2. package/dist/components/AnnotationPoint.svelte +29 -11
  3. package/dist/components/AnnotationRange.svelte +18 -4
  4. package/dist/components/Arc.svelte +5 -5
  5. package/dist/components/Area.svelte +10 -2
  6. package/dist/components/Axis.svelte +175 -58
  7. package/dist/components/Axis.svelte.d.ts +23 -6
  8. package/dist/components/Bar.svelte +20 -15
  9. package/dist/components/Bar.svelte.d.ts +2 -2
  10. package/dist/components/Bars.svelte +4 -4
  11. package/dist/components/Blur.svelte +7 -6
  12. package/dist/components/Blur.svelte.d.ts +2 -5
  13. package/dist/components/BrushContext.svelte +45 -45
  14. package/dist/components/Calendar.svelte +31 -10
  15. package/dist/components/Calendar.svelte.d.ts +2 -1
  16. package/dist/components/Chart.svelte +76 -27
  17. package/dist/components/Chart.svelte.d.ts +26 -8
  18. package/dist/components/ChartClipPath.svelte +1 -1
  19. package/dist/components/Circle.svelte +44 -3
  20. package/dist/components/CircleClipPath.svelte +8 -1
  21. package/dist/components/ClipPath.svelte +1 -2
  22. package/dist/components/ColorRamp.svelte +1 -1
  23. package/dist/components/ComputedStyles.svelte +9 -2
  24. package/dist/components/Connector.svelte +3 -3
  25. package/dist/components/Connector.svelte.d.ts +1 -1
  26. package/dist/components/Ellipse.svelte +228 -0
  27. package/dist/components/Ellipse.svelte.d.ts +64 -0
  28. package/dist/components/ForceSimulation.svelte +184 -50
  29. package/dist/components/ForceSimulation.svelte.d.ts +95 -21
  30. package/dist/components/Frame.svelte +1 -1
  31. package/dist/components/GeoCircle.svelte +1 -1
  32. package/dist/components/GeoEdgeFade.svelte +1 -1
  33. package/dist/components/GeoPath.svelte +30 -8
  34. package/dist/components/GeoPoint.svelte +4 -5
  35. package/dist/components/GeoSpline.svelte +5 -5
  36. package/dist/components/GeoSpline.svelte.d.ts +1 -1
  37. package/dist/components/GeoTile.svelte +1 -1
  38. package/dist/components/Graticule.svelte +5 -5
  39. package/dist/components/Grid.svelte +60 -63
  40. package/dist/components/Group.svelte +13 -8
  41. package/dist/components/Group.svelte.d.ts +10 -3
  42. package/dist/components/Highlight.svelte +55 -28
  43. package/dist/components/Highlight.svelte.d.ts +4 -0
  44. package/dist/components/Hull.svelte +12 -5
  45. package/dist/components/Labels.svelte +24 -13
  46. package/dist/components/Labels.svelte.d.ts +12 -5
  47. package/dist/components/Legend.svelte +143 -70
  48. package/dist/components/Legend.svelte.d.ts +12 -8
  49. package/dist/components/Line.svelte +40 -3
  50. package/dist/components/LinearGradient.svelte +35 -4
  51. package/dist/components/Link.svelte +1 -1
  52. package/dist/components/Marker.svelte +37 -26
  53. package/dist/components/MonthPath.svelte +26 -12
  54. package/dist/components/MonthPath.svelte.d.ts +4 -3
  55. package/dist/components/MotionPath.svelte +1 -1
  56. package/dist/components/Pack.svelte.d.ts +10 -3
  57. package/dist/components/Partition.svelte.d.ts +10 -3
  58. package/dist/components/Pattern.svelte +5 -5
  59. package/dist/components/Pie.svelte +1 -2
  60. package/dist/components/Points.svelte +11 -72
  61. package/dist/components/Points.svelte.d.ts +1 -8
  62. package/dist/components/Polygon.svelte +309 -0
  63. package/dist/components/Polygon.svelte.d.ts +115 -0
  64. package/dist/components/RadialGradient.svelte +4 -6
  65. package/dist/components/Rect.svelte +55 -5
  66. package/dist/components/Rect.svelte.d.ts +2 -2
  67. package/dist/components/RectClipPath.svelte +4 -3
  68. package/dist/components/RectClipPath.svelte.d.ts +2 -2
  69. package/dist/components/Rule.svelte +167 -77
  70. package/dist/components/Rule.svelte.d.ts +7 -2
  71. package/dist/components/Spline.svelte +59 -28
  72. package/dist/components/Spline.svelte.d.ts +12 -4
  73. package/dist/components/Text.svelte +121 -73
  74. package/dist/components/Text.svelte.d.ts +6 -0
  75. package/dist/components/TileImage.svelte +19 -4
  76. package/dist/components/TransformContext.svelte +9 -3
  77. package/dist/components/TransformControls.svelte +89 -38
  78. package/dist/components/Tree.svelte.d.ts +10 -3
  79. package/dist/components/Treemap.svelte +63 -26
  80. package/dist/components/Treemap.svelte.d.ts +21 -14
  81. package/dist/components/Voronoi.svelte +12 -13
  82. package/dist/components/charts/ArcChart.svelte +43 -71
  83. package/dist/components/charts/ArcChart.svelte.d.ts +10 -3
  84. package/dist/components/charts/AreaChart.svelte +29 -59
  85. package/dist/components/charts/AreaChart.svelte.d.ts +10 -3
  86. package/dist/components/charts/BarChart.svelte +79 -71
  87. package/dist/components/charts/BarChart.svelte.d.ts +10 -3
  88. package/dist/components/charts/DefaultTooltip.svelte +3 -3
  89. package/dist/components/charts/DefaultTooltip.svelte.d.ts +1 -1
  90. package/dist/components/charts/LineChart.svelte +69 -75
  91. package/dist/components/charts/LineChart.svelte.d.ts +21 -8
  92. package/dist/components/charts/PieChart.svelte +44 -71
  93. package/dist/components/charts/PieChart.svelte.d.ts +10 -3
  94. package/dist/components/charts/ScatterChart.svelte +10 -39
  95. package/dist/components/charts/ScatterChart.svelte.d.ts +10 -3
  96. package/dist/components/charts/utils.svelte.d.ts +1 -19
  97. package/dist/components/charts/utils.svelte.js +7 -35
  98. package/dist/components/index.d.ts +4 -0
  99. package/dist/components/index.js +5 -1
  100. package/dist/components/layout/Canvas.svelte +96 -69
  101. package/dist/components/layout/Canvas.svelte.d.ts +6 -0
  102. package/dist/components/layout/Html.svelte +15 -9
  103. package/dist/components/layout/Layer.svelte +6 -4
  104. package/dist/components/layout/Layer.svelte.d.ts +6 -4
  105. package/dist/components/layout/Svg.svelte +19 -11
  106. package/dist/components/layout/WebGL.svelte +26 -6
  107. package/dist/components/layout/WebGL.svelte.d.ts +5 -2
  108. package/dist/components/tooltip/Tooltip.svelte +73 -36
  109. package/dist/components/tooltip/Tooltip.svelte.d.ts +10 -3
  110. package/dist/components/tooltip/TooltipContext.svelte +167 -54
  111. package/dist/components/tooltip/TooltipContext.svelte.d.ts +19 -5
  112. package/dist/components/tooltip/TooltipHeader.svelte +32 -18
  113. package/dist/components/tooltip/TooltipHeader.svelte.d.ts +3 -3
  114. package/dist/components/tooltip/TooltipItem.svelte +46 -37
  115. package/dist/components/tooltip/TooltipItem.svelte.d.ts +3 -3
  116. package/dist/components/tooltip/TooltipList.svelte +12 -10
  117. package/dist/components/tooltip/TooltipSeparator.svelte +18 -10
  118. package/dist/components/tooltip/tooltipMetaContext.d.ts +2 -2
  119. package/dist/docs/Blockquote.svelte +6 -4
  120. package/dist/docs/Blockquote.svelte.d.ts +4 -19
  121. package/dist/docs/Code.svelte +70 -28
  122. package/dist/docs/Code.svelte.d.ts +9 -24
  123. package/dist/docs/Header1.svelte +4 -2
  124. package/dist/docs/Header1.svelte.d.ts +4 -28
  125. package/dist/docs/Json.svelte +11 -3
  126. package/dist/docs/Json.svelte.d.ts +9 -21
  127. package/dist/docs/Layout.svelte +10 -7
  128. package/dist/docs/Layout.svelte.d.ts +4 -19
  129. package/dist/docs/Link.svelte +7 -3
  130. package/dist/docs/Link.svelte.d.ts +4 -38
  131. package/dist/docs/Preview.svelte +22 -23
  132. package/dist/docs/Preview.svelte.d.ts +5 -6
  133. package/dist/docs/TilesetField.svelte +20 -19
  134. package/dist/docs/TilesetField.svelte.d.ts +5 -22
  135. package/dist/docs/ViewSourceButton.svelte +10 -7
  136. package/dist/docs/ViewSourceButton.svelte.d.ts +7 -21
  137. package/dist/states/series.svelte.d.ts +30 -0
  138. package/dist/states/series.svelte.js +54 -0
  139. package/dist/styles/daisyui-5.css +6 -0
  140. package/dist/styles/shadcn-svelte.css +11 -0
  141. package/dist/styles/skeleton-3.css +15 -0
  142. package/dist/utils/arcText.svelte.js +4 -4
  143. package/dist/utils/array.d.ts +11 -0
  144. package/dist/utils/array.js +23 -0
  145. package/dist/utils/array.test.d.ts +1 -0
  146. package/dist/utils/array.test.js +200 -0
  147. package/dist/utils/attributes.d.ts +3 -13
  148. package/dist/utils/attributes.js +4 -18
  149. package/dist/utils/canvas.d.ts +77 -0
  150. package/dist/utils/canvas.js +105 -41
  151. package/dist/utils/common.d.ts +9 -0
  152. package/dist/utils/common.js +18 -1
  153. package/dist/utils/common.test.js +26 -1
  154. package/dist/utils/genData.d.ts +22 -8
  155. package/dist/utils/genData.js +34 -14
  156. package/dist/utils/graph/dagre.d.ts +4 -4
  157. package/dist/utils/graph/dagre.js +5 -7
  158. package/dist/utils/index.d.ts +1 -0
  159. package/dist/utils/index.js +1 -0
  160. package/dist/utils/math.d.ts +17 -0
  161. package/dist/utils/math.js +17 -0
  162. package/dist/utils/motion.svelte.js +1 -1
  163. package/dist/utils/path.d.ts +10 -0
  164. package/dist/utils/path.js +30 -0
  165. package/dist/utils/rect.svelte.d.ts +2 -2
  166. package/dist/utils/rect.svelte.js +73 -1
  167. package/dist/utils/scales.svelte.d.ts +9 -3
  168. package/dist/utils/scales.svelte.js +47 -4
  169. package/dist/utils/shape.d.ts +43 -0
  170. package/dist/utils/shape.js +59 -0
  171. package/dist/utils/stack.js +1 -1
  172. package/dist/utils/string.d.ts +49 -0
  173. package/dist/utils/string.js +4 -2
  174. package/dist/utils/ticks.d.ts +15 -4
  175. package/dist/utils/ticks.js +140 -159
  176. package/dist/utils/ticks.test.js +16 -26
  177. package/dist/utils/treemap.d.ts +1 -1
  178. package/dist/utils/types.d.ts +15 -2
  179. package/package.json +36 -35
  180. package/dist/utils/object.js +0 -2
@@ -124,7 +124,6 @@
124
124
  import { sum } from 'd3-array';
125
125
  import { format } from '@layerstack/utils';
126
126
  import { cls } from '@layerstack/tailwind';
127
- import { SelectionState } from '@layerstack/svelte-state';
128
127
 
129
128
  import Arc, { type ArcPropsWithoutHTML } from '../Arc.svelte';
130
129
  import Chart from '../Chart.svelte';
@@ -133,7 +132,13 @@
133
132
  import Legend from '../Legend.svelte';
134
133
  import * as Tooltip from '../tooltip/index.js';
135
134
 
136
- import { accessor, chartDataArray, type Accessor } from '../../utils/common.js';
135
+ import {
136
+ accessor,
137
+ chartDataArray,
138
+ getObjectOrNull,
139
+ resolveMaybeFn,
140
+ type Accessor,
141
+ } from '../../utils/common.js';
137
142
  import { asAny } from '../../utils/types.js';
138
143
  import type {
139
144
  SeriesData,
@@ -141,7 +146,8 @@
141
146
  SimplifiedChartPropsObject,
142
147
  SimplifiedChartSnippet,
143
148
  } from './types.js';
144
- import { HighlightKey } from './utils.svelte.js';
149
+ import { SeriesState } from '../../states/series.svelte.js';
150
+ import { createLegendProps } from './utils.svelte.js';
145
151
  import { setTooltipMetaContext } from '../tooltip/tooltipMetaContext.js';
146
152
  import { getColorIfDefined } from '../../utils/color.js';
147
153
 
@@ -223,63 +229,32 @@
223
229
  });
224
230
  });
225
231
 
226
- const selectedSeries = new SelectionState();
227
-
228
- const visibleSeries = $derived(
229
- series.filter((s) => selectedSeries.isEmpty() || selectedSeries.isSelected(s.key))
230
- );
231
-
232
- const allSeriesData = $derived(
233
- visibleSeries
234
- .flatMap((s) =>
235
- s.data?.map((d) => {
236
- return { seriesKey: s.key, ...d };
237
- })
238
- )
239
- .filter((d) => d) as Array<TData & { stackData?: any }>
240
- );
232
+ const seriesState = new SeriesState(() => series);
241
233
 
242
234
  const chartData = $derived(
243
- allSeriesData.length ? allSeriesData : chartDataArray(data)
235
+ seriesState.allSeriesData.length ? seriesState.allSeriesData : chartDataArray(data)
244
236
  ) as Array<TData>;
245
237
 
246
- const seriesColors = $derived(series.map((s) => s.color).filter((d) => d != null));
247
-
248
- const highlightKey = new HighlightKey<TData, typeof Arc>();
249
- const selectedKeys = new SelectionState();
250
-
251
238
  const visibleData = $derived(
252
239
  chartData.filter((d) => {
253
240
  const dataKey = keyAccessor(d);
254
- return selectedKeys.isEmpty() || selectedKeys.isSelected(dataKey);
241
+ return seriesState.selectedKeys.isEmpty() || seriesState.selectedKeys.isSelected(dataKey);
255
242
  })
256
243
  );
257
244
 
258
245
  function getLegendProps(): ComponentProps<typeof Legend> {
259
- return {
260
- tickFormat: (tick) => {
261
- const item = chartData.find((d) => keyAccessor(d) === tick);
262
- return item ? (labelAccessor(item) ?? tick) : tick;
263
- },
264
- placement: 'bottom',
265
- variant: 'swatches',
266
- onclick: (e, item) => {
267
- selectedKeys.toggleSelected(item.value);
268
- selectedSeries.toggleSelected(item.value);
269
- },
270
- onpointerenter: (e, item) => (highlightKey.current = item.value),
271
- onpointerleave: (e) => (highlightKey.current = null),
272
- ...props.legend,
273
- ...(typeof legend === 'object' ? legend : null),
274
- classes: {
275
- item: (item) =>
276
- visibleData.length && !visibleData.some((d) => keyAccessor(d) === item.value)
277
- ? 'opacity-50'
278
- : '',
279
- ...props.legend?.classes,
280
- ...(typeof legend === 'object' ? legend.classes : null),
246
+ return createLegendProps({
247
+ seriesState,
248
+ props: {
249
+ tickFormat: (tick) => {
250
+ // Use data label instead of series label
251
+ const item = chartData.find((d) => keyAccessor(d) === tick);
252
+ return item ? (labelAccessor(item) ?? tick) : tick;
253
+ },
254
+ ...props.legend,
255
+ ...getObjectOrNull(legend),
281
256
  },
282
- };
257
+ });
283
258
  }
284
259
 
285
260
  function getGroupProps(): ComponentProps<typeof Group> {
@@ -317,6 +292,7 @@
317
292
  multiSeries && (trackOuterRadius ?? 0) < 0 ? i * (trackOuterRadius ?? 0) : trackOuterRadius,
318
293
  fill: s.color ?? context.cScale?.(context.c(d)),
319
294
  track: { fill: s.color ?? context.cScale?.(context.c(d)), fillOpacity: 0.1 },
295
+ opacity: seriesState.isHighlighted(keyAccessor(d), true) ? 1 : 0.1,
320
296
  tooltipContext: context.tooltip,
321
297
  data: d,
322
298
  onclick: (e) => {
@@ -326,12 +302,7 @@
326
302
  },
327
303
  ...props.arc,
328
304
  ...s.props,
329
- class: cls(
330
- 'transition-opacity',
331
- highlightKey.current && highlightKey.current !== keyAccessor(d) && 'opacity-50',
332
- props.arc?.class,
333
- s.props?.class
334
- ),
305
+ class: cls(props.arc?.class, s.props?.class),
335
306
  };
336
307
  }
337
308
 
@@ -357,7 +328,7 @@
357
328
  return key;
358
329
  },
359
330
  get visibleSeries() {
360
- return visibleSeries;
331
+ return seriesState.visibleSeries;
361
332
  },
362
333
  });
363
334
  </script>
@@ -367,24 +338,25 @@
367
338
  bind:context
368
339
  data={visibleData}
369
340
  x={value}
370
- y={key}
371
341
  {c}
372
342
  cDomain={chartData.map(keyAccessor)}
373
- cRange={seriesColors.length
374
- ? seriesColors
343
+ cRange={seriesState.allSeriesColors.length
344
+ ? seriesState.allSeriesColors
375
345
  : c !== key
376
346
  ? chartData.map((d) => cAccessor(d))
377
347
  : [
378
- 'var(--color-primary)',
379
- 'var(--color-secondary)',
380
- 'var(--color-info)',
381
- 'var(--color-success)',
382
- 'var(--color-warning)',
383
- 'var(--color-danger)',
348
+ 'var(--color-primary, currentColor)',
349
+ 'var(--color-secondary, currentColor)',
350
+ 'var(--color-info, currentColor)',
351
+ 'var(--color-success, currentColor)',
352
+ 'var(--color-warning, currentColor)',
353
+ 'var(--color-danger, currentColor)',
384
354
  ]}
385
- padding={{ bottom: legend === true ? 32 : 0 }}
355
+ padding={{ bottom: legend ? 32 : 0 }}
386
356
  {...restProps}
387
- tooltip={tooltip === false ? false : props.tooltip?.context}
357
+ tooltip={tooltip === false
358
+ ? false
359
+ : { ...props.tooltip?.context, ...(typeof tooltip === 'object' ? tooltip : null) }}
388
360
  >
389
361
  {#snippet children({ context })}
390
362
  {@const snippetProps = {
@@ -394,10 +366,10 @@
394
366
  color: cAccessor,
395
367
  context,
396
368
  series,
397
- visibleSeries,
369
+ visibleSeries: seriesState.visibleSeries,
398
370
  visibleData,
399
- highlightKey: highlightKey.current,
400
- setHighlightKey: highlightKey.set,
371
+ highlightKey: seriesState.highlightKey.current,
372
+ setHighlightKey: seriesState.highlightKey.set,
401
373
  getLegendProps,
402
374
  getGroupProps,
403
375
  getArcProps,
@@ -451,8 +423,8 @@
451
423
  value={valueAccessor(data)}
452
424
  color={context.cScale?.(context.c(data))}
453
425
  {format}
454
- onpointerenter={() => (highlightKey.current = keyAccessor(data))}
455
- onpointerleave={() => (highlightKey.current = null)}
426
+ onpointerenter={() => (seriesState.highlightKey.current = keyAccessor(data))}
427
+ onpointerleave={() => (seriesState.highlightKey.current = null)}
456
428
  {...props.tooltip?.item}
457
429
  />
458
430
  </Tooltip.List>
@@ -71,10 +71,17 @@ import Arc, { type ArcPropsWithoutHTML } from '../Arc.svelte';
71
71
  import Group from '../Group.svelte';
72
72
  import { type Accessor } from '../../utils/common.js';
73
73
  import type { SeriesData, SimplifiedChartProps, SimplifiedChartPropsObject, SimplifiedChartSnippet } from './types.js';
74
+ declare function $$render<TData>(): {
75
+ props: ArcChartProps<TData>;
76
+ exports: {};
77
+ bindings: "context";
78
+ slots: {};
79
+ events: {};
80
+ };
74
81
  declare class __sveltets_Render<TData> {
75
- props(): ArcChartProps<TData>;
76
- events(): {};
77
- slots(): {};
82
+ props(): ReturnType<typeof $$render<TData>>['props'];
83
+ events(): ReturnType<typeof $$render<TData>>['events'];
84
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
78
85
  bindings(): "context";
79
86
  exports(): {};
80
87
  }
@@ -67,9 +67,7 @@
67
67
 
68
68
  <script lang="ts" generics="TData">
69
69
  import { onMount, type ComponentProps } from 'svelte';
70
- import { scaleLinear, scaleTime } from 'd3-scale';
71
70
  import { stack, stackOffsetDiverging, stackOffsetExpand, stackOffsetNone } from 'd3-shape';
72
- import { format } from '@layerstack/utils';
73
71
  import { cls } from '@layerstack/tailwind';
74
72
 
75
73
  import Area from '../Area.svelte';
@@ -94,7 +92,8 @@
94
92
  import { asAny } from '../../utils/types.js';
95
93
  import Spline from '../Spline.svelte';
96
94
  import type { SeriesData, SimplifiedChartProps, SimplifiedChartPropsObject } from './types.js';
97
- import { createLegendProps, SeriesState } from './utils.svelte.js';
95
+ import { SeriesState } from '../../states/series.svelte.js';
96
+ import { createLegendProps } from './utils.svelte.js';
98
97
  import { setTooltipMetaContext } from '../tooltip/tooltipMetaContext.js';
99
98
  import DefaultTooltip from './DefaultTooltip.svelte';
100
99
  import ChartAnnotations from './ChartAnnotations.svelte';
@@ -123,7 +122,6 @@
123
122
  renderContext = 'svg',
124
123
  profile = false,
125
124
  debug = false,
126
- xScale: xScaleProp,
127
125
  children: childrenProp,
128
126
  aboveContext,
129
127
  belowContext,
@@ -136,7 +134,14 @@
136
134
 
137
135
  const series = $derived(
138
136
  seriesProp === undefined
139
- ? [{ key: 'default', value: y, color: 'var(--color-primary)' }]
137
+ ? [
138
+ {
139
+ key: 'default',
140
+ label: typeof y === 'string' ? y : 'value',
141
+ value: y,
142
+ color: 'var(--color-primary, currentColor)',
143
+ },
144
+ ]
140
145
  : seriesProp
141
146
  );
142
147
 
@@ -190,11 +195,6 @@
190
195
  return _chartData;
191
196
  });
192
197
 
193
- // Default xScale based on first data's `x` value
194
- const xScale = $derived(
195
- xScaleProp ?? (accessor(x)(chartData[0]) instanceof Date ? scaleTime() : scaleLinear())
196
- );
197
-
198
198
  function isStackData(d: TData): d is TData & { stackData: any[] } {
199
199
  return d && typeof d === 'object' && 'stackData' in d;
200
200
  }
@@ -221,13 +221,6 @@
221
221
  ...(typeof s.props?.line === 'object' ? s.props.line : null),
222
222
  };
223
223
 
224
- const highlightClass =
225
- seriesState.visibleSeries.length > 1 &&
226
- seriesState.highlightKey.current &&
227
- seriesState.highlightKey.current !== s.key
228
- ? 'opacity-10'
229
- : '';
230
-
231
224
  return {
232
225
  data: s.data,
233
226
  y0: stackSeries
@@ -242,19 +235,18 @@
242
235
  : (s.value ?? (s.data ? undefined : s.key)),
243
236
  fill: s.color,
244
237
  fillOpacity: 0.3,
238
+ opacity:
239
+ // Checking `visibleSeries.length <= 1` fixes re-animated tweened areas on hover
240
+ seriesState.visibleSeries.length <= 1 || seriesState.isHighlighted(s.key, true) ? 1 : 0.1,
245
241
  ...props.area,
246
242
  ...s.props,
247
- class: cls(
248
- 'transition-opacity',
249
- // Checking `visibleSeries.length > 1` fixes re-animated tweened areas on hover
250
- highlightClass,
251
- props.area?.class,
252
- s.props?.class
253
- ),
243
+ class: cls(props.area?.class, s.props?.class),
254
244
  line: {
255
245
  stroke: s.color,
246
+ opacity:
247
+ // Checking `visibleSeries.length <= 1` fixes re-animated tweened areas on hover
248
+ seriesState.visibleSeries.length <= 1 || seriesState.isHighlighted(s.key, true) ? 1 : 0.1,
256
249
  ...lineProps,
257
- class: cls('transition-opacity', highlightClass, lineProps.class),
258
250
  },
259
251
  };
260
252
  }
@@ -271,16 +263,11 @@
271
263
  ? s.value[1]
272
264
  : (s.value ?? (s.data ? undefined : s.key)),
273
265
  fill: s.color,
266
+ stroke: 'var(--color-surface-100, light-dark(white, black))',
267
+ opacity: seriesState.isHighlighted(s.key, true) ? 1 : 0.1,
274
268
  ...props.points,
275
269
  ...(typeof points === 'object' ? points : null),
276
- class: cls(
277
- 'stroke-surface-200 transition-opacity',
278
- seriesState.highlightKey.current &&
279
- seriesState.highlightKey.current !== s.key &&
280
- 'opacity-10',
281
- props.points?.class,
282
- typeof points === 'object' && points.class
283
- ),
270
+ class: cls(props.points?.class, typeof points === 'object' && points.class),
284
271
  };
285
272
  }
286
273
 
@@ -295,16 +282,11 @@
295
282
  : Array.isArray(s.value)
296
283
  ? s.value[1]
297
284
  : (s.value ?? (s.data ? undefined : s.key)),
285
+ stroke: 'var(--color-surface-100, light-dark(white, black))',
286
+ opacity: seriesState.isHighlighted(s.key, true) ? 1 : 0.1,
298
287
  ...props.labels,
299
288
  ...(typeof labels === 'object' ? labels : null),
300
- class: cls(
301
- 'stroke-surface-200 transition-opacity',
302
- seriesState.highlightKey.current &&
303
- seriesState.highlightKey.current !== s.key &&
304
- 'opacity-10',
305
- props.labels?.class,
306
- typeof labels === 'object' && labels.class
307
- ),
289
+ class: cls(props.labels?.class, typeof labels === 'object' && labels.class),
308
290
  };
309
291
  }
310
292
 
@@ -317,7 +299,7 @@
317
299
  if (!context) return {};
318
300
  const seriesTooltipData =
319
301
  s.data && context.tooltip.data
320
- ? findRelatedData(s.data, context.tooltip.data, context.x)
302
+ ? (findRelatedData(s.data, context.tooltip.data, context.x) ?? {})
321
303
  : null;
322
304
  const highlightPointsProps =
323
305
  typeof props.highlight?.points === 'object' ? props.highlight.points : null;
@@ -332,19 +314,14 @@
332
314
  onPointEnter: () => (seriesState.highlightKey.current = s.key),
333
315
  onPointLeave: () => (seriesState.highlightKey.current = null),
334
316
  ...props.highlight,
317
+ opacity:
318
+ seriesState.highlightKey.current && seriesState.highlightKey.current !== s.key ? 0.1 : 1,
335
319
  points:
336
320
  props.highlight?.points == false
337
321
  ? false
338
322
  : {
339
323
  ...highlightPointsProps,
340
324
  fill: s.color,
341
- class: cls(
342
- 'transition-opacity',
343
- seriesState.highlightKey.current &&
344
- seriesState.highlightKey.current !== s.key &&
345
- 'opacity-10',
346
- highlightPointsProps?.class
347
- ),
348
325
  },
349
326
  };
350
327
  }
@@ -398,13 +375,7 @@
398
375
  if (axisDirection === 'y') {
399
376
  return {
400
377
  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
- },
378
+ format: seriesLayout === 'stackExpand' ? 'percentRound' : undefined,
408
379
  ...(typeof axis === 'object' ? axis : null),
409
380
  ...props.yAxis,
410
381
  };
@@ -412,7 +383,6 @@
412
383
 
413
384
  return {
414
385
  placement: radial ? 'angle' : 'bottom',
415
- format: (value) => format(value, undefined, { variant: 'short' }),
416
386
  ...(typeof axis === 'object' ? axis : null),
417
387
  ...props.xAxis,
418
388
  };
@@ -434,7 +404,6 @@
434
404
  data={chartData}
435
405
  {x}
436
406
  {xDomain}
437
- {xScale}
438
407
  y={resolveAccessor(y)}
439
408
  yBaseline={0}
440
409
  yNice
@@ -444,10 +413,11 @@
444
413
  tooltip={tooltip === false
445
414
  ? false
446
415
  : {
447
- mode: 'bisect-x',
416
+ mode: 'quadtree-x',
448
417
  onclick: onTooltipClick,
449
418
  debug,
450
419
  ...props.tooltip?.context,
420
+ ...(typeof tooltip === 'object' ? tooltip : null),
451
421
  }}
452
422
  brush={brush && (brush === true || brush.mode == undefined || brush.mode === 'integrated')
453
423
  ? {
@@ -42,10 +42,17 @@ import Labels from '../Labels.svelte';
42
42
  import Points from '../Points.svelte';
43
43
  import Rule from '../Rule.svelte';
44
44
  import type { SeriesData, SimplifiedChartProps, SimplifiedChartPropsObject } from './types.js';
45
+ declare function $$render<TData>(): {
46
+ props: AreaChartProps<TData>;
47
+ exports: {};
48
+ bindings: "context";
49
+ slots: {};
50
+ events: {};
51
+ };
45
52
  declare class __sveltets_Render<TData> {
46
- props(): AreaChartProps<TData>;
47
- events(): {};
48
- slots(): {};
53
+ props(): ReturnType<typeof $$render<TData>>['props'];
54
+ events(): ReturnType<typeof $$render<TData>>['events'];
55
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
49
56
  bindings(): "context";
50
57
  exports(): {};
51
58
  }