layerchart 0.54.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 (99) 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 +181 -110
  10. package/dist/components/Calendar.svelte +51 -38
  11. package/dist/components/Chart.svelte +295 -74
  12. package/dist/components/Chart.svelte.d.ts +17 -17
  13. package/dist/components/ChartClipPath.svelte +8 -5
  14. package/dist/components/ChartContext.svelte +243 -93
  15. package/dist/components/ChartContext.svelte.d.ts +15 -23
  16. package/dist/components/Circle.svelte +25 -16
  17. package/dist/components/CircleClipPath.svelte +16 -10
  18. package/dist/components/ClipPath.svelte +11 -7
  19. package/dist/components/ColorRamp.svelte +12 -10
  20. package/dist/components/ForceSimulation.svelte +185 -116
  21. package/dist/components/Frame.svelte +10 -6
  22. package/dist/components/GeoCircle.svelte +15 -9
  23. package/dist/components/GeoContext.svelte +109 -62
  24. package/dist/components/GeoEdgeFade.svelte +20 -14
  25. package/dist/components/GeoPath.svelte +107 -69
  26. package/dist/components/GeoPoint.svelte +32 -18
  27. package/dist/components/GeoSpline.svelte +30 -22
  28. package/dist/components/GeoTile.svelte +40 -30
  29. package/dist/components/GeoVisible.svelte +10 -7
  30. package/dist/components/Graticule.svelte +14 -8
  31. package/dist/components/Grid.svelte +75 -48
  32. package/dist/components/Group.svelte +43 -31
  33. package/dist/components/Highlight.svelte +284 -243
  34. package/dist/components/HitCanvas.svelte +75 -42
  35. package/dist/components/Hull.svelte +40 -20
  36. package/dist/components/Labels.svelte +81 -70
  37. package/dist/components/Legend.svelte +105 -74
  38. package/dist/components/Legend.svelte.d.ts +1 -1
  39. package/dist/components/Line.svelte +29 -19
  40. package/dist/components/LinearGradient.svelte +21 -15
  41. package/dist/components/Link.svelte +44 -22
  42. package/dist/components/MonthPath.svelte +23 -16
  43. package/dist/components/MotionPath.svelte +34 -25
  44. package/dist/components/Pack.svelte +21 -14
  45. package/dist/components/Partition.svelte +35 -20
  46. package/dist/components/Pattern.svelte +8 -6
  47. package/dist/components/Pie.svelte +76 -57
  48. package/dist/components/Point.svelte +11 -7
  49. package/dist/components/Points.svelte +178 -143
  50. package/dist/components/RadialGradient.svelte +25 -18
  51. package/dist/components/Rect.svelte +33 -19
  52. package/dist/components/RectClipPath.svelte +16 -11
  53. package/dist/components/Rule.svelte +50 -42
  54. package/dist/components/Sankey.svelte +55 -30
  55. package/dist/components/Spline.svelte +118 -96
  56. package/dist/components/Text.svelte +137 -104
  57. package/dist/components/Threshold.svelte +18 -7
  58. package/dist/components/TileImage.svelte +56 -50
  59. package/dist/components/TransformContext.svelte +235 -135
  60. package/dist/components/TransformControls.svelte +57 -29
  61. package/dist/components/TransformControls.svelte.d.ts +1 -1
  62. package/dist/components/Tree.svelte +33 -23
  63. package/dist/components/Treemap.svelte +69 -41
  64. package/dist/components/Voronoi.svelte +55 -28
  65. package/dist/components/charts/AreaChart.svelte +128 -77
  66. package/dist/components/charts/AreaChart.svelte.d.ts +1 -1
  67. package/dist/components/charts/BarChart.svelte +169 -104
  68. package/dist/components/charts/BarChart.svelte.d.ts +1 -1
  69. package/dist/components/charts/LineChart.svelte +87 -43
  70. package/dist/components/charts/LineChart.svelte.d.ts +1 -1
  71. package/dist/components/charts/PieChart.svelte +102 -52
  72. package/dist/components/charts/PieChart.svelte.d.ts +1 -1
  73. package/dist/components/charts/ScatterChart.svelte +73 -38
  74. package/dist/components/charts/ScatterChart.svelte.d.ts +1 -1
  75. package/dist/components/layout/Canvas.svelte +63 -43
  76. package/dist/components/layout/Html.svelte +28 -18
  77. package/dist/components/layout/Svg.svelte +47 -32
  78. package/dist/components/tooltip/Tooltip.svelte +137 -91
  79. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  80. package/dist/components/tooltip/TooltipContext.svelte +315 -249
  81. package/dist/components/tooltip/TooltipHeader.svelte +9 -3
  82. package/dist/components/tooltip/TooltipItem.svelte +17 -9
  83. package/dist/components/tooltip/TooltipList.svelte +2 -1
  84. package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
  85. package/dist/docs/Blockquote.svelte +4 -3
  86. package/dist/docs/Code.svelte +15 -8
  87. package/dist/docs/CurveMenuField.svelte +17 -12
  88. package/dist/docs/GeoDebug.svelte +13 -9
  89. package/dist/docs/Header1.svelte +2 -1
  90. package/dist/docs/Json.svelte +6 -4
  91. package/dist/docs/Layout.svelte +6 -6
  92. package/dist/docs/PathDataMenuField.svelte +52 -44
  93. package/dist/docs/Preview.svelte +39 -33
  94. package/dist/docs/TilesetField.svelte +80 -62
  95. package/dist/docs/TransformDebug.svelte +8 -5
  96. package/dist/docs/ViewSourceButton.svelte +13 -9
  97. package/dist/stores/motionStore.d.ts +1 -1
  98. package/dist/utils/scales.d.ts +3 -3
  99. package/package.json +29 -30
@@ -1,180 +1,230 @@
1
- <script>import {} from 'svelte';
2
- import { fade } from 'svelte/transition';
3
- import { cubicIn } from 'svelte/easing';
4
- import { extent } from 'd3-array';
5
- import { pointRadial } from 'd3-shape';
6
- import { format as formatValue } from '@layerstack/utils';
7
- import { cls } from '@layerstack/tailwind';
8
- import { chartContext } from './ChartContext.svelte';
9
- import Line from './Line.svelte';
10
- import Rule from './Rule.svelte';
11
- import Text from './Text.svelte';
12
- import { isScaleBand } from '../utils/scales.js';
13
- const { xScale, yScale, xRange, yRange, width, height, padding } = chartContext();
14
- /** Location of axis */
15
- export let placement;
16
- /** Axis label */
17
- export let label = '';
18
- /** Location of axis label */
19
- export let labelPlacement = 'middle';
20
- /** Props applied label Text */
21
- export let labelProps = undefined;
22
- /** Draw a rule line. Use Rule component for greater rendering order control */
23
- export let rule = false;
24
- /** Draw a grid lines */
25
- export let grid = false;
26
- /** Control the number of ticks*/
27
- export let ticks = undefined;
28
- /** Length of the tick line */
29
- export let tickLength = 4;
30
- /** Format tick labels */
31
- export let format = undefined;
32
- /** Props to apply to each tick label */
33
- export let tickLabelProps = undefined;
34
- export let spring = undefined;
35
- export let tweened = undefined;
36
- export let transitionIn = tweened
1
+ <script lang="ts">
2
+ import { type ComponentProps } from 'svelte';
3
+ import { fade } from 'svelte/transition';
4
+ import { cubicIn } from 'svelte/easing';
5
+ import type { SVGAttributes } from 'svelte/elements';
6
+ import type { spring as springStore, tweened as tweenedStore } from 'svelte/motion';
7
+
8
+ import { extent } from 'd3-array';
9
+ import { pointRadial } from 'd3-shape';
10
+
11
+ import { format as formatValue, type FormatType } from '@layerstack/utils';
12
+ import { cls } from '@layerstack/tailwind';
13
+ import type { TransitionParams } from 'svelte-ux'; // TODO: Replace with `@layerstack/svelte-types` or similar
14
+
15
+ import { chartContext } from './ChartContext.svelte';
16
+ import Line from './Line.svelte';
17
+ import Rule from './Rule.svelte';
18
+ import Text from './Text.svelte';
19
+ import { isScaleBand, type AnyScale } from '../utils/scales.js';
20
+
21
+ const { xScale, yScale, xRange, yRange, width, height, padding } = chartContext();
22
+
23
+ /** Location of axis */
24
+ export let placement: 'top' | 'bottom' | 'left' | 'right' | 'angle' | 'radius';
25
+
26
+ /** Axis label */
27
+ export let label = '';
28
+
29
+ /** Location of axis label */
30
+ export let labelPlacement: 'start' | 'middle' | 'end' = 'middle';
31
+
32
+ /** Props applied label Text */
33
+ export let labelProps: Partial<ComponentProps<Text>> | undefined = undefined;
34
+
35
+ /** Draw a rule line. Use Rule component for greater rendering order control */
36
+ export let rule: boolean | Partial<ComponentProps<Rule>> = false;
37
+
38
+ /** Draw a grid lines */
39
+ export let grid: boolean | Pick<SVGAttributes<SVGElement>, 'class' | 'style'> = false;
40
+
41
+ /** Control the number of ticks*/
42
+ export let ticks: number | any[] | ((scale: AnyScale) => any) | null | undefined = undefined;
43
+
44
+ /** Length of the tick line */
45
+ export let tickLength = 4;
46
+
47
+ /** Format tick labels */
48
+ export let format: FormatType | undefined = undefined;
49
+
50
+ /** Props to apply to each tick label */
51
+ export let tickLabelProps: Partial<ComponentProps<Text>> | undefined = undefined;
52
+
53
+ export let spring: boolean | Parameters<typeof springStore>[1] = undefined;
54
+ export let tweened: boolean | Parameters<typeof tweenedStore>[1] = undefined;
55
+
56
+ export let transitionIn = tweened
37
57
  ? fade
38
58
  : () => {
39
59
  return {};
40
- };
41
- export let transitionInParams = { easing: cubicIn };
42
- $: orientation =
60
+ };
61
+ export let transitionInParams: TransitionParams = { easing: cubicIn };
62
+
63
+ $: orientation =
43
64
  placement === 'angle'
44
- ? 'angle'
45
- : placement === 'radius'
46
- ? 'radius'
47
- : ['top', 'bottom'].includes(placement)
48
- ? 'horizontal'
49
- : 'vertical';
50
- export let scale = undefined;
51
- $: _scale = scale ?? (['horizontal', 'angle'].includes(orientation) ? $xScale : $yScale);
52
- export let classes = {};
53
- $: [xRangeMin, xRangeMax] = extent($xRange);
54
- $: [yRangeMin, yRangeMax] = extent($yRange);
55
- $: tickVals = Array.isArray(ticks)
65
+ ? 'angle'
66
+ : placement === 'radius'
67
+ ? 'radius'
68
+ : ['top', 'bottom'].includes(placement)
69
+ ? 'horizontal'
70
+ : 'vertical';
71
+
72
+ export let scale: any = undefined;
73
+ $: _scale = scale ?? (['horizontal', 'angle'].includes(orientation) ? $xScale : $yScale);
74
+
75
+ export let classes: {
76
+ root?: string;
77
+ label?: string;
78
+ } = {};
79
+
80
+ $: [xRangeMin, xRangeMax] = extent<number>($xRange) as [number, number];
81
+ $: [yRangeMin, yRangeMax] = extent<number>($yRange) as [number, number];
82
+
83
+ $: tickVals = Array.isArray(ticks)
56
84
  ? ticks
57
85
  : typeof ticks === 'function'
58
- ? ticks(_scale)
59
- : isScaleBand(_scale)
60
- ? ticks
61
- ? _scale.domain().filter((v, i) => i % ticks === 0)
62
- : _scale.domain()
63
- : _scale.ticks(ticks ?? (placement === 'left' || placement === 'right' ? 4 : undefined));
64
- function getCoords(tick) {
86
+ ? ticks(_scale)
87
+ : isScaleBand(_scale)
88
+ ? ticks
89
+ ? _scale.domain().filter((v: any, i: number) => i % ticks === 0)
90
+ : _scale.domain()
91
+ : _scale.ticks(ticks ?? (placement === 'left' || placement === 'right' ? 4 : undefined));
92
+
93
+ function getCoords(tick: any) {
65
94
  switch (placement) {
66
- case 'top':
67
- return {
68
- x: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
69
- y: yRangeMin,
70
- };
71
- case 'bottom':
72
- return {
73
- x: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
74
- y: yRangeMax,
75
- };
76
- case 'left':
77
- return {
78
- x: xRangeMin,
79
- y: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
80
- };
81
- case 'right':
82
- return {
83
- x: xRangeMax,
84
- y: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
85
- };
86
- case 'angle':
87
- return {
88
- x: _scale(tick),
89
- y: yRangeMax,
90
- };
91
- case 'radius':
92
- return {
93
- x: xRangeMin,
94
- y: _scale(tick),
95
- };
95
+ case 'top':
96
+ return {
97
+ x: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
98
+ y: yRangeMin,
99
+ };
100
+
101
+ case 'bottom':
102
+ return {
103
+ x: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
104
+ y: yRangeMax,
105
+ };
106
+
107
+ case 'left':
108
+ return {
109
+ x: xRangeMin,
110
+ y: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
111
+ };
112
+
113
+ case 'right':
114
+ return {
115
+ x: xRangeMax,
116
+ y: _scale(tick) + (isScaleBand(_scale) ? _scale.bandwidth() / 2 : 0),
117
+ };
118
+
119
+ case 'angle':
120
+ return {
121
+ x: _scale(tick),
122
+ y: yRangeMax,
123
+ };
124
+
125
+ case 'radius':
126
+ return {
127
+ x: xRangeMin,
128
+ y: _scale(tick),
129
+ };
96
130
  }
97
- }
98
- function getDefaultTickLabelProps(tick) {
131
+ }
132
+
133
+ function getDefaultTickLabelProps(tick: any): ComponentProps<Text> {
99
134
  switch (placement) {
100
- case 'top':
101
- return {
102
- textAnchor: 'middle',
103
- verticalAnchor: 'end',
104
- dy: -tickLength - 2, // manually adjusted until Text supports custom styles
105
- };
106
- case 'bottom':
107
- return {
108
- textAnchor: 'middle',
109
- verticalAnchor: 'start',
110
- dy: tickLength, // manually adjusted until Text supports custom styles
111
- };
112
- case 'left':
113
- return {
114
- textAnchor: 'end',
115
- verticalAnchor: 'middle',
116
- dx: -tickLength,
117
- dy: -2, // manually adjusted until Text supports custom styles
118
- };
119
- case 'right':
120
- return {
121
- textAnchor: 'start',
122
- verticalAnchor: 'middle',
123
- dx: tickLength,
124
- dy: -2, // manually adjusted until Text supports custom styles
125
- };
126
- case 'angle':
127
- const xValue = _scale(tick); // angle in radians
128
- return {
129
- textAnchor: xValue === 0 ||
130
- Math.abs(xValue - Math.PI) < 0.01 || // ~180deg
131
- Math.abs(xValue - Math.PI * 2) < 0.01 // ~360deg
132
- ? 'middle'
133
- : xValue > Math.PI
134
- ? 'end'
135
- : 'start',
136
- verticalAnchor: 'middle',
137
- dx: Math.sin(xValue) * (tickLength + 2),
138
- dy: -Math.cos(xValue) * (tickLength + 4), // manually adjusted until Text supports custom styles
139
- };
140
- case 'radius':
141
- return {
142
- textAnchor: 'middle',
143
- verticalAnchor: 'middle',
144
- dx: 2,
145
- dy: -2, // manually adjusted until Text supports custom styles
146
- };
135
+ case 'top':
136
+ return {
137
+ textAnchor: 'middle',
138
+ verticalAnchor: 'end',
139
+ dy: -tickLength - 2, // manually adjusted until Text supports custom styles
140
+ };
141
+
142
+ case 'bottom':
143
+ return {
144
+ textAnchor: 'middle',
145
+ verticalAnchor: 'start',
146
+ dy: tickLength, // manually adjusted until Text supports custom styles
147
+ };
148
+
149
+ case 'left':
150
+ return {
151
+ textAnchor: 'end',
152
+ verticalAnchor: 'middle',
153
+ dx: -tickLength,
154
+ dy: -2, // manually adjusted until Text supports custom styles
155
+ };
156
+
157
+ case 'right':
158
+ return {
159
+ textAnchor: 'start',
160
+ verticalAnchor: 'middle',
161
+ dx: tickLength,
162
+ dy: -2, // manually adjusted until Text supports custom styles
163
+ };
164
+
165
+ case 'angle':
166
+ const xValue = _scale(tick); // angle in radians
167
+ return {
168
+ textAnchor:
169
+ xValue === 0 ||
170
+ Math.abs(xValue - Math.PI) < 0.01 || // ~180deg
171
+ Math.abs(xValue - Math.PI * 2) < 0.01 // ~360deg
172
+ ? 'middle'
173
+ : xValue > Math.PI
174
+ ? 'end'
175
+ : 'start',
176
+ verticalAnchor: 'middle',
177
+ dx: Math.sin(xValue) * (tickLength + 2),
178
+ dy: -Math.cos(xValue) * (tickLength + 4), // manually adjusted until Text supports custom styles
179
+ };
180
+
181
+ case 'radius':
182
+ return {
183
+ textAnchor: 'middle',
184
+ verticalAnchor: 'middle',
185
+ dx: 2,
186
+ dy: -2, // manually adjusted until Text supports custom styles
187
+ };
147
188
  }
148
- }
149
- $: resolvedLabelProps = {
189
+ }
190
+
191
+ $: resolvedLabelProps = {
150
192
  value: label,
151
- x: placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
193
+ x:
194
+ placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
152
195
  ? -$padding.left
153
196
  : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
154
- ? $width + $padding.right
155
- : $width / 2,
156
- y: placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
197
+ ? $width + $padding.right
198
+ : $width / 2,
199
+ y:
200
+ placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
157
201
  ? -$padding.top
158
202
  : orientation === 'vertical' && labelPlacement === 'middle'
159
- ? $height / 2
160
- : placement === 'bottom' || labelPlacement === 'end'
161
- ? $height + $padding.bottom
162
- : 0,
163
- textAnchor: labelPlacement === 'middle'
203
+ ? $height / 2
204
+ : placement === 'bottom' || labelPlacement === 'end'
205
+ ? $height + $padding.bottom
206
+ : 0,
207
+ textAnchor:
208
+ labelPlacement === 'middle'
164
209
  ? 'middle'
165
210
  : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
166
- ? 'end'
167
- : 'start',
168
- verticalAnchor: placement === 'top' ||
169
- (orientation === 'vertical' && labelPlacement === 'start') ||
170
- (placement === 'left' && labelPlacement === 'middle')
211
+ ? 'end'
212
+ : 'start',
213
+ verticalAnchor:
214
+ placement === 'top' ||
215
+ (orientation === 'vertical' && labelPlacement === 'start') ||
216
+ (placement === 'left' && labelPlacement === 'middle')
171
217
  ? 'start'
172
218
  : 'end',
173
219
  rotate: orientation === 'vertical' && labelPlacement === 'middle' ? -90 : 0,
174
220
  capHeight: '.5rem', // text-[10px]
175
221
  ...labelProps,
176
- class: cls('label text-[10px] stroke-surface-100 [stroke-width:2px] font-light', classes.label, labelProps?.class),
177
- };
222
+ class: cls(
223
+ 'label text-[10px] stroke-surface-100 [stroke-width:2px] font-light',
224
+ classes.label,
225
+ labelProps?.class
226
+ ),
227
+ } satisfies ComponentProps<Text>;
178
228
  </script>
179
229
 
180
230
  <g class={cls('Axis placement-{placement}', classes.root, $$props.class)}>
@@ -1,53 +1,80 @@
1
- <script>import {} from 'svelte';
2
- import { chartContext } from './ChartContext.svelte';
3
- import Rect from './Rect.svelte';
4
- import Spline from './Spline.svelte';
5
- import { createDimensionGetter } from '../utils/rect.js';
6
- const { x: xContext, y: yContext } = chartContext();
7
- export let bar;
8
- /**
9
- * Override `x` from context. Useful for multiple Bar instances
10
- */
11
- export let x = $xContext;
12
- /**
13
- * Override `y` from context. Useful for multiple Bar instances
14
- */
15
- export let y = $yContext;
16
- /**
17
- * Override `x1` from context. Useful for multiple Bar instances
18
- */
19
- export let x1 = undefined;
20
- /**
21
- * Override `y1` from context. Useful for multiple Bar instances
22
- */
23
- export let y1 = undefined;
24
- export let fill = undefined;
25
- export let stroke = 'black';
26
- export let strokeWidth = 0;
27
- export let radius = 0;
28
- /** Control which corners are rounded with radius. Uses <path> instead of <rect> when not set to `all` */
29
- export let rounded = 'all';
30
- export let inset = 0;
31
- export let spring = undefined;
32
- export let tweened = undefined;
33
- $: if (stroke === null || stroke === undefined)
34
- stroke = 'black';
35
- $: getDimensions = createDimensionGetter(chartContext(), {
1
+ <script lang="ts">
2
+ import { type ComponentProps } from 'svelte';
3
+
4
+ import { chartContext } from './ChartContext.svelte';
5
+ import Rect from './Rect.svelte';
6
+ import Spline from './Spline.svelte';
7
+
8
+ import { createDimensionGetter } from '../utils/rect.js';
9
+ import type { Accessor } from '../utils/common.js';
10
+
11
+ const { x: xContext, y: yContext } = chartContext();
12
+
13
+ export let bar: Object;
14
+
15
+ /**
16
+ * Override `x` from context. Useful for multiple Bar instances
17
+ */
18
+ export let x: Accessor = $xContext;
19
+
20
+ /**
21
+ * Override `y` from context. Useful for multiple Bar instances
22
+ */
23
+ export let y: Accessor = $yContext;
24
+
25
+ /**
26
+ * Override `x1` from context. Useful for multiple Bar instances
27
+ */
28
+ export let x1: Accessor = undefined;
29
+
30
+ /**
31
+ * Override `y1` from context. Useful for multiple Bar instances
32
+ */
33
+ export let y1: Accessor = undefined;
34
+
35
+ export let fill: string | undefined = undefined;
36
+ export let stroke = 'black';
37
+ export let strokeWidth = 0;
38
+ export let radius = 0;
39
+
40
+ /** Control which corners are rounded with radius. Uses <path> instead of <rect> when not set to `all` */
41
+ export let rounded:
42
+ | 'all'
43
+ | 'top'
44
+ | 'bottom'
45
+ | 'left'
46
+ | 'right'
47
+ | 'top-left'
48
+ | 'top-right'
49
+ | 'bottom-left'
50
+ | 'bottom-right' = 'all';
51
+
52
+ export let inset = 0;
53
+
54
+ export let spring: ComponentProps<Rect>['spring'] = undefined;
55
+ export let tweened: ComponentProps<Rect>['tweened'] = undefined;
56
+
57
+ $: if (stroke === null || stroke === undefined) stroke = 'black';
58
+
59
+ $: getDimensions = createDimensionGetter(chartContext(), {
36
60
  x,
37
61
  y,
38
62
  x1,
39
63
  y1,
40
64
  inset,
41
- });
42
- $: dimensions = $getDimensions(bar) ?? { x: 0, y: 0, width: 0, height: 0 };
43
- $: topLeft = ['all', 'top', 'left', 'top-left'].includes(rounded);
44
- $: topRight = ['all', 'top', 'right', 'top-right'].includes(rounded);
45
- $: bottomLeft = ['all', 'bottom', 'left', 'bottom-left'].includes(rounded);
46
- $: bottomRight = ['all', 'bottom', 'right', 'bottom-right'].includes(rounded);
47
- $: width = dimensions.width;
48
- $: height = dimensions.height;
49
- $: diameter = 2 * radius;
50
- $: pathData = `M${dimensions.x + radius},${dimensions.y} h${width - diameter}
65
+ });
66
+ $: dimensions = $getDimensions(bar) ?? { x: 0, y: 0, width: 0, height: 0 };
67
+
68
+ $: topLeft = ['all', 'top', 'left', 'top-left'].includes(rounded);
69
+ $: topRight = ['all', 'top', 'right', 'top-right'].includes(rounded);
70
+ $: bottomLeft = ['all', 'bottom', 'left', 'bottom-left'].includes(rounded);
71
+ $: bottomRight = ['all', 'bottom', 'right', 'bottom-right'].includes(rounded);
72
+
73
+ $: width = dimensions.width;
74
+ $: height = dimensions.height;
75
+ $: diameter = 2 * radius;
76
+
77
+ $: pathData = `M${dimensions.x + radius},${dimensions.y} h${width - diameter}
51
78
  ${topRight ? `a${radius},${radius} 0 0 1 ${radius},${radius}` : `h${radius}v${radius}`}
52
79
  v${height - diameter}
53
80
  ${bottomRight ? `a${radius},${radius} 0 0 1 ${-radius},${radius}` : `v${radius}h${-radius}`}
@@ -1,37 +1,48 @@
1
- <script>import {} from 'svelte';
2
- import { chartContext } from './ChartContext.svelte';
3
- import Bar from './Bar.svelte';
4
- import Rect from './Rect.svelte';
5
- import { chartDataArray } from '../utils/common.js';
6
- const { data: contextData, cGet, config } = chartContext();
7
- /**
8
- * Override `data` from context. Useful for multiple Bar instances
9
- */
10
- export let data = undefined;
11
- /**
12
- * Override `x` from context. Useful for multiple Bar instances
13
- */
14
- export let x = undefined;
15
- /**
16
- * Override `y` from context. Useful for multiple Bar instances
17
- */
18
- export let y = undefined;
19
- /**
20
- * Override `x1` from context. Useful for multiple Bar instances
21
- */
22
- export let x1 = undefined;
23
- /**
24
- * Override `y1` from context. Useful for multiple Bar instances
25
- */
26
- export let y1 = undefined;
27
- export let stroke = 'black';
28
- export let strokeWidth = 0;
29
- export let radius = 0;
30
- export let fill = undefined;
31
- /** Inset the rect for amount of padding. Useful with multiple bars (bullet, overlap, etc) */
32
- export let inset = 0;
33
- export let spring = undefined;
34
- export let tweened = undefined;
1
+ <script lang="ts">
2
+ import { type ComponentProps } from 'svelte';
3
+
4
+ import { chartContext } from './ChartContext.svelte';
5
+ import Bar from './Bar.svelte';
6
+ import Rect from './Rect.svelte';
7
+ import { chartDataArray, type Accessor } from '../utils/common.js';
8
+
9
+ const { data: contextData, cGet, config } = chartContext();
10
+
11
+ /**
12
+ * Override `data` from context. Useful for multiple Bar instances
13
+ */
14
+ export let data: any = undefined;
15
+
16
+ /**
17
+ * Override `x` from context. Useful for multiple Bar instances
18
+ */
19
+ export let x: Accessor = undefined;
20
+
21
+ /**
22
+ * Override `y` from context. Useful for multiple Bar instances
23
+ */
24
+ export let y: Accessor = undefined;
25
+
26
+ /**
27
+ * Override `x1` from context. Useful for multiple Bar instances
28
+ */
29
+ export let x1: Accessor = undefined;
30
+
31
+ /**
32
+ * Override `y1` from context. Useful for multiple Bar instances
33
+ */
34
+ export let y1: Accessor = undefined;
35
+
36
+ export let stroke = 'black';
37
+ export let strokeWidth = 0;
38
+ export let radius = 0;
39
+ export let fill: string | undefined = undefined;
40
+
41
+ /** Inset the rect for amount of padding. Useful with multiple bars (bullet, overlap, etc) */
42
+ export let inset = 0;
43
+
44
+ export let spring: ComponentProps<Rect>['spring'] = undefined;
45
+ export let tweened: ComponentProps<Rect>['tweened'] = undefined;
35
46
  </script>
36
47
 
37
48
  <g class="Bars">
@@ -1,6 +1,8 @@
1
- <script>import { uniqueId } from '@layerstack/utils';
2
- export let id = uniqueId('blur-');
3
- export let stdDeviation = 5;
1
+ <script lang="ts">
2
+ import { uniqueId } from '@layerstack/utils';
3
+
4
+ export let id: string = uniqueId('blur-');
5
+ export let stdDeviation = 5;
4
6
  </script>
5
7
 
6
8
  <defs>