layerchart 0.54.0 → 0.55.0

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 (105) 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 +205 -155
  5. package/dist/components/Bar.svelte +72 -45
  6. package/dist/components/Bars.svelte +45 -34
  7. package/dist/components/Blur.svelte +5 -3
  8. package/dist/components/Bounds.svelte +37 -21
  9. package/dist/components/Brush.svelte +269 -112
  10. package/dist/components/Brush.svelte.d.ts +7 -0
  11. package/dist/components/Calendar.svelte +51 -38
  12. package/dist/components/Chart.svelte +295 -74
  13. package/dist/components/Chart.svelte.d.ts +17 -17
  14. package/dist/components/ChartClipPath.svelte +8 -5
  15. package/dist/components/ChartContext.svelte +243 -93
  16. package/dist/components/ChartContext.svelte.d.ts +15 -23
  17. package/dist/components/Circle.svelte +25 -16
  18. package/dist/components/CircleClipPath.svelte +16 -10
  19. package/dist/components/ClipPath.svelte +11 -7
  20. package/dist/components/ColorRamp.svelte +12 -10
  21. package/dist/components/ForceSimulation.svelte +185 -116
  22. package/dist/components/Frame.svelte +10 -6
  23. package/dist/components/GeoCircle.svelte +15 -9
  24. package/dist/components/GeoContext.svelte +109 -62
  25. package/dist/components/GeoEdgeFade.svelte +20 -14
  26. package/dist/components/GeoPath.svelte +107 -69
  27. package/dist/components/GeoPoint.svelte +32 -18
  28. package/dist/components/GeoSpline.svelte +30 -22
  29. package/dist/components/GeoTile.svelte +40 -30
  30. package/dist/components/GeoVisible.svelte +10 -7
  31. package/dist/components/Graticule.svelte +14 -8
  32. package/dist/components/Grid.svelte +75 -48
  33. package/dist/components/Group.svelte +43 -31
  34. package/dist/components/Highlight.svelte +284 -243
  35. package/dist/components/HitCanvas.svelte +75 -42
  36. package/dist/components/Hull.svelte +40 -20
  37. package/dist/components/Labels.svelte +81 -70
  38. package/dist/components/Legend.svelte +105 -74
  39. package/dist/components/Legend.svelte.d.ts +1 -1
  40. package/dist/components/Line.svelte +65 -19
  41. package/dist/components/Line.svelte.d.ts +13 -1
  42. package/dist/components/LinearGradient.svelte +21 -15
  43. package/dist/components/Link.svelte +94 -22
  44. package/dist/components/Link.svelte.d.ts +17 -1
  45. package/dist/components/Marker.svelte +81 -0
  46. package/dist/components/Marker.svelte.d.ts +28 -0
  47. package/dist/components/MonthPath.svelte +23 -16
  48. package/dist/components/MotionPath.svelte +34 -25
  49. package/dist/components/Pack.svelte +21 -14
  50. package/dist/components/Partition.svelte +35 -20
  51. package/dist/components/Pattern.svelte +8 -6
  52. package/dist/components/Pie.svelte +76 -57
  53. package/dist/components/Point.svelte +11 -7
  54. package/dist/components/Points.svelte +178 -143
  55. package/dist/components/RadialGradient.svelte +25 -18
  56. package/dist/components/Rect.svelte +33 -19
  57. package/dist/components/RectClipPath.svelte +16 -11
  58. package/dist/components/Rule.svelte +50 -42
  59. package/dist/components/Sankey.svelte +55 -30
  60. package/dist/components/Spline.svelte +167 -96
  61. package/dist/components/Spline.svelte.d.ts +15 -0
  62. package/dist/components/Text.svelte +137 -104
  63. package/dist/components/Threshold.svelte +18 -7
  64. package/dist/components/TileImage.svelte +56 -50
  65. package/dist/components/TransformContext.svelte +235 -135
  66. package/dist/components/TransformControls.svelte +57 -29
  67. package/dist/components/TransformControls.svelte.d.ts +1 -1
  68. package/dist/components/Tree.svelte +33 -23
  69. package/dist/components/Treemap.svelte +69 -41
  70. package/dist/components/Voronoi.svelte +55 -28
  71. package/dist/components/charts/AreaChart.svelte +138 -87
  72. package/dist/components/charts/AreaChart.svelte.d.ts +4 -4
  73. package/dist/components/charts/BarChart.svelte +179 -114
  74. package/dist/components/charts/BarChart.svelte.d.ts +4 -4
  75. package/dist/components/charts/LineChart.svelte +97 -53
  76. package/dist/components/charts/LineChart.svelte.d.ts +4 -4
  77. package/dist/components/charts/PieChart.svelte +104 -54
  78. package/dist/components/charts/PieChart.svelte.d.ts +3 -3
  79. package/dist/components/charts/ScatterChart.svelte +83 -48
  80. package/dist/components/charts/ScatterChart.svelte.d.ts +4 -4
  81. package/dist/components/layout/Canvas.svelte +63 -43
  82. package/dist/components/layout/Html.svelte +28 -18
  83. package/dist/components/layout/Svg.svelte +47 -32
  84. package/dist/components/tooltip/Tooltip.svelte +137 -91
  85. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  86. package/dist/components/tooltip/TooltipContext.svelte +315 -249
  87. package/dist/components/tooltip/TooltipHeader.svelte +9 -3
  88. package/dist/components/tooltip/TooltipItem.svelte +17 -9
  89. package/dist/components/tooltip/TooltipList.svelte +2 -1
  90. package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
  91. package/dist/docs/Blockquote.svelte +4 -3
  92. package/dist/docs/Code.svelte +15 -8
  93. package/dist/docs/CurveMenuField.svelte +17 -12
  94. package/dist/docs/GeoDebug.svelte +13 -9
  95. package/dist/docs/Header1.svelte +2 -1
  96. package/dist/docs/Json.svelte +6 -4
  97. package/dist/docs/Layout.svelte +6 -6
  98. package/dist/docs/PathDataMenuField.svelte +52 -44
  99. package/dist/docs/Preview.svelte +39 -33
  100. package/dist/docs/TilesetField.svelte +80 -62
  101. package/dist/docs/TransformDebug.svelte +8 -5
  102. package/dist/docs/ViewSourceButton.svelte +13 -9
  103. package/dist/stores/motionStore.d.ts +1 -1
  104. package/dist/utils/scales.d.ts +3 -3
  105. package/package.json +29 -30
@@ -1,41 +1,56 @@
1
- <script>import { cls } from '@layerstack/tailwind';
2
- import { chartContext } from '../ChartContext.svelte';
3
- import { transformContext } from '../TransformContext.svelte';
4
- /** The layer's `<svg>` tag. Useful for bindings. */
5
- export let element = undefined;
6
- /** The layer's `<g>` tag. Useful for bindings. */
7
- export let innerElement = undefined;
8
- /** The layer's z-index. */
9
- export let zIndex = undefined;
10
- /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
11
- export let pointerEvents = undefined;
12
- /** A string passed to the `viewBox` property on the `<svg>` tag. */
13
- export let viewBox = undefined;
14
- /** A string passed to the `aria-label` property on the `<svg>` tag. */
15
- export let label = undefined;
16
- /** A string passed to the `aria-labelledby property` on the `<svg>` tag. */
17
- export let labelledBy = undefined;
18
- /** A string passed to the `aria-describedby` property on the `<svg>` tag. */
19
- export let describedBy = undefined;
20
- /** Shorthand to set the contents of `<title></title>` for accessibility. You can also set arbitrary HTML via the "title" slot but this is a convenient shorthand. If you use the "title" slot, this prop is ignored. */
21
- export let title = undefined;
22
- /**
23
- * Translate children to center, useful for radial layouts
24
- */
25
- export let center = false;
26
- const { containerWidth, containerHeight, width, height, padding } = chartContext();
27
- const { mode, scale, translate } = transformContext();
28
- $: transform = center
1
+ <script lang="ts">
2
+ import { cls } from '@layerstack/tailwind';
3
+
4
+ import { chartContext } from '../ChartContext.svelte';
5
+ import { transformContext } from '../TransformContext.svelte';
6
+
7
+ /** The layer's `<svg>` tag. Useful for bindings. */
8
+ export let element: SVGElement | undefined = undefined;
9
+
10
+ /** The layer's `<g>` tag. Useful for bindings. */
11
+ export let innerElement: SVGGElement | undefined = undefined;
12
+
13
+ /** The layer's z-index. */
14
+ export let zIndex = undefined;
15
+
16
+ /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
17
+ export let pointerEvents: boolean | undefined = undefined;
18
+
19
+ /** A string passed to the `viewBox` property on the `<svg>` tag. */
20
+ export let viewBox: string | undefined = undefined;
21
+
22
+ /** A string passed to the `aria-label` property on the `<svg>` tag. */
23
+ export let label: string | undefined = undefined;
24
+
25
+ /** A string passed to the `aria-labelledby property` on the `<svg>` tag. */
26
+ export let labelledBy: string | undefined = undefined;
27
+
28
+ /** A string passed to the `aria-describedby` property on the `<svg>` tag. */
29
+ export let describedBy: string | undefined = undefined;
30
+
31
+ /** Shorthand to set the contents of `<title></title>` for accessibility. You can also set arbitrary HTML via the "title" slot but this is a convenient shorthand. If you use the "title" slot, this prop is ignored. */
32
+ export let title: string | undefined = undefined;
33
+
34
+ /**
35
+ * Translate children to center, useful for radial layouts
36
+ */
37
+ export let center: boolean | 'x' | 'y' = false;
38
+
39
+ const { containerWidth, containerHeight, width, height, padding } = chartContext();
40
+
41
+ const { mode, scale, translate } = transformContext();
42
+
43
+ $: transform = center
29
44
  ? `translate(${center === 'x' || center === true ? $width / 2 : 0}, ${center === 'y' || center === true ? $height / 2 : 0})`
30
45
  : '';
31
- $: if (mode === 'canvas') {
46
+ $: if (mode === 'canvas') {
32
47
  const center = { x: $width / 2, y: $height / 2 };
33
48
  const newTranslate = {
34
- x: $translate.x * $scale + center.x - center.x * $scale,
35
- y: $translate.y * $scale + center.y - center.y * $scale,
49
+ x: $translate.x * $scale + center.x - center.x * $scale,
50
+ y: $translate.y * $scale + center.y - center.y * $scale,
36
51
  };
37
52
  transform = `translate(${newTranslate.x},${newTranslate.y}) scale(${$scale})`;
38
- }
53
+ }
39
54
  </script>
40
55
 
41
56
  <!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -1,115 +1,161 @@
1
- <script>import { fade } from 'svelte/transition';
2
- import { cls } from '@layerstack/tailwind';
3
- import { chartContext } from './../ChartContext.svelte';
4
- import { tooltipContext } from './TooltipContext.svelte';
5
- import { motionStore } from '../../stores/motionStore.js';
6
- import { isScaleBand } from '../../utils/scales.js';
7
- /** `x` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
8
- export let x = 'pointer';
9
- /** `y` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
10
- export let y = 'pointer';
11
- /** Offset added to `x` position */
12
- export let xOffset = x === 'pointer' ? 10 : 0;
13
- /** Offset added to `y` position */
14
- export let yOffset = y === 'pointer' ? 10 : 0;
15
- export let anchor = 'top-left';
16
- export let contained = 'container'; // TODO: Support 'window' using getBoundingClientRect()
17
- export let variant = 'default';
18
- /** Set to `false` to disable spring transitions */
19
- export let motion = true;
20
- export let classes = {};
21
- const { padding, xScale, xGet, yScale, yGet, containerWidth, containerHeight } = chartContext();
22
- const tooltip = tooltipContext();
23
- let tooltipWidth = 0;
24
- let tooltipHeight = 0;
25
- const xPos = motionStore($tooltip.x, { spring: motion });
26
- const yPos = motionStore($tooltip.y, { spring: motion });
27
- function alignValue(value, align, addlOffset, tooltipSize) {
1
+ <script lang="ts">
2
+ import { fade } from 'svelte/transition';
3
+ import { cls } from '@layerstack/tailwind';
4
+
5
+ import { chartContext } from './../ChartContext.svelte';
6
+ import { tooltipContext } from './TooltipContext.svelte';
7
+ import { motionStore } from '../../stores/motionStore.js';
8
+ import { isScaleBand } from '../../utils/scales.js';
9
+
10
+ /** `x` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
11
+ export let x: 'pointer' | 'data' | number | undefined = 'pointer';
12
+ /** `y` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
13
+ export let y: 'pointer' | 'data' | number | undefined = 'pointer';
14
+
15
+ /** Offset added to `x` position */
16
+ export let xOffset = x === 'pointer' ? 10 : 0;
17
+
18
+ /** Offset added to `y` position */
19
+ export let yOffset = y === 'pointer' ? 10 : 0;
20
+
21
+ /** Align based on edge of tooltip */
22
+ type Placement =
23
+ | 'top-left'
24
+ | 'top'
25
+ | 'top-right'
26
+ | 'left'
27
+ | 'center'
28
+ | 'right'
29
+ | 'bottom-left'
30
+ | 'bottom'
31
+ | 'bottom-right';
32
+ export let anchor: Placement = 'top-left';
33
+
34
+ export let contained: 'container' | false = 'container'; // TODO: Support 'window' using getBoundingClientRect()
35
+ export let variant: 'default' | 'invert' | 'none' = 'default';
36
+
37
+ /** Set to `false` to disable spring transitions */
38
+ export let motion = true;
39
+
40
+ export let classes: {
41
+ root?: string;
42
+ container?: string;
43
+ header?: string;
44
+ content?: string;
45
+ } = {};
46
+
47
+ const { padding, xScale, xGet, yScale, yGet, containerWidth, containerHeight } = chartContext();
48
+ const tooltip = tooltipContext();
49
+
50
+ let tooltipWidth = 0;
51
+ let tooltipHeight = 0;
52
+
53
+ const xPos = motionStore($tooltip.x, { spring: motion });
54
+ const yPos = motionStore($tooltip.y, { spring: motion });
55
+
56
+ type Align = 'start' | 'center' | 'end';
57
+
58
+ function alignValue(value: number, align: Align, addlOffset: number, tooltipSize: number) {
28
59
  const alignOffset = align === 'center' ? tooltipSize / 2 : align === 'end' ? tooltipSize : 0;
29
60
  return value + (align === 'end' ? -addlOffset : addlOffset) - alignOffset;
30
- }
31
- $: if ($tooltip?.data) {
61
+ }
62
+
63
+ $: if ($tooltip?.data) {
32
64
  const xBandOffset = isScaleBand($xScale)
33
- ? $xScale.step() / 2 - ($xScale.padding() * $xScale.step()) / 2
34
- : 0;
35
- const xValue = typeof x === 'number'
65
+ ? $xScale.step() / 2 - ($xScale.padding() * $xScale.step()) / 2
66
+ : 0;
67
+
68
+ const xValue: number =
69
+ typeof x === 'number'
36
70
  ? x
37
71
  : x === 'data'
38
- ? $xGet($tooltip.data) + $padding.left + xBandOffset
39
- : $tooltip.x;
40
- let xAlign = 'start';
72
+ ? $xGet($tooltip.data) + $padding.left + xBandOffset
73
+ : $tooltip.x;
74
+
75
+ let xAlign: Align = 'start';
41
76
  switch (anchor) {
42
- case 'top-left':
43
- case 'left':
44
- case 'bottom-left':
45
- xAlign = 'start';
46
- break;
47
- case 'top':
48
- case 'center':
49
- case 'bottom':
50
- xAlign = 'center';
51
- break;
52
- case 'top-right':
53
- case 'right':
54
- case 'bottom-right':
55
- xAlign = 'end';
56
- break;
77
+ case 'top-left':
78
+ case 'left':
79
+ case 'bottom-left':
80
+ xAlign = 'start';
81
+ break;
82
+
83
+ case 'top':
84
+ case 'center':
85
+ case 'bottom':
86
+ xAlign = 'center';
87
+ break;
88
+
89
+ case 'top-right':
90
+ case 'right':
91
+ case 'bottom-right':
92
+ xAlign = 'end';
93
+ break;
57
94
  }
95
+
58
96
  const yBandOffset = isScaleBand($yScale)
59
- ? $yScale.step() / 2 - ($yScale.padding() * $yScale.step()) / 2
60
- : 0;
61
- const yValue = typeof y === 'number'
97
+ ? $yScale.step() / 2 - ($yScale.padding() * $yScale.step()) / 2
98
+ : 0;
99
+ const yValue: number =
100
+ typeof y === 'number'
62
101
  ? y
63
102
  : y === 'data'
64
- ? $yGet($tooltip.data) + $padding.top + yBandOffset
65
- : $tooltip.y;
66
- let yAlign = 'start';
103
+ ? $yGet($tooltip.data) + $padding.top + yBandOffset
104
+ : $tooltip.y;
105
+
106
+ let yAlign: Align = 'start';
67
107
  switch (anchor) {
68
- case 'top-left':
69
- case 'top':
70
- case 'top-right':
71
- yAlign = 'start';
72
- break;
73
- case 'left':
74
- case 'center':
75
- case 'right':
76
- yAlign = 'center';
77
- break;
78
- case 'bottom-left':
79
- case 'bottom':
80
- case 'bottom-right':
81
- yAlign = 'end';
82
- break;
108
+ case 'top-left':
109
+ case 'top':
110
+ case 'top-right':
111
+ yAlign = 'start';
112
+ break;
113
+
114
+ case 'left':
115
+ case 'center':
116
+ case 'right':
117
+ yAlign = 'center';
118
+ break;
119
+
120
+ case 'bottom-left':
121
+ case 'bottom':
122
+ case 'bottom-right':
123
+ yAlign = 'end';
124
+ break;
83
125
  }
126
+
84
127
  const rect = {
85
- top: alignValue(yValue, yAlign, yOffset, tooltipHeight),
86
- left: alignValue(xValue, xAlign, xOffset, tooltipWidth),
87
- // set below
88
- bottom: 0,
89
- right: 0,
128
+ top: alignValue(yValue, yAlign, yOffset, tooltipHeight),
129
+ left: alignValue(xValue, xAlign, xOffset, tooltipWidth),
130
+ // set below
131
+ bottom: 0,
132
+ right: 0,
90
133
  };
91
134
  rect.bottom = rect.top + tooltipHeight;
92
135
  rect.right = rect.left + tooltipWidth;
136
+
93
137
  // Check if outside of container and swap align side accordingly
94
138
  if (contained === 'container') {
95
- if ((xAlign === 'start' || xAlign === 'center') && rect.right > $containerWidth) {
96
- rect.left = alignValue(xValue, 'end', xOffset, tooltipWidth);
97
- }
98
- if ((xAlign === 'end' || xAlign === 'center') && rect.left < $padding.left) {
99
- rect.left = alignValue(xValue, 'start', xOffset, tooltipWidth);
100
- }
101
- rect.right = rect.left + tooltipWidth;
102
- if ((yAlign === 'start' || yAlign === 'center') && rect.bottom > $containerHeight) {
103
- rect.top = alignValue(yValue, 'end', yOffset, tooltipHeight);
104
- }
105
- if ((yAlign === 'end' || yAlign === 'center') && rect.top < $padding.top) {
106
- rect.top = alignValue(yValue, 'start', yOffset, tooltipHeight);
107
- }
108
- rect.bottom = rect.top + tooltipHeight;
139
+ if ((xAlign === 'start' || xAlign === 'center') && rect.right > $containerWidth) {
140
+ rect.left = alignValue(xValue, 'end', xOffset, tooltipWidth);
141
+ }
142
+ if ((xAlign === 'end' || xAlign === 'center') && rect.left < $padding.left) {
143
+ rect.left = alignValue(xValue, 'start', xOffset, tooltipWidth);
144
+ }
145
+ rect.right = rect.left + tooltipWidth;
146
+
147
+ if ((yAlign === 'start' || yAlign === 'center') && rect.bottom > $containerHeight) {
148
+ rect.top = alignValue(yValue, 'end', yOffset, tooltipHeight);
149
+ }
150
+ if ((yAlign === 'end' || yAlign === 'center') && rect.top < $padding.top) {
151
+ rect.top = alignValue(yValue, 'start', yOffset, tooltipHeight);
152
+ }
153
+ rect.bottom = rect.top + tooltipHeight;
109
154
  }
155
+
110
156
  $yPos = rect.top;
111
157
  $xPos = rect.left;
112
- }
158
+ }
113
159
  </script>
114
160
 
115
161
  {#if $tooltip.data}
@@ -6,7 +6,7 @@ declare const __propDef: {
6
6
  y?: "pointer" | "data" | number | undefined;
7
7
  xOffset?: number | undefined;
8
8
  yOffset?: number | undefined;
9
- anchor?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
9
+ anchor?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
10
10
  contained?: ("container" | false) | undefined;
11
11
  variant?: ("default" | "invert" | "none") | undefined;
12
12
  motion?: boolean | undefined;