layerchart 0.42.0 → 0.43.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 (114) hide show
  1. package/dist/components/Arc.svelte +27 -20
  2. package/dist/components/Arc.svelte.d.ts +2 -2
  3. package/dist/components/Area.svelte +11 -7
  4. package/dist/components/Area.svelte.d.ts +3 -3
  5. package/dist/components/AreaStack.svelte +3 -2
  6. package/dist/components/Axis.svelte +38 -41
  7. package/dist/components/Axis.svelte.d.ts +5 -4
  8. package/dist/components/Bar.svelte +6 -5
  9. package/dist/components/Bar.svelte.d.ts +3 -2
  10. package/dist/components/Bars.svelte +5 -4
  11. package/dist/components/Bars.svelte.d.ts +3 -2
  12. package/dist/components/Bounds.svelte +7 -5
  13. package/dist/components/Bounds.svelte.d.ts +8 -8
  14. package/dist/components/Brush.svelte +8 -6
  15. package/dist/components/Brush.svelte.d.ts +2 -2
  16. package/dist/components/Calendar.svelte +4 -3
  17. package/dist/components/Chart.svelte +71 -85
  18. package/dist/components/Chart.svelte.d.ts +216 -24
  19. package/dist/components/ChartClipPath.svelte +6 -6
  20. package/dist/components/ChartContext.svelte +19 -0
  21. package/dist/components/ChartContext.svelte.d.ts +89 -0
  22. package/dist/components/Circle.svelte +1 -0
  23. package/dist/components/ClipPath.svelte +1 -0
  24. package/dist/components/ForceSimulation.svelte +4 -3
  25. package/dist/components/ForceSimulation.svelte.d.ts +1 -2
  26. package/dist/components/Frame.svelte +8 -7
  27. package/dist/components/Frame.svelte.d.ts +1 -1
  28. package/dist/components/GeoCircle.svelte.d.ts +1 -2
  29. package/dist/components/GeoContext.svelte +2 -1
  30. package/dist/components/GeoContext.svelte.d.ts +5 -5
  31. package/dist/components/GeoEdgeFade.svelte +2 -5
  32. package/dist/components/GeoPath.svelte +9 -5
  33. package/dist/components/GeoPath.svelte.d.ts +7 -4
  34. package/dist/components/GeoPoint.svelte +0 -1
  35. package/dist/components/GeoSpline.svelte +2 -11
  36. package/dist/components/GeoTile.svelte +3 -1
  37. package/dist/components/Group.svelte +4 -2
  38. package/dist/components/Highlight.svelte +16 -10
  39. package/dist/components/Highlight.svelte.d.ts +16 -15
  40. package/dist/components/HitCanvas.svelte +5 -2
  41. package/dist/components/HitCanvas.svelte.d.ts +1 -1
  42. package/dist/components/Hull.svelte +6 -3
  43. package/dist/components/Labels.svelte +5 -4
  44. package/dist/components/Labels.svelte.d.ts +0 -1
  45. package/dist/components/Legend.svelte +4 -4
  46. package/dist/components/Legend.svelte.d.ts +2 -2
  47. package/dist/components/Line.svelte +1 -0
  48. package/dist/components/Link.svelte +3 -1
  49. package/dist/components/Pack.svelte +4 -3
  50. package/dist/components/Partition.svelte +3 -3
  51. package/dist/components/Partition.svelte.d.ts +2 -1
  52. package/dist/components/Pie.svelte +7 -6
  53. package/dist/components/Pie.svelte.d.ts +2 -4
  54. package/dist/components/Point.svelte +2 -2
  55. package/dist/components/Points.svelte +4 -3
  56. package/dist/components/RadialGradient.svelte +2 -2
  57. package/dist/components/RadialGradient.svelte.d.ts +0 -1
  58. package/dist/components/Rect.svelte +1 -0
  59. package/dist/components/Rule.svelte +3 -3
  60. package/dist/components/Sankey.svelte +9 -3
  61. package/dist/components/Sankey.svelte.d.ts +2 -2
  62. package/dist/components/Spline.svelte +9 -6
  63. package/dist/components/Spline.svelte.d.ts +2 -2
  64. package/dist/components/Text.svelte +1 -2
  65. package/dist/components/Threshold.svelte +2 -2
  66. package/dist/components/Threshold.svelte.d.ts +2 -2
  67. package/dist/components/TileImage.svelte +4 -1
  68. package/dist/components/Tooltip.svelte +3 -3
  69. package/dist/components/TooltipContext.svelte +46 -15
  70. package/dist/components/TooltipContext.svelte.d.ts +1 -1
  71. package/dist/components/TooltipItem.svelte.d.ts +1 -1
  72. package/dist/components/TransformContext.svelte +17 -6
  73. package/dist/components/TransformControls.svelte +1 -0
  74. package/dist/components/Tree.svelte +4 -3
  75. package/dist/components/Tree.svelte.d.ts +3 -3
  76. package/dist/components/Treemap.svelte +11 -12
  77. package/dist/components/Treemap.svelte.d.ts +6 -6
  78. package/dist/components/Voronoi.svelte +8 -3
  79. package/dist/components/layout/Canvas.svelte +5 -3
  80. package/dist/components/layout/Html.svelte +3 -3
  81. package/dist/components/layout/Svg.svelte +6 -3
  82. package/dist/docs/Code.svelte +2 -3
  83. package/dist/docs/GeoDebug.svelte +4 -4
  84. package/dist/docs/Link.svelte +2 -4
  85. package/dist/docs/Link.svelte.d.ts +14 -5
  86. package/dist/docs/Preview.svelte +1 -1
  87. package/dist/docs/TilesetField.svelte +1 -1
  88. package/dist/docs/TilesetField.svelte.d.ts +1 -1
  89. package/dist/docs/ViewSourceButton.svelte +4 -4
  90. package/dist/docs/ViewSourceButton.svelte.d.ts +5 -3
  91. package/dist/stores/motionStore.d.ts +2 -2
  92. package/dist/stores/motionStore.js +4 -2
  93. package/dist/utils/array.d.ts +5 -0
  94. package/dist/utils/array.js +7 -0
  95. package/dist/utils/common.d.ts +2 -0
  96. package/dist/utils/common.js +18 -0
  97. package/dist/utils/genData.d.ts +23 -23
  98. package/dist/utils/genData.js +3 -2
  99. package/dist/utils/geo.d.ts +3 -3
  100. package/dist/utils/geo.js +2 -0
  101. package/dist/utils/graph.d.ts +1 -1
  102. package/dist/utils/graph.js +3 -3
  103. package/dist/utils/hierarchy.d.ts +1 -1
  104. package/dist/utils/hierarchy.js +1 -0
  105. package/dist/utils/rect.d.ts +5 -3
  106. package/dist/utils/rect.js +7 -11
  107. package/dist/utils/scales.d.ts +21 -12
  108. package/dist/utils/scales.js +3 -1
  109. package/dist/utils/stack.d.ts +5 -2
  110. package/dist/utils/stack.js +20 -7
  111. package/dist/utils/threshold.js +1 -0
  112. package/dist/utils/treemap.d.ts +5 -2
  113. package/dist/utils/treemap.js +1 -1
  114. package/package.json +5 -2
@@ -12,10 +12,11 @@
12
12
  // https://github.com/mnsht/gradient-path
13
13
  // https://svelte.dev/repl/09711e43a1264ba18945d7db7cab9335?version=3.38.2
14
14
  // https://codepen.io/simeydotme/pen/rrOEmO/
15
- import { getContext, tick } from 'svelte';
15
+ import { tick } from 'svelte';
16
16
  import { arc as d3arc } from 'd3-shape';
17
17
  import { scaleLinear } from 'd3-scale';
18
18
  import { min, max } from 'd3-array';
19
+ import { chartContext } from './ChartContext.svelte';
19
20
  import { motionStore } from '../stores/motionStore.js';
20
21
  import { degreesToRadians } from '../utils/math.js';
21
22
  export let spring = undefined;
@@ -60,7 +61,7 @@ export let cornerRadius = 0;
60
61
  export let padAngle = 0;
61
62
  // export let padRadius = 0;
62
63
  export let track = false;
63
- const { yRange } = getContext('LayerCake');
64
+ const { yRange } = chartContext();
64
65
  $: scale = scaleLinear().domain(domain).range(range);
65
66
  function getOuterRadius(outerRadius, chartRadius) {
66
67
  if (outerRadius == null) {
@@ -83,7 +84,7 @@ function getOuterRadius(outerRadius, chartRadius) {
83
84
  return outerRadius;
84
85
  }
85
86
  }
86
- $: _outerRadius = getOuterRadius(outerRadius, max($yRange) / 2);
87
+ $: _outerRadius = getOuterRadius(outerRadius, (max($yRange) ?? 0) / 2);
87
88
  function getInnerRadius(innerRadius, outerRadius) {
88
89
  if (innerRadius == null) {
89
90
  return Math.min(...$yRange);
@@ -122,38 +123,44 @@ $: trackArc = d3arc()
122
123
  .cornerRadius(cornerRadius)
123
124
  .padAngle(padAngle);
124
125
  // .padRadius(padRadius);
126
+ // @ts-expect-error
125
127
  $: trackArcCentroid = trackArc.centroid();
126
128
  // $: console.log(trackArcCentroid)
127
- let trackArcEl;
128
- $: boundingBox = trackArc && trackArcEl ? trackArcEl.getBBox() : {};
129
- // $: console.log(boundingBox)
130
- $: labelArcCenterOffset = {
131
- x: outerRadius - boundingBox.width / 2,
132
- // x: 0,
133
- y: (outerRadius - boundingBox.height / 2) * -1,
134
- };
129
+ let trackArcEl = undefined;
130
+ $: boundingBox = trackArcEl ? trackArcEl.getBBox() : {};
131
+ // $: labelArcCenterOffset = {
132
+ // x: outerRadius - boundingBox.width / 2,
133
+ // // x: 0,
134
+ // y: (outerRadius - boundingBox.height / 2) * -1,
135
+ // };
135
136
  // $: console.log(labelArcCenterOffset)
136
- $: labelArcBottomOffset = {
137
- // x: outerRadius - boundingBox.width / 2,
138
- x: outerRadius - boundingBox.width / 2,
139
- // x: 0,
140
- // y: (outerRadius - boundingBox.height) * -1
141
- y: (outerRadius - boundingBox.height) * -1,
142
- };
137
+ // $: labelArcBottomOffset = {
138
+ // // x: outerRadius - boundingBox.width / 2,
139
+ // x: outerRadius - boundingBox.width / 2,
140
+ // // x: 0,
141
+ // // y: (outerRadius - boundingBox.height) * -1
142
+ // y: (outerRadius - boundingBox.height) * -1,
143
+ // };
143
144
  // $: console.log(labelArcBottomOffset)
144
145
  /**
145
146
  * Offset arc from center
146
147
  */
147
148
  export let offset = 0;
148
- $: angle = (startAngle + endAngle) / 2;
149
+ $: angle = ((startAngle ?? 0) + (endAngle ?? 0)) / 2;
149
150
  $: xOffset = Math.sin(angle) * offset;
150
151
  $: yOffset = -Math.cos(angle) * offset;
151
152
  </script>
152
153
 
153
154
  {#if track}
154
- <path d={trackArc()} class="track" bind:this={trackArcEl} {...track} />
155
+ <path
156
+ d={trackArc()}
157
+ class="track"
158
+ bind:this={trackArcEl}
159
+ {...typeof track === 'object' ? track : null}
160
+ />
155
161
  {/if}
156
162
 
163
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
157
164
  <path
158
165
  d={arc()}
159
166
  transform="translate({xOffset}, {yOffset})"
@@ -31,8 +31,8 @@ declare const __propDef: {
31
31
  slots: {
32
32
  default: {
33
33
  value: number;
34
- centroid: [number, number];
35
- boundingBox: any;
34
+ centroid: any;
35
+ boundingBox: DOMRect;
36
36
  };
37
37
  };
38
38
  };
@@ -1,11 +1,12 @@
1
- <script>import { getContext } from 'svelte';
1
+ <script>import {} from 'svelte';
2
2
  import { area as d3Area, areaRadial } from 'd3-shape';
3
3
  import { max } from 'd3-array';
4
4
  import { interpolatePath } from 'd3-interpolate-path';
5
5
  import { cls } from 'svelte-ux';
6
6
  import { motionStore } from '../stores/motionStore.js';
7
+ import { chartContext } from './ChartContext.svelte';
7
8
  import Spline from './Spline.svelte';
8
- const { data: contextData, xScale, yScale, xGet, yGet, yRange } = getContext('LayerCake');
9
+ const { data: contextData, xScale, yScale, xGet, yGet, yRange } = chartContext();
9
10
  /** Override data instead of using context */
10
11
  export let data = undefined;
11
12
  /** Pass `<path d={...} />` explicitly instead of calculating from data / context */
@@ -13,11 +14,11 @@ export let pathData = undefined;
13
14
  /** Use radial instead of cartesian area generator, mapping `x` to `angle` and `y0`/`y1 to `innerRadius`/`outerRadius. Radial lines are positioned relative to the origin, use transform (ex. `<Group center>`) to change the origin */
14
15
  export let radial = false;
15
16
  /** Override x accessor */
16
- export let x = undefined; // TODO: Update Type
17
+ export let x = undefined;
17
18
  /** Override y0 accessor. Defaults to max($yRange) */
18
- export let y0 = undefined; // TODO: Update Type
19
+ export let y0 = undefined;
19
20
  /** Override y1 accessor. Defaults to y accessor */
20
- export let y1 = undefined; // TODO: Update Type
21
+ export let y1 = undefined;
21
22
  /** Interpolate path data using d3-interpolate-path */
22
23
  export let tweened = undefined;
23
24
  export let clipPath = undefined;
@@ -25,7 +26,9 @@ export let curve = undefined;
25
26
  export let defined = undefined;
26
27
  /** Enable showing line */
27
28
  export let line = false;
28
- $: tweenedOptions = tweened ? { interpolate: interpolatePath, ...tweened } : false;
29
+ $: tweenedOptions = tweened
30
+ ? { interpolate: interpolatePath, ...(typeof tweened === 'object' ? tweened : null) }
31
+ : false;
29
32
  $: tweened_d = motionStore('', { tweened: tweenedOptions });
30
33
  $: {
31
34
  const path = radial
@@ -42,7 +45,7 @@ $: {
42
45
  if (defined)
43
46
  path.defined(defined);
44
47
  const d = pathData ?? path(data ?? $contextData);
45
- tweened_d.set(d);
48
+ tweened_d.set(d ?? '');
46
49
  }
47
50
  </script>
48
51
 
@@ -50,6 +53,7 @@ $: {
50
53
  <Spline {data} y={y1} {curve} {defined} {tweened} {...typeof line === 'object' ? line : null} />
51
54
  {/if}
52
55
 
56
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
53
57
  <path
54
58
  d={$tweened_d}
55
59
  clip-path={clipPath}
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  data?: any;
10
10
  pathData?: string | undefined | null;
11
11
  radial?: boolean;
12
- x?: any;
13
- y0?: any;
14
- y1?: any;
12
+ x?: ((d: any) => any) | undefined;
13
+ y0?: ((d: any) => any) | undefined;
14
+ y1?: ((d: any) => any) | undefined;
15
15
  tweened?: boolean | Parameters<typeof tweenedStore>[1];
16
16
  clipPath?: string | undefined;
17
17
  curve?: CurveFactory | undefined;
@@ -1,7 +1,8 @@
1
- <script>import { getContext } from 'svelte';
1
+ <script>import {} from 'svelte';
2
+ import { chartContext } from './ChartContext.svelte';
2
3
  import Area from './Area.svelte';
3
4
  import Spline from './Spline.svelte';
4
- const { data, rGet } = getContext('LayerCake');
5
+ const { data, rGet } = chartContext();
5
6
  export let curve = undefined;
6
7
  export let defined = undefined;
7
8
  export let opacity = 0.3;
@@ -1,14 +1,15 @@
1
- <script>import { getContext } from 'svelte';
1
+ <script>import {} from 'svelte';
2
2
  import { fade } from 'svelte/transition';
3
3
  import { cubicIn } from 'svelte/easing';
4
4
  import { extent } from 'd3-array';
5
5
  import { pointRadial } from 'd3-shape';
6
6
  import { format as formatValue, cls } from 'svelte-ux';
7
+ import { chartContext } from './ChartContext.svelte';
7
8
  import Circle from './Circle.svelte';
8
9
  import Line from './Line.svelte';
9
10
  import Text from './Text.svelte';
10
11
  import { isScaleBand } from '../utils/scales.js';
11
- const { xScale, yScale, xRange, yRange, width, height, padding } = getContext('LayerCake');
12
+ const { xScale, yScale, xRange, yRange, width, height, padding } = chartContext();
12
13
  /** Location of axis */
13
14
  export let placement;
14
15
  /** Axis label */
@@ -31,7 +32,11 @@ export let format = undefined;
31
32
  export let tickLabelProps = undefined;
32
33
  export let spring = undefined;
33
34
  export let tweened = undefined;
34
- export let transitionIn = tweened ? fade : () => { };
35
+ export let transitionIn = tweened
36
+ ? fade
37
+ : () => {
38
+ return {};
39
+ };
35
40
  export let transitionInParams = { easing: cubicIn };
36
41
  $: orientation =
37
42
  placement === 'angle'
@@ -133,6 +138,35 @@ function getDefaultTickLabelProps(tick) {
133
138
  };
134
139
  }
135
140
  }
141
+ $: resolvedLabelProps = {
142
+ value: label,
143
+ x: placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
144
+ ? -$padding.left
145
+ : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
146
+ ? $width + $padding.right
147
+ : $width / 2,
148
+ y: placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
149
+ ? -$padding.top
150
+ : orientation === 'vertical' && labelPlacement === 'middle'
151
+ ? $height / 2
152
+ : placement === 'bottom' || labelPlacement === 'end'
153
+ ? $height + $padding.bottom
154
+ : 0,
155
+ textAnchor: labelPlacement === 'middle'
156
+ ? 'middle'
157
+ : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
158
+ ? 'end'
159
+ : 'start',
160
+ verticalAnchor: placement === 'top' ||
161
+ (orientation === 'vertical' && labelPlacement === 'start') ||
162
+ (placement === 'left' && labelPlacement === 'middle')
163
+ ? 'start'
164
+ : 'end',
165
+ rotate: orientation === 'vertical' && labelPlacement === 'middle' ? -90 : 0,
166
+ capHeight: '.5rem', // text-[10px]
167
+ ...labelProps,
168
+ class: cls('label text-[10px] stroke-surface-100 [stroke-width:2px] font-light', labelProps?.class),
169
+ };
136
170
  </script>
137
171
 
138
172
  <g class="Axis placement-{placement}">
@@ -178,44 +212,7 @@ function getDefaultTickLabelProps(tick) {
178
212
  {/if}
179
213
 
180
214
  {#if label}
181
- {@const resolvedLabelProps = {
182
- value: label,
183
- x:
184
- placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
185
- ? -$padding.left
186
- : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
187
- ? $width + $padding.right
188
- : $width / 2,
189
- y:
190
- placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
191
- ? -$padding.top
192
- : orientation === 'vertical' && labelPlacement === 'middle'
193
- ? $height / 2
194
- : placement === 'bottom' || labelPlacement === 'end'
195
- ? $height + $padding.bottom
196
- : 0,
197
- textAnchor:
198
- labelPlacement === 'middle'
199
- ? 'middle'
200
- : placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
201
- ? 'end'
202
- : 'start',
203
- verticalAnchor:
204
- placement === 'top' ||
205
- (orientation === 'vertical' && labelPlacement === 'start') ||
206
- (placement === 'left' && labelPlacement === 'middle')
207
- ? 'start'
208
- : 'end',
209
- rotate: orientation === 'vertical' && labelPlacement === 'middle' ? -90 : 0,
210
- capHeight: '.5rem', // text-[10px]
211
- ...labelProps,
212
- class: cls(
213
- 'label text-[10px] stroke-surface-100 [stroke-width:2px] font-light',
214
- labelProps?.class
215
- ),
216
- }}
217
-
218
- <Text value={label} {...resolvedLabelProps} />
215
+ <Text {...resolvedLabelProps} />
219
216
  {/if}
220
217
 
221
218
  {#each tickVals as tick, index (tick)}
@@ -5,21 +5,22 @@ import type { SVGAttributes } from 'svelte/elements';
5
5
  import type { spring as springStore, tweened as tweenedStore } from 'svelte/motion';
6
6
  import { type FormatType, type TransitionParams } from 'svelte-ux';
7
7
  import Text from './Text.svelte';
8
+ import { type AnyScale } from '../utils/scales.js';
8
9
  declare const __propDef: {
9
10
  props: {
10
11
  /** Location of axis */ placement: "top" | "bottom" | "left" | "right" | "angle" | "radius";
11
12
  /** Axis label */ label?: string;
12
13
  /** Location of axis label */ labelPlacement?: "start" | "middle" | "end";
13
14
  /** Props applied label Text */ labelProps?: Partial<ComponentProps<Text>> | undefined;
14
- /** Draw a rule line. Use Rule component for greater rendering order control */ rule?: boolean | SVGAttributes<SVGLineElement>;
15
- /** Draw a grid lines */ grid?: boolean | SVGAttributes<SVGLineElement>;
16
- /** Control the number of ticks*/ ticks?: number | any[] | Function | undefined;
15
+ /** Draw a rule line. Use Rule component for greater rendering order control */ rule?: boolean | Pick<SVGAttributes<SVGElement>, "class" | "style">;
16
+ /** Draw a grid lines */ grid?: boolean | Pick<SVGAttributes<SVGElement>, "class" | "style">;
17
+ /** Control the number of ticks*/ ticks?: number | any[] | ((scale: AnyScale) => any) | null | undefined;
17
18
  /** Length of the tick line */ tickLength?: number;
18
19
  /** Format tick labels */ format?: FormatType | undefined;
19
20
  /** Props to apply to each tick label */ tickLabelProps?: Partial<ComponentProps<Text>> | undefined;
20
21
  spring?: boolean | Parameters<typeof springStore>[1];
21
22
  tweened?: boolean | Parameters<typeof tweenedStore>[1];
22
- transitionIn?: typeof fade | (() => void);
23
+ transitionIn?: typeof fade | (() => {});
23
24
  transitionInParams?: TransitionParams;
24
25
  scale?: any;
25
26
  };
@@ -1,8 +1,9 @@
1
- <script>import { getContext } from 'svelte';
2
- import { createDimensionGetter } from '../utils/rect.js';
1
+ <script>import {} from 'svelte';
2
+ import { chartContext } from './ChartContext.svelte';
3
3
  import Rect from './Rect.svelte';
4
4
  import Spline from './Spline.svelte';
5
- const { x: xContext, y: yContext } = getContext('LayerCake');
5
+ import { createDimensionGetter } from '../utils/rect.js';
6
+ const { x: xContext, y: yContext } = chartContext();
6
7
  export let bar;
7
8
  /**
8
9
  * Override `x` from context. Useful for multiple Bar instances
@@ -26,7 +27,7 @@ export let spring = undefined;
26
27
  export let tweened = undefined;
27
28
  $: if (stroke === null || stroke === undefined)
28
29
  stroke = 'black';
29
- $: getDimensions = createDimensionGetter(getContext('LayerCake'), {
30
+ $: getDimensions = createDimensionGetter(chartContext(), {
30
31
  x,
31
32
  y,
32
33
  groupBy,
@@ -36,7 +37,7 @@ $: getDimensions = createDimensionGetter(getContext('LayerCake'), {
36
37
  outer: groupPaddingOuter,
37
38
  },
38
39
  });
39
- $: dimensions = $getDimensions(bar);
40
+ $: dimensions = $getDimensions(bar) ?? { x: 0, y: 0, width: 0, height: 0 };
40
41
  $: topLeft = ['all', 'top', 'left', 'top-left'].includes(rounded);
41
42
  $: topRight = ['all', 'top', 'right', 'top-right'].includes(rounded);
42
43
  $: bottomLeft = ['all', 'bottom', 'left', 'bottom-left'].includes(rounded);
@@ -1,12 +1,13 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import { type ComponentProps } from 'svelte';
3
3
  import Rect from './Rect.svelte';
4
+ import type { Accessor } from '../index.js/utils/common.js';
4
5
  declare const __propDef: {
5
6
  props: {
6
7
  [x: string]: any;
7
8
  bar: Object;
8
- x?: any;
9
- y?: any;
9
+ x?: Accessor;
10
+ y?: Accessor;
10
11
  fill?: string | undefined;
11
12
  stroke?: string;
12
13
  strokeWidth?: number;
@@ -1,15 +1,16 @@
1
- <script>import { getContext } from 'svelte';
1
+ <script>import {} from 'svelte';
2
+ import { chartContext } from './ChartContext.svelte';
2
3
  import Bar from './Bar.svelte';
3
4
  import Rect from './Rect.svelte';
4
- const { data, rGet, config } = getContext('LayerCake');
5
+ const { data, rGet, config } = chartContext();
5
6
  /**
6
7
  * Override `x` from context. Useful for multiple Bar instances
7
8
  */
8
- export let x = undefined; // TODO: Update Type
9
+ export let x = undefined;
9
10
  /**
10
11
  * Override `y` from context. Useful for multiple Bar instances
11
12
  */
12
- export let y = undefined; // TODO: Update Type
13
+ export let y = undefined;
13
14
  export let stroke = 'black';
14
15
  export let strokeWidth = 0;
15
16
  export let radius = 0;
@@ -1,11 +1,12 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import { type ComponentProps } from 'svelte';
3
3
  import Rect from './Rect.svelte';
4
+ import type { Accessor } from '../utils/common.js';
4
5
  declare const __propDef: {
5
6
  props: {
6
7
  [x: string]: any;
7
- x?: any;
8
- y?: any;
8
+ x?: Accessor;
9
+ y?: Accessor;
9
10
  stroke?: string;
10
11
  strokeWidth?: number;
11
12
  radius?: number;
@@ -1,15 +1,17 @@
1
- <script>import { getContext } from 'svelte';
2
- import { scaleLinear } from 'd3-scale';
1
+ <script>import { scaleLinear } from 'd3-scale';
2
+ import { chartContext } from './ChartContext.svelte';
3
3
  import { motionScale } from '../utils/scales.js';
4
- const { width, height } = getContext('LayerCake');
5
- export let domain;
6
- export let range;
4
+ const { width, height } = chartContext();
5
+ export let domain = undefined;
6
+ export let range = undefined;
7
7
  export let spring = undefined;
8
8
  export let tweened = undefined;
9
9
  function getExtents(extents, axis, fallback) {
10
10
  const resolvedExtents = typeof extents === 'function' ? extents({ width: $width, height: $height }) : extents;
11
11
  return [
12
+ // @ts-expect-error
12
13
  resolvedExtents?.[axis + '0'] ?? 0, // x0 or y0
14
+ // @ts-expect-error
13
15
  resolvedExtents?.[axis + '1'] ?? fallback, // x1 or y1, fallback as $width or $height
14
16
  ];
15
17
  }
@@ -2,34 +2,34 @@ import { SvelteComponentTyped } from "svelte";
2
2
  import { motionScale } from '../utils/scales.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- domain: {
5
+ domain?: Partial<{
6
6
  x0: number;
7
7
  y0: number;
8
8
  x1: number;
9
9
  y1: number;
10
- } | ((dimensions: {
10
+ }> | ((dimensions: {
11
11
  width: number;
12
12
  height: number;
13
- }) => {
13
+ }) => Partial<{
14
14
  x0: number;
15
15
  y0: number;
16
16
  x1: number;
17
17
  y1: number;
18
- });
19
- range: {
18
+ }>) | null | undefined;
19
+ range?: Partial<{
20
20
  x0: number;
21
21
  y0: number;
22
22
  x1: number;
23
23
  y1: number;
24
- } | ((dimensions: {
24
+ }> | ((dimensions: {
25
25
  width: number;
26
26
  height: number;
27
- }) => {
27
+ }) => Partial<{
28
28
  x0: number;
29
29
  y0: number;
30
30
  x1: number;
31
31
  y1: number;
32
- });
32
+ }>) | null | undefined;
33
33
  spring?: boolean | Parameters<typeof motionScale>[1]["spring"];
34
34
  tweened?: boolean | Parameters<typeof motionScale>[1]["tweened"];
35
35
  };
@@ -1,10 +1,11 @@
1
- <script>import { createEventDispatcher, getContext } from 'svelte';
1
+ <script>import { createEventDispatcher } from 'svelte';
2
2
  import { extent } from 'd3-array';
3
3
  import { clamp, cls } from 'svelte-ux';
4
+ import { chartContext } from './ChartContext.svelte';
4
5
  import Frame from './Frame.svelte';
5
6
  import { localPoint } from '../utils/event.js';
6
7
  import Group from './Group.svelte';
7
- const { xScale, yScale, width, height, padding } = getContext('LayerCake');
8
+ const { xScale, yScale, width, height, padding } = chartContext();
8
9
  const dispatch = createEventDispatcher();
9
10
  /** Axis to apply brushing */
10
11
  export let axis = 'x';
@@ -31,15 +32,15 @@ function handler(fn) {
31
32
  xDomain: [xDomain[0] ?? xDomainMin, xDomain[1] ?? xDomainMax],
32
33
  yDomain: [yDomain[0] ?? yDomainMin, yDomain[1] ?? yDomainMax],
33
34
  value: {
34
- x: $xScale.invert(localPoint(frameEl, e)?.x - $padding.left),
35
- y: $yScale.invert(localPoint(frameEl, e)?.y - $padding.top),
35
+ x: $xScale.invert?.(localPoint(frameEl, e)?.x ?? 0 - $padding.left),
36
+ y: $yScale.invert?.(localPoint(frameEl, e)?.y ?? 0 - $padding.top),
36
37
  },
37
38
  };
38
39
  dispatch('brushStart', { xDomain, yDomain });
39
40
  const onPointerMove = (e) => {
40
41
  fn(start, {
41
- x: $xScale.invert(localPoint(frameEl, e)?.x - $padding.left),
42
- y: $yScale.invert(localPoint(frameEl, e)?.y - $padding.top),
42
+ x: $xScale.invert?.(localPoint(frameEl, e)?.x ?? 0 - $padding.left),
43
+ y: $yScale.invert?.(localPoint(frameEl, e)?.y ?? 0 - $padding.top),
43
44
  });
44
45
  // if (xDomain[0] === xDomain[1] || yDomain[0] === yDomain[1]) {
45
46
  // // Ignore?
@@ -139,6 +140,7 @@ $: isActive =
139
140
  />
140
141
 
141
142
  {#if isActive}
143
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
142
144
  <Group x={rangeLeft} y={rangeTop} class="range">
143
145
  <slot name="range" {rangeWidth} {rangeHeight}>
144
146
  <rect
@@ -6,8 +6,8 @@ declare const __propDef: {
6
6
  axis?: "x" | "y" | "both";
7
7
  handleSize?: number;
8
8
  resetOnEnd?: boolean;
9
- xDomain?: [number | null, number | null];
10
- yDomain?: [number | null, number | null];
9
+ xDomain?: [number | Date | null, number | Date | null];
10
+ yDomain?: [number | Date | null, number | Date | null];
11
11
  range?: SVGAttributes<SVGRectElement> | undefined;
12
12
  handle?: SVGAttributes<SVGRectElement> | undefined;
13
13
  classes?: {
@@ -1,7 +1,8 @@
1
- <script>import { getContext } from 'svelte';
2
- import { timeDays, timeMonths, timeWeek, timeYear, utcYear } from 'd3-time';
1
+ <script>import {} from 'svelte';
2
+ import { timeDays, timeMonths, timeWeek, timeYear } from 'd3-time';
3
3
  import { index } from 'd3-array';
4
4
  import { format } from 'date-fns';
5
+ import { chartContext } from './ChartContext.svelte';
5
6
  import Rect from './Rect.svelte';
6
7
  import MonthPath from './MonthPath.svelte';
7
8
  import Text from './Text.svelte';
@@ -17,7 +18,7 @@ export let monthPath = false;
17
18
  * Tooltip context to setup mouse events to show tooltip for related data
18
19
  */
19
20
  export let tooltip = undefined;
20
- const { width, height, x, rGet, data, config } = getContext('LayerCake');
21
+ const { width, height, x, rGet, data, config } = chartContext();
21
22
  $: yearDays = timeDays(start, end);
22
23
  $: yearMonths = timeMonths(start, end);
23
24
  $: yearWeeks = timeWeek.count(start, end);