layerchart 0.53.0 → 0.54.1

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 (107) hide show
  1. package/dist/components/Arc.svelte +170 -144
  2. package/dist/components/Area.svelte +96 -67
  3. package/dist/components/Area.svelte.d.ts +1 -0
  4. package/dist/components/Axis.svelte +241 -234
  5. package/dist/components/Axis.svelte.d.ts +2 -1
  6. package/dist/components/Bar.svelte +72 -45
  7. package/dist/components/Bars.svelte +46 -34
  8. package/dist/components/Bars.svelte.d.ts +1 -0
  9. package/dist/components/Blur.svelte +5 -3
  10. package/dist/components/Bounds.svelte +37 -21
  11. package/dist/components/Brush.svelte +181 -110
  12. package/dist/components/Calendar.svelte +51 -38
  13. package/dist/components/Chart.svelte +296 -73
  14. package/dist/components/Chart.svelte.d.ts +42 -25
  15. package/dist/components/ChartClipPath.svelte +8 -5
  16. package/dist/components/ChartContext.svelte +243 -93
  17. package/dist/components/ChartContext.svelte.d.ts +15 -23
  18. package/dist/components/Circle.svelte +25 -16
  19. package/dist/components/CircleClipPath.svelte +16 -10
  20. package/dist/components/ClipPath.svelte +11 -7
  21. package/dist/components/ColorRamp.svelte +12 -10
  22. package/dist/components/ForceSimulation.svelte +185 -116
  23. package/dist/components/Frame.svelte +10 -6
  24. package/dist/components/GeoCircle.svelte +15 -9
  25. package/dist/components/GeoContext.svelte +109 -62
  26. package/dist/components/GeoEdgeFade.svelte +20 -14
  27. package/dist/components/GeoPath.svelte +107 -69
  28. package/dist/components/GeoPoint.svelte +32 -18
  29. package/dist/components/GeoSpline.svelte +30 -22
  30. package/dist/components/GeoTile.svelte +40 -30
  31. package/dist/components/GeoVisible.svelte +10 -7
  32. package/dist/components/Graticule.svelte +14 -8
  33. package/dist/components/Grid.svelte +178 -0
  34. package/dist/components/Grid.svelte.d.ts +35 -0
  35. package/dist/components/Group.svelte +43 -31
  36. package/dist/components/Highlight.svelte +284 -243
  37. package/dist/components/HitCanvas.svelte +75 -42
  38. package/dist/components/Hull.svelte +40 -20
  39. package/dist/components/Labels.svelte +84 -63
  40. package/dist/components/Labels.svelte.d.ts +2 -0
  41. package/dist/components/Legend.svelte +106 -75
  42. package/dist/components/Legend.svelte.d.ts +1 -1
  43. package/dist/components/Line.svelte +29 -19
  44. package/dist/components/LinearGradient.svelte +21 -15
  45. package/dist/components/Link.svelte +44 -22
  46. package/dist/components/MonthPath.svelte +23 -16
  47. package/dist/components/MotionPath.svelte +34 -25
  48. package/dist/components/Pack.svelte +21 -14
  49. package/dist/components/Partition.svelte +35 -20
  50. package/dist/components/Pattern.svelte +8 -6
  51. package/dist/components/Pie.svelte +76 -57
  52. package/dist/components/Point.svelte +11 -7
  53. package/dist/components/Points.svelte +178 -143
  54. package/dist/components/RadialGradient.svelte +25 -18
  55. package/dist/components/Rect.svelte +33 -19
  56. package/dist/components/RectClipPath.svelte +16 -11
  57. package/dist/components/Rule.svelte +66 -42
  58. package/dist/components/Rule.svelte.d.ts +2 -0
  59. package/dist/components/Sankey.svelte +55 -30
  60. package/dist/components/Spline.svelte +118 -96
  61. package/dist/components/Text.svelte +137 -104
  62. package/dist/components/Threshold.svelte +18 -7
  63. package/dist/components/TileImage.svelte +56 -50
  64. package/dist/components/TransformContext.svelte +238 -136
  65. package/dist/components/TransformControls.svelte +57 -29
  66. package/dist/components/TransformControls.svelte.d.ts +1 -1
  67. package/dist/components/Tree.svelte +33 -23
  68. package/dist/components/Treemap.svelte +69 -41
  69. package/dist/components/Voronoi.svelte +55 -28
  70. package/dist/components/charts/AreaChart.svelte +162 -87
  71. package/dist/components/charts/AreaChart.svelte.d.ts +41 -3
  72. package/dist/components/charts/BarChart.svelte +207 -108
  73. package/dist/components/charts/BarChart.svelte.d.ts +41 -3
  74. package/dist/components/charts/LineChart.svelte +119 -47
  75. package/dist/components/charts/LineChart.svelte.d.ts +41 -3
  76. package/dist/components/charts/PieChart.svelte +117 -53
  77. package/dist/components/charts/PieChart.svelte.d.ts +17 -2
  78. package/dist/components/charts/ScatterChart.svelte +92 -42
  79. package/dist/components/charts/ScatterChart.svelte.d.ts +39 -3
  80. package/dist/components/index.d.ts +1 -0
  81. package/dist/components/index.js +1 -0
  82. package/dist/components/layout/Canvas.svelte +63 -43
  83. package/dist/components/layout/Html.svelte +28 -18
  84. package/dist/components/layout/Svg.svelte +47 -32
  85. package/dist/components/tooltip/Tooltip.svelte +143 -82
  86. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  87. package/dist/components/tooltip/TooltipContext.svelte +315 -248
  88. package/dist/components/tooltip/TooltipContext.svelte.d.ts +7 -0
  89. package/dist/components/tooltip/TooltipHeader.svelte +9 -3
  90. package/dist/components/tooltip/TooltipItem.svelte +17 -9
  91. package/dist/components/tooltip/TooltipList.svelte +2 -1
  92. package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
  93. package/dist/docs/Blockquote.svelte +4 -3
  94. package/dist/docs/Code.svelte +15 -8
  95. package/dist/docs/CurveMenuField.svelte +17 -12
  96. package/dist/docs/GeoDebug.svelte +13 -9
  97. package/dist/docs/Header1.svelte +2 -1
  98. package/dist/docs/Json.svelte +6 -4
  99. package/dist/docs/Layout.svelte +6 -6
  100. package/dist/docs/PathDataMenuField.svelte +52 -44
  101. package/dist/docs/Preview.svelte +48 -29
  102. package/dist/docs/TilesetField.svelte +80 -62
  103. package/dist/docs/TransformDebug.svelte +8 -5
  104. package/dist/docs/ViewSourceButton.svelte +13 -9
  105. package/dist/stores/motionStore.d.ts +1 -1
  106. package/dist/utils/scales.d.ts +4 -4
  107. package/package.json +29 -30
@@ -1,36 +1,64 @@
1
- <script>import { Button, Icon, MenuButton, Tooltip } from 'svelte-ux';
2
- import { cls } from '@layerstack/tailwind';
3
- import { mdiArrowULeftTop, mdiMagnifyPlusOutline, mdiMagnifyMinusOutline, mdiImageFilterCenterFocus, mdiChevronDown, mdiResize, mdiArrowExpandAll, mdiCancel, } from '@mdi/js';
4
- import { transformContext } from './TransformContext.svelte';
5
- export let placement = 'top-right';
6
- export let orientation = 'vertical';
7
- export let show = ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode'];
8
- $: menuPlacementByOrientationAndPlacement = {
1
+ <script lang="ts">
2
+ import { Button, Icon, MenuButton, Tooltip } from 'svelte-ux';
3
+ import { cls } from '@layerstack/tailwind';
4
+
5
+ import {
6
+ mdiArrowULeftTop,
7
+ mdiMagnifyPlusOutline,
8
+ mdiMagnifyMinusOutline,
9
+ mdiImageFilterCenterFocus,
10
+ mdiChevronDown,
11
+ mdiResize,
12
+ mdiArrowExpandAll,
13
+ mdiCancel,
14
+ } from '@mdi/js';
15
+
16
+ import { transformContext } from './TransformContext.svelte';
17
+
18
+ type Placement =
19
+ | 'top-left'
20
+ | 'top'
21
+ | 'top-right'
22
+ | 'left'
23
+ | 'center'
24
+ | 'right'
25
+ | 'bottom-left'
26
+ | 'bottom'
27
+ | 'bottom-right';
28
+
29
+ export let placement: Placement = 'top-right';
30
+ export let orientation: 'horizontal' | 'vertical' = 'vertical';
31
+
32
+ type Actions = 'zoomIn' | 'zoomOut' | 'center' | 'reset' | 'scrollMode';
33
+ export let show: Actions[] = ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode'];
34
+
35
+ $: menuPlacementByOrientationAndPlacement = {
9
36
  horizontal: {
10
- 'top-left': 'bottom-end',
11
- top: 'bottom-end',
12
- 'top-right': 'bottom-end',
13
- left: 'bottom-end',
14
- center: 'bottom-end',
15
- right: 'bottom-end',
16
- 'bottom-left': 'top-end',
17
- bottom: 'top-end',
18
- 'bottom-right': 'top-end',
37
+ 'top-left': 'bottom-end',
38
+ top: 'bottom-end',
39
+ 'top-right': 'bottom-end',
40
+ left: 'bottom-end',
41
+ center: 'bottom-end',
42
+ right: 'bottom-end',
43
+ 'bottom-left': 'top-end',
44
+ bottom: 'top-end',
45
+ 'bottom-right': 'top-end',
19
46
  },
20
47
  vertical: {
21
- 'top-left': 'right-start',
22
- top: 'right-start',
23
- 'top-right': 'left-start',
24
- left: 'right-start',
25
- center: 'right-start',
26
- right: 'left-start',
27
- 'bottom-left': 'right-end',
28
- bottom: 'right-end',
29
- 'bottom-right': 'left-end',
48
+ 'top-left': 'right-start',
49
+ top: 'right-start',
50
+ 'top-right': 'left-start',
51
+ left: 'right-start',
52
+ center: 'right-start',
53
+ right: 'left-start',
54
+ 'bottom-left': 'right-end',
55
+ bottom: 'right-end',
56
+ 'bottom-right': 'left-end',
30
57
  },
31
- };
32
- const transform = transformContext();
33
- const scrollMode = transform.scrollMode;
58
+ } as const;
59
+
60
+ const transform = transformContext();
61
+ const scrollMode = transform.scrollMode;
34
62
  </script>
35
63
 
36
64
  <!-- svelte-ignore a11y-no-static-element-interactions -->
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- placement?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
5
+ placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
6
6
  orientation?: ("horizontal" | "vertical") | undefined;
7
7
  show?: ("reset" | "scrollMode" | "zoomIn" | "zoomOut" | "center")[] | undefined;
8
8
  };
@@ -1,31 +1,41 @@
1
- <script>import { tree as d3Tree } from 'd3-hierarchy';
2
- import { chartContext } from './ChartContext.svelte';
3
- const { data, width, height } = chartContext();
4
- /**
5
- * Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
6
- * If unset, layout size is used instead. When a node size is specified, the root node is always
7
- * positioned at `⟨0, 0⟩`.
8
- *
9
- * see: https://github.com/d3/d3-hierarchy#tree_nodeSize
10
- */
11
- export let nodeSize = undefined;
12
- /**
13
- * see: https://github.com/d3/d3-hierarchy#tree_separation
14
- */
15
- export let separation = undefined;
16
- export let orientation = 'horizontal';
17
- let tree;
18
- $: {
1
+ <script lang="ts">
2
+ import { type HierarchyPointNode, tree as d3Tree, type TreeLayout } from 'd3-hierarchy';
3
+ import { chartContext } from './ChartContext.svelte';
4
+
5
+ const { data, width, height } = chartContext();
6
+
7
+ /**
8
+ * Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
9
+ * If unset, layout size is used instead. When a node size is specified, the root node is always
10
+ * positioned at `⟨0, 0⟩`.
11
+ *
12
+ * see: https://github.com/d3/d3-hierarchy#tree_nodeSize
13
+ */
14
+ export let nodeSize: [number, number] | undefined = undefined;
15
+
16
+ /**
17
+ * see: https://github.com/d3/d3-hierarchy#tree_separation
18
+ */
19
+ export let separation:
20
+ | ((a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number)
21
+ | undefined = undefined;
22
+
23
+ export let orientation: 'vertical' | 'horizontal' = 'horizontal';
24
+
25
+ let tree: TreeLayout<any>;
26
+ $: {
19
27
  tree = d3Tree().size(orientation === 'horizontal' ? [$height, $width] : [$width, $height]);
28
+
20
29
  if (nodeSize) {
21
- tree.nodeSize(nodeSize);
30
+ tree.nodeSize(nodeSize);
22
31
  }
23
32
  if (separation) {
24
- tree.separation(separation);
33
+ tree.separation(separation);
25
34
  }
26
- }
27
- // @ts-expect-error
28
- $: treeData = tree($data);
35
+ }
36
+
37
+ // @ts-expect-error
38
+ $: treeData = tree($data);
29
39
  </script>
30
40
 
31
41
  <slot nodes={treeData.descendants()} links={treeData.links()} />
@@ -1,60 +1,88 @@
1
- <script>import { treemap as d3treemap, treemapBinary, treemapDice, treemapResquarify, treemapSlice, treemapSliceDice, treemapSquarify, } from 'd3-hierarchy';
2
- import { chartContext } from './ChartContext.svelte';
3
- import { aspectTile } from '../utils/treemap.js';
4
- const { data, width, height } = chartContext();
5
- export let tile = treemapSquarify;
6
- export let padding = 0;
7
- export let paddingInner = 0;
8
- export let paddingOuter = 0;
9
- export let paddingTop = 0;
10
- export let paddingBottom = 0;
11
- export let paddingLeft = undefined;
12
- export let paddingRight = undefined;
13
- export let selected = null;
14
- $: tileFunc =
1
+ <script lang="ts">
2
+ import {
3
+ treemap as d3treemap,
4
+ treemapBinary,
5
+ treemapDice,
6
+ treemapResquarify,
7
+ treemapSlice,
8
+ treemapSliceDice,
9
+ treemapSquarify,
10
+ type HierarchyNode,
11
+ type HierarchyRectangularNode,
12
+ type TreemapLayout,
13
+ } from 'd3-hierarchy';
14
+
15
+ import { chartContext } from './ChartContext.svelte';
16
+ import { aspectTile } from '../utils/treemap.js';
17
+
18
+ const { data, width, height } = chartContext();
19
+
20
+ export let tile:
21
+ | typeof treemapSquarify
22
+ | 'binary'
23
+ | 'squarify'
24
+ | 'resquarify'
25
+ | 'dice'
26
+ | 'slice'
27
+ | 'sliceDice' = treemapSquarify;
28
+ export let padding = 0;
29
+ export let paddingInner = 0;
30
+ export let paddingOuter = 0;
31
+ export let paddingTop = 0;
32
+ export let paddingBottom = 0;
33
+ export let paddingLeft: number | undefined = undefined;
34
+ export let paddingRight: number | undefined = undefined;
35
+
36
+ export let selected: HierarchyRectangularNode<any> | null | undefined = null;
37
+
38
+ $: tileFunc =
15
39
  tile === 'squarify'
16
- ? treemapSquarify
17
- : tile === 'resquarify'
18
- ? treemapResquarify
19
- : tile === 'binary'
20
- ? treemapBinary
21
- : tile === 'dice'
22
- ? treemapDice
23
- : tile === 'slice'
24
- ? treemapSlice
25
- : tile === 'sliceDice'
26
- ? treemapSliceDice
27
- : tile;
28
- let treemap;
29
- $: {
40
+ ? treemapSquarify
41
+ : tile === 'resquarify'
42
+ ? treemapResquarify
43
+ : tile === 'binary'
44
+ ? treemapBinary
45
+ : tile === 'dice'
46
+ ? treemapDice
47
+ : tile === 'slice'
48
+ ? treemapSlice
49
+ : tile === 'sliceDice'
50
+ ? treemapSliceDice
51
+ : tile;
52
+
53
+ let treemap: TreemapLayout<any>;
54
+ $: {
30
55
  treemap = d3treemap()
31
- .size([$width, $height])
32
- .tile(aspectTile(tileFunc, $width, $height));
56
+ .size([$width, $height])
57
+ .tile(aspectTile(tileFunc, $width, $height));
58
+
33
59
  if (padding) {
34
- treemap.padding(padding);
60
+ treemap.padding(padding);
35
61
  }
36
62
  if (paddingInner) {
37
- treemap.paddingInner(paddingInner);
63
+ treemap.paddingInner(paddingInner);
38
64
  }
39
65
  if (paddingOuter) {
40
- treemap.paddingOuter(paddingOuter);
66
+ treemap.paddingOuter(paddingOuter);
41
67
  }
42
68
  if (paddingTop) {
43
- treemap.paddingTop(paddingTop);
69
+ treemap.paddingTop(paddingTop);
44
70
  }
45
71
  if (paddingBottom) {
46
- treemap.paddingBottom(paddingBottom);
72
+ treemap.paddingBottom(paddingBottom);
47
73
  }
48
74
  if (paddingLeft) {
49
- treemap.paddingLeft(paddingLeft);
75
+ treemap.paddingLeft(paddingLeft);
50
76
  }
51
77
  if (paddingRight) {
52
- treemap.paddingRight(paddingRight);
78
+ treemap.paddingRight(paddingRight);
53
79
  }
54
- }
55
- $: treemapData = treemap($data);
56
- // TODO: Remove selected
57
- $: selected = treemapData; // set initial selection
80
+ }
81
+
82
+ $: treemapData = treemap($data as HierarchyNode<any>);
83
+
84
+ // TODO: Remove selected
85
+ $: selected = treemapData; // set initial selection
58
86
  </script>
59
87
 
60
88
  <slot nodes={treemapData.descendants()} />
@@ -1,41 +1,68 @@
1
- <script>import { createEventDispatcher } from 'svelte';
2
- import { min } from 'd3-array';
3
- import { Delaunay } from 'd3-delaunay';
4
- // @ts-expect-error
5
- import { geoVoronoi } from 'd3-geo-voronoi';
6
- import { pointRadial } from 'd3-shape';
7
- import { cls } from '@layerstack/tailwind';
8
- import { chartContext } from './ChartContext.svelte';
9
- import GeoPath from './GeoPath.svelte';
10
- import { geoContext } from './GeoContext.svelte';
11
- const { flatData, xGet, yGet, x: xContext, y: yContext, width, height, radial } = chartContext();
12
- const geo = geoContext();
13
- /** Override data instead of using context */
14
- export let data = undefined;
15
- export let classes = {};
16
- const dispatch = createEventDispatcher();
17
- $: points = (data ?? $flatData).map((d) => {
1
+ <script lang="ts">
2
+ import { createEventDispatcher } from 'svelte';
3
+ import { min } from 'd3-array';
4
+ import { Delaunay } from 'd3-delaunay';
5
+ import type { GeoPermissibleObjects } from 'd3-geo';
6
+ // @ts-expect-error
7
+ import { geoVoronoi } from 'd3-geo-voronoi';
8
+ import { pointRadial } from 'd3-shape';
9
+ import { cls } from '@layerstack/tailwind';
10
+
11
+ import { chartContext } from './ChartContext.svelte';
12
+ import GeoPath from './GeoPath.svelte';
13
+ import { geoContext, type GeoContext } from './GeoContext.svelte';
14
+
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
+ const dispatch = createEventDispatcher<{
27
+ click: { data: any; point?: [number, number]; feature?: GeoPermissibleObjects };
28
+ pointerenter: {
29
+ event: PointerEvent;
30
+ data: any;
31
+ point?: [number, number];
32
+ feature?: GeoPermissibleObjects;
33
+ };
34
+ pointermove: {
35
+ event: PointerEvent;
36
+ data: any;
37
+ point?: [number, number];
38
+ feature?: GeoPermissibleObjects;
39
+ };
40
+ }>();
41
+
42
+ $: points = (data ?? $flatData).map((d: any) => {
18
43
  // geo voronoi needs raw latitude/longtude, not mapped to range (chart dimensions)
19
44
  const xValue = $geo ? $xContext(d) : $xGet(d);
20
45
  const yValue = $geo ? $yContext(d) : $yGet(d);
46
+
21
47
  const x = Array.isArray(xValue) ? min(xValue) : xValue;
22
48
  const y = Array.isArray(yValue) ? min(yValue) : yValue;
23
- let point;
49
+
50
+ let point: [number, number];
24
51
  if ($radial) {
25
- const radialPoint = pointRadial(x, y);
26
- // Assume radial is also centered
27
- point = [radialPoint[0] + $width / 2, radialPoint[1] + $height / 2];
28
- }
29
- else {
30
- point = [x, y];
52
+ const radialPoint = pointRadial(x, y);
53
+ // Assume radial is also centered
54
+ point = [radialPoint[0] + $width / 2, radialPoint[1] + $height / 2];
55
+ } else {
56
+ point = [x, y];
31
57
  }
32
58
  // @ts-expect-error
33
59
  point.data = d;
34
60
  return point;
35
- });
36
- // Width and/or height can sometimes be negative (when loading data remotely and updately)
37
- $: boundWidth = Math.max($width, 0);
38
- $: boundHeight = Math.max($height, 0);
61
+ });
62
+
63
+ // Width and/or height can sometimes be negative (when loading data remotely and updately)
64
+ $: boundWidth = Math.max($width, 0);
65
+ $: boundHeight = Math.max($height, 0);
39
66
  </script>
40
67
 
41
68
  <g {...$$restProps} class={cls(classes.root, $$props.class)}>