layerchart 2.0.0-next.43 → 2.0.0-next.45
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.
- package/LICENSE +1 -1
- package/dist/components/AnnotationLine.svelte +1 -1
- package/dist/components/AnnotationPoint.svelte +1 -1
- package/dist/components/AnnotationRange.svelte +16 -15
- package/dist/components/Arc.svelte +10 -10
- package/dist/components/Arc.svelte.d.ts +4 -4
- package/dist/components/Arc.svelte.test.d.ts +1 -0
- package/dist/components/Arc.svelte.test.js +868 -0
- package/dist/components/Area.svelte +9 -7
- package/dist/components/Axis.svelte +2 -1
- package/dist/components/Axis.svelte.d.ts +1 -0
- package/dist/components/Bar.svelte +3 -3
- package/dist/components/Bars.svelte +1 -1
- package/dist/components/Blur.svelte +3 -3
- package/dist/components/Bounds.svelte +1 -1
- package/dist/components/BrushContext.svelte +1 -1
- package/dist/components/Calendar.svelte +2 -2
- package/dist/components/Calendar.svelte.d.ts +1 -1
- package/dist/components/Chart.svelte +63 -137
- package/dist/components/Chart.svelte.d.ts +23 -88
- package/dist/components/ChartClipPath.svelte +1 -1
- package/dist/components/Circle.svelte +17 -8
- package/dist/components/Circle.svelte.d.ts +3 -0
- package/dist/components/ClipPath.svelte +4 -4
- package/dist/components/Connector.svelte +4 -4
- package/dist/components/Connector.svelte.d.ts +3 -3
- package/dist/components/Ellipse.svelte +7 -7
- package/dist/components/Frame.svelte +1 -1
- package/dist/components/GeoContext.svelte +4 -20
- package/dist/components/GeoContext.svelte.d.ts +2 -6
- package/dist/components/GeoEdgeFade.svelte +1 -1
- package/dist/components/GeoPath.svelte +42 -107
- package/dist/components/GeoPath.svelte.d.ts +5 -4
- package/dist/components/GeoPoint.svelte +5 -5
- package/dist/components/GeoSpline.svelte +2 -14
- package/dist/components/GeoSpline.svelte.d.ts +1 -1
- package/dist/components/GeoTile.svelte +7 -6
- package/dist/components/GeoVisible.svelte +1 -1
- package/dist/components/Graticule.svelte +4 -7
- package/dist/components/Graticule.svelte.d.ts +2 -1
- package/dist/components/Grid.svelte +1 -1
- package/dist/components/Group.svelte +8 -8
- package/dist/components/Highlight.svelte +18 -16
- package/dist/components/Hull.svelte +2 -2
- package/dist/components/Labels.svelte +1 -1
- package/dist/components/Legend.svelte +1 -1
- package/dist/components/Line.svelte +9 -7
- package/dist/components/LinearGradient.svelte +8 -7
- package/dist/components/MonthPath.svelte +5 -11
- package/dist/components/MonthPath.svelte.d.ts +2 -2
- package/dist/components/Pack.svelte +4 -6
- package/dist/components/Pack.svelte.d.ts +2 -4
- package/dist/components/Partition.svelte +4 -3
- package/dist/components/Partition.svelte.d.ts +2 -1
- package/dist/components/Path.svelte +344 -0
- package/dist/components/Path.svelte.d.ts +72 -0
- package/dist/components/Pattern.svelte +6 -6
- package/dist/components/Pie.svelte +2 -2
- package/dist/components/Pie.svelte.d.ts +1 -1
- package/dist/components/Point.svelte +1 -1
- package/dist/components/Points.svelte +1 -1
- package/dist/components/Polygon.svelte +8 -6
- package/dist/components/RadialGradient.svelte +7 -7
- package/dist/components/Rect.svelte +32 -10
- package/dist/components/Rect.svelte.d.ts +4 -1
- package/dist/components/Rule.svelte +1 -1
- package/dist/components/Sankey.svelte +1 -1
- package/dist/components/Spline.svelte +13 -337
- package/dist/components/Spline.svelte.d.ts +10 -73
- package/dist/components/Text.svelte +9 -7
- package/dist/components/Threshold.svelte +3 -3
- package/dist/components/TransformContext.svelte +10 -143
- package/dist/components/TransformControls.svelte +2 -2
- package/dist/components/TransformControls.svelte.d.ts +1 -1
- package/dist/components/Tree.svelte +4 -3
- package/dist/components/Tree.svelte.d.ts +2 -1
- package/dist/components/Treemap.svelte +4 -3
- package/dist/components/Treemap.svelte.d.ts +2 -1
- package/dist/components/Voronoi.svelte +5 -5
- package/dist/components/charts/ArcChart.svelte +14 -6
- package/dist/components/charts/ArcChart.svelte.d.ts +1 -1
- package/dist/components/charts/AreaChart.svelte +12 -6
- package/dist/components/charts/BarChart.svelte +12 -6
- package/dist/components/charts/DefaultTooltip.svelte +1 -1
- package/dist/components/charts/LineChart.svelte +12 -6
- package/dist/components/charts/PieChart.svelte +14 -6
- package/dist/components/charts/PieChart.svelte.d.ts +1 -1
- package/dist/components/charts/ScatterChart.svelte +11 -9
- package/dist/components/charts/types.d.ts +7 -6
- package/dist/components/index.d.ts +14 -12
- package/dist/components/index.js +14 -12
- package/dist/components/{layout → layers}/Canvas.svelte +13 -60
- package/dist/components/{layout → layers}/Canvas.svelte.d.ts +2 -32
- package/dist/components/{layout → layers}/Html.svelte +18 -3
- package/dist/components/{layout → layers}/Html.svelte.d.ts +7 -0
- package/dist/components/layers/Layer.svelte +85 -0
- package/dist/components/{layout → layers}/Layer.svelte.d.ts +7 -3
- package/dist/components/{layout → layers}/Svg.svelte +18 -3
- package/dist/components/{layout → layers}/Svg.svelte.d.ts +7 -0
- package/dist/components/{layout → layers}/WebGL.svelte +1 -1
- package/dist/components/{layout → layers}/WebGL.svelte.d.ts +3 -3
- package/dist/components/tests/TestHarness.svelte +76 -0
- package/dist/components/tests/TestHarness.svelte.d.ts +19 -0
- package/dist/components/tooltip/Tooltip.svelte +3 -3
- package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/components/tooltip/TooltipContext.svelte +13 -45
- package/dist/components/tooltip/TooltipContext.svelte.d.ts +2 -14
- package/dist/components/tooltip/tooltipMetaContext.d.ts +2 -2
- package/dist/components/tooltip/tooltipMetaContext.js +2 -2
- package/dist/contexts/canvas.d.ts +33 -0
- package/dist/contexts/canvas.js +14 -0
- package/dist/contexts/chart.d.ts +84 -0
- package/dist/contexts/chart.js +10 -0
- package/dist/contexts/geo.d.ts +6 -0
- package/dist/contexts/geo.js +12 -0
- package/dist/contexts/index.d.ts +6 -0
- package/dist/contexts/index.js +6 -0
- package/dist/contexts/layer.d.ts +3 -0
- package/dist/contexts/layer.js +8 -0
- package/dist/contexts/settings.d.ts +4 -0
- package/dist/contexts/settings.js +10 -0
- package/dist/contexts/tooltip.d.ts +15 -0
- package/dist/contexts/tooltip.js +8 -0
- package/dist/contexts/transform.d.ts +95 -0
- package/dist/contexts/transform.js +10 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/states/settings.svelte.d.ts +12 -0
- package/dist/states/settings.svelte.js +10 -0
- package/dist/states/transform.svelte.d.ts +9 -0
- package/dist/states/transform.svelte.js +31 -0
- package/dist/styles/skeleton-4.css +15 -0
- package/dist/utils/arcText.svelte.d.ts +1 -1
- package/dist/utils/canvas.d.ts +7 -3
- package/dist/utils/canvas.js +78 -11
- package/dist/utils/color.js +11 -8
- package/dist/utils/common.d.ts +8 -1
- package/dist/utils/common.js +9 -10
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/motion.svelte.js +0 -1
- package/dist/utils/rect.svelte.d.ts +1 -1
- package/dist/utils/rect.svelte.js +17 -9
- package/dist/utils/string.d.ts +3 -1
- package/package.json +32 -54
- package/README.md +0 -41
- package/dist/components/layout/Layer.svelte +0 -41
- package/dist/docs/Blockquote.svelte +0 -17
- package/dist/docs/Blockquote.svelte.d.ts +0 -5
- package/dist/docs/Code.svelte +0 -80
- package/dist/docs/Code.svelte.d.ts +0 -14
- package/dist/docs/ConnectorSweepMenuField.svelte +0 -17
- package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +0 -7
- package/dist/docs/ConnectorTypeMenuField.svelte +0 -17
- package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +0 -7
- package/dist/docs/CurveMenuField.svelte +0 -44
- package/dist/docs/CurveMenuField.svelte.d.ts +0 -9
- package/dist/docs/GeoDebug.svelte +0 -60
- package/dist/docs/GeoDebug.svelte.d.ts +0 -4
- package/dist/docs/Header1.svelte +0 -16
- package/dist/docs/Header1.svelte.d.ts +0 -5
- package/dist/docs/Json.svelte +0 -36
- package/dist/docs/Json.svelte.d.ts +0 -10
- package/dist/docs/Layout.svelte +0 -21
- package/dist/docs/Layout.svelte.d.ts +0 -8
- package/dist/docs/Link.svelte +0 -9
- package/dist/docs/Link.svelte.d.ts +0 -5
- package/dist/docs/PathDataMenuField.svelte +0 -78
- package/dist/docs/PathDataMenuField.svelte.d.ts +0 -9
- package/dist/docs/Preview.svelte +0 -104
- package/dist/docs/Preview.svelte.d.ts +0 -13
- package/dist/docs/TilesetField.svelte +0 -136
- package/dist/docs/TilesetField.svelte.d.ts +0 -6
- package/dist/docs/TransformDebug.svelte +0 -22
- package/dist/docs/TransformDebug.svelte.d.ts +0 -20
- package/dist/docs/ViewSourceButton.svelte +0 -53
- package/dist/docs/ViewSourceButton.svelte.d.ts +0 -11
- /package/dist/{utils → contexts}/legendPayload.d.ts +0 -0
- /package/dist/{utils → contexts}/legendPayload.js +0 -0
|
@@ -24,13 +24,15 @@
|
|
|
24
24
|
| 'marks'
|
|
25
25
|
| 'onTooltipClick'
|
|
26
26
|
| 'profile'
|
|
27
|
-
| '
|
|
27
|
+
| 'layer'
|
|
28
28
|
| 'series'
|
|
29
29
|
| 'tooltip'
|
|
30
30
|
| 'tooltipContext'
|
|
31
31
|
| 'cRange'
|
|
32
32
|
| 'padding'
|
|
33
33
|
| 'context'
|
|
34
|
+
| 'width'
|
|
35
|
+
| 'height'
|
|
34
36
|
> & {
|
|
35
37
|
/**
|
|
36
38
|
* Key accessor
|
|
@@ -181,7 +183,7 @@
|
|
|
181
183
|
import Arc from '../Arc.svelte';
|
|
182
184
|
import Chart from '../Chart.svelte';
|
|
183
185
|
import Group from '../Group.svelte';
|
|
184
|
-
import Layer from '../
|
|
186
|
+
import Layer from '../layers/Layer.svelte';
|
|
185
187
|
import Legend from '../Legend.svelte';
|
|
186
188
|
import Pie from '../Pie.svelte';
|
|
187
189
|
import * as Tooltip from '../tooltip/index.js';
|
|
@@ -197,6 +199,9 @@
|
|
|
197
199
|
import { SeriesState } from '../../states/series.svelte.js';
|
|
198
200
|
import { createLegendProps } from './utils.svelte.js';
|
|
199
201
|
import { setTooltipMetaContext } from '../tooltip/tooltipMetaContext.js';
|
|
202
|
+
import { getSettings } from '../../contexts/settings.js';
|
|
203
|
+
|
|
204
|
+
const settings = getSettings();
|
|
200
205
|
|
|
201
206
|
let {
|
|
202
207
|
data = [],
|
|
@@ -219,9 +224,9 @@
|
|
|
219
224
|
/** Event dispatched with current tooltip data */
|
|
220
225
|
onTooltipClick = () => {},
|
|
221
226
|
props = {},
|
|
222
|
-
|
|
227
|
+
layer: layerProp,
|
|
223
228
|
profile = false,
|
|
224
|
-
debug
|
|
229
|
+
debug: debugProp,
|
|
225
230
|
tooltip = true,
|
|
226
231
|
children: childrenProp,
|
|
227
232
|
aboveContext,
|
|
@@ -235,6 +240,9 @@
|
|
|
235
240
|
...restProps
|
|
236
241
|
}: PieChartProps<TData> = $props();
|
|
237
242
|
|
|
243
|
+
const layer = $derived(layerProp ?? settings.layer);
|
|
244
|
+
const debug = $derived(debugProp ?? settings.debug);
|
|
245
|
+
|
|
238
246
|
const series = $derived(
|
|
239
247
|
seriesProp === undefined ? [{ key: 'default', value: value }] : seriesProp
|
|
240
248
|
);
|
|
@@ -404,8 +412,8 @@
|
|
|
404
412
|
{@render belowContext?.(snippetProps)}
|
|
405
413
|
|
|
406
414
|
<Layer
|
|
407
|
-
type={
|
|
408
|
-
{...asAny(
|
|
415
|
+
type={layer}
|
|
416
|
+
{...asAny(layer === 'canvas' ? props.canvas : props.svg)}
|
|
409
417
|
{center}
|
|
410
418
|
{debug}
|
|
411
419
|
>
|
|
@@ -6,7 +6,7 @@ export type PieChartExtraSnippetProps<TData> = {
|
|
|
6
6
|
getGroupProps: () => ComponentProps<typeof Group>;
|
|
7
7
|
};
|
|
8
8
|
export type PieChartPropsObjProp = Pick<SimplifiedChartPropsObject, 'pie' | 'group' | 'arc' | 'legend' | 'canvas' | 'svg' | 'tooltip'>;
|
|
9
|
-
export type PieChartProps<TData> = Pick<SimplifiedChartProps<TData, typeof Arc, PieChartExtraSnippetProps<TData>>, 'aboveContext' | 'aboveMarks' | 'belowContext' | 'belowMarks' | 'children' | 'data' | 'debug' | 'legend' | 'marks' | 'onTooltipClick' | 'profile' | '
|
|
9
|
+
export type PieChartProps<TData> = Pick<SimplifiedChartProps<TData, typeof Arc, PieChartExtraSnippetProps<TData>>, 'aboveContext' | 'aboveMarks' | 'belowContext' | 'belowMarks' | 'children' | 'data' | 'debug' | 'legend' | 'marks' | 'onTooltipClick' | 'profile' | 'layer' | 'series' | 'tooltip' | 'tooltipContext' | 'cRange' | 'padding' | 'context' | 'width' | 'height'> & {
|
|
10
10
|
/**
|
|
11
11
|
* Key accessor
|
|
12
12
|
*
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
import Grid from '../Grid.svelte';
|
|
56
56
|
import Highlight from '../Highlight.svelte';
|
|
57
57
|
import Labels from '../Labels.svelte';
|
|
58
|
-
import Layer from '../
|
|
58
|
+
import Layer from '../layers/Layer.svelte';
|
|
59
59
|
import Legend from '../Legend.svelte';
|
|
60
60
|
import Points from '../Points.svelte';
|
|
61
61
|
import Rule from '../Rule.svelte';
|
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
import { asAny } from '../../utils/types.js';
|
|
66
66
|
import { SeriesState } from '../../states/series.svelte.js';
|
|
67
67
|
import { createLegendProps } from './utils.svelte.js';
|
|
68
|
+
import { getSettings } from '../../contexts/settings.js';
|
|
69
|
+
|
|
70
|
+
const settings = getSettings();
|
|
68
71
|
|
|
69
72
|
let {
|
|
70
73
|
data = [],
|
|
@@ -85,9 +88,9 @@
|
|
|
85
88
|
context = $bindable(),
|
|
86
89
|
onTooltipClick = () => {},
|
|
87
90
|
props = {},
|
|
88
|
-
|
|
91
|
+
layer: layerProp,
|
|
89
92
|
profile = false,
|
|
90
|
-
debug
|
|
93
|
+
debug: debugProp,
|
|
91
94
|
children: childrenProp,
|
|
92
95
|
aboveContext,
|
|
93
96
|
belowContext,
|
|
@@ -99,6 +102,9 @@
|
|
|
99
102
|
...restProps
|
|
100
103
|
}: ScatterChartProps<TData> = $props();
|
|
101
104
|
|
|
105
|
+
const layer = $derived(layerProp ?? settings.layer);
|
|
106
|
+
const debug = $derived(debugProp ?? settings.debug);
|
|
107
|
+
|
|
102
108
|
const series: SeriesData<TData, typeof Points>[] = $derived(
|
|
103
109
|
seriesProp === undefined ? [{ key: 'default', data: chartDataArray(data) }] : seriesProp
|
|
104
110
|
);
|
|
@@ -220,7 +226,7 @@
|
|
|
220
226
|
yNice
|
|
221
227
|
c={yProp}
|
|
222
228
|
cRange={['var(--color-primary, currentColor)']}
|
|
223
|
-
padding={defaultChartPadding(axis, legend)}
|
|
229
|
+
padding={defaultChartPadding({ axis, legend })}
|
|
224
230
|
{...restProps}
|
|
225
231
|
tooltip={tooltip === false
|
|
226
232
|
? false
|
|
@@ -265,11 +271,7 @@
|
|
|
265
271
|
{@render childrenProp(snippetProps)}
|
|
266
272
|
{:else}
|
|
267
273
|
{@render belowContext?.(snippetProps)}
|
|
268
|
-
<Layer
|
|
269
|
-
type={renderContext}
|
|
270
|
-
{...asAny(renderContext === 'canvas' ? props.canvas : props.svg)}
|
|
271
|
-
{debug}
|
|
272
|
-
>
|
|
274
|
+
<Layer type={layer} {...asAny(layer === 'canvas' ? props.canvas : props.svg)} {debug}>
|
|
273
275
|
{#if typeof grid === 'function'}
|
|
274
276
|
{@render grid(snippetProps)}
|
|
275
277
|
{:else if grid}
|
|
@@ -4,21 +4,22 @@ import type BrushContext from '../BrushContext.svelte';
|
|
|
4
4
|
import type { AnyScale } from '../../utils/scales.svelte.js';
|
|
5
5
|
import type { AnnotationPoint, AnnotationLine, AnnotationRange, Area, Axis, Group, Labels, Legend, Points, Rule, Spline } from '../index.js';
|
|
6
6
|
import type TooltipContext from '../tooltip/TooltipContext.svelte';
|
|
7
|
-
import type { TooltipContextValue } from '
|
|
7
|
+
import type { TooltipContextValue } from '../../contexts/tooltip.js';
|
|
8
8
|
import type Highlight from '../Highlight.svelte';
|
|
9
9
|
import type Line from '../Line.svelte';
|
|
10
|
-
import type Svg from '../
|
|
10
|
+
import type Svg from '../layers/Svg.svelte';
|
|
11
11
|
import type Tooltip from '../tooltip/Tooltip.svelte';
|
|
12
12
|
import type TooltipHeader from '../tooltip/TooltipHeader.svelte';
|
|
13
13
|
import type TooltipList from '../tooltip/TooltipList.svelte';
|
|
14
14
|
import type TooltipItem from '../tooltip/TooltipItem.svelte';
|
|
15
15
|
import type TooltipSeparator from '../tooltip/TooltipSeparator.svelte';
|
|
16
|
-
import type {
|
|
16
|
+
import type { ChartProps } from '../Chart.svelte';
|
|
17
|
+
import type { ChartContextValue } from '../../contexts/chart.js';
|
|
17
18
|
import type Grid from '../Grid.svelte';
|
|
18
19
|
import type Bars from '../Bars.svelte';
|
|
19
20
|
import type Pie from '../Pie.svelte';
|
|
20
21
|
import type Arc from '../Arc.svelte';
|
|
21
|
-
import type Canvas from '../
|
|
22
|
+
import type Canvas from '../layers/Canvas.svelte';
|
|
22
23
|
import type { Without } from '../../utils/types.js';
|
|
23
24
|
export type SeriesData<TData, TComponent extends Component> = {
|
|
24
25
|
key: string;
|
|
@@ -198,7 +199,7 @@ export type BaseChartProps<TData, TComponent extends Component, TSnippetProps =
|
|
|
198
199
|
*
|
|
199
200
|
* @default 'svg'
|
|
200
201
|
*/
|
|
201
|
-
|
|
202
|
+
layer?: 'svg' | 'canvas';
|
|
202
203
|
/**
|
|
203
204
|
* Whether to log the initial render performance using `console.time`.
|
|
204
205
|
*
|
|
@@ -222,7 +223,7 @@ export type BaseChartProps<TData, TComponent extends Component, TSnippetProps =
|
|
|
222
223
|
aboveMarks?: ChartSnippet;
|
|
223
224
|
marks?: ChartSnippet;
|
|
224
225
|
};
|
|
225
|
-
export type SimplifiedChartProps<TData, TComponent extends Component, TSnippetProps = {}, ChartSnippet = SimplifiedChartSnippet<TData, TComponent, TSnippetProps>> = BaseChartProps<TData, TComponent, TSnippetProps, ChartSnippet> & Without<
|
|
226
|
+
export type SimplifiedChartProps<TData, TComponent extends Component, TSnippetProps = {}, ChartSnippet = SimplifiedChartSnippet<TData, TComponent, TSnippetProps>> = BaseChartProps<TData, TComponent, TSnippetProps, ChartSnippet> & Without<ChartProps<TData>, BaseChartProps<TData, TComponent, TSnippetProps, ChartSnippet>>;
|
|
226
227
|
export type ChartAnnotations = Array<({
|
|
227
228
|
/** Create AnnotationPoint */
|
|
228
229
|
type: 'point';
|
|
@@ -24,9 +24,9 @@ export { default as BrushContext } from './BrushContext.svelte';
|
|
|
24
24
|
export * from './BrushContext.svelte';
|
|
25
25
|
export { default as Calendar } from './Calendar.svelte';
|
|
26
26
|
export * from './Calendar.svelte';
|
|
27
|
-
export { default as Canvas } from './
|
|
28
|
-
export * from './
|
|
29
|
-
export { default as Chart
|
|
27
|
+
export { default as Canvas } from './layers/Canvas.svelte';
|
|
28
|
+
export * from './layers/Canvas.svelte';
|
|
29
|
+
export { default as Chart } from './Chart.svelte';
|
|
30
30
|
export * from './Chart.svelte';
|
|
31
31
|
export { default as ChartClipPath } from './ChartClipPath.svelte';
|
|
32
32
|
export * from './ChartClipPath.svelte';
|
|
@@ -50,7 +50,7 @@ export { default as ForceSimulation } from './ForceSimulation.svelte';
|
|
|
50
50
|
export * from './ForceSimulation.svelte';
|
|
51
51
|
export { default as GeoCircle } from './GeoCircle.svelte';
|
|
52
52
|
export * from './GeoCircle.svelte';
|
|
53
|
-
export { default as GeoContext
|
|
53
|
+
export { default as GeoContext } from './GeoContext.svelte';
|
|
54
54
|
export * from './GeoContext.svelte';
|
|
55
55
|
export { default as GeoEdgeFade } from './GeoEdgeFade.svelte';
|
|
56
56
|
export * from './GeoEdgeFade.svelte';
|
|
@@ -72,14 +72,14 @@ export { default as Group } from './Group.svelte';
|
|
|
72
72
|
export * from './Group.svelte';
|
|
73
73
|
export { default as Highlight } from './Highlight.svelte';
|
|
74
74
|
export * from './Highlight.svelte';
|
|
75
|
-
export { default as Html } from './
|
|
76
|
-
export * from './
|
|
75
|
+
export { default as Html } from './layers/Html.svelte';
|
|
76
|
+
export * from './layers/Html.svelte';
|
|
77
77
|
export { default as Hull } from './Hull.svelte';
|
|
78
78
|
export * from './Hull.svelte';
|
|
79
79
|
export { default as Labels } from './Labels.svelte';
|
|
80
80
|
export * from './Labels.svelte';
|
|
81
|
-
export { default as Layer } from './
|
|
82
|
-
export * from './
|
|
81
|
+
export { default as Layer } from './layers/Layer.svelte';
|
|
82
|
+
export * from './layers/Layer.svelte';
|
|
83
83
|
export { default as Legend } from './Legend.svelte';
|
|
84
84
|
export * from './Legend.svelte';
|
|
85
85
|
export { default as Line } from './Line.svelte';
|
|
@@ -96,6 +96,8 @@ export { default as Pack } from './Pack.svelte';
|
|
|
96
96
|
export * from './Pack.svelte';
|
|
97
97
|
export { default as Partition } from './Partition.svelte';
|
|
98
98
|
export * from './Partition.svelte';
|
|
99
|
+
export { default as Path } from './Path.svelte';
|
|
100
|
+
export * from './Path.svelte';
|
|
99
101
|
export { default as Pattern } from './Pattern.svelte';
|
|
100
102
|
export * from './Pattern.svelte';
|
|
101
103
|
export { default as Pie } from './Pie.svelte';
|
|
@@ -116,8 +118,8 @@ export { default as Rule } from './Rule.svelte';
|
|
|
116
118
|
export * from './Rule.svelte';
|
|
117
119
|
export { default as Sankey } from './Sankey.svelte';
|
|
118
120
|
export * from './Sankey.svelte';
|
|
119
|
-
export { default as Svg } from './
|
|
120
|
-
export * from './
|
|
121
|
+
export { default as Svg } from './layers/Svg.svelte';
|
|
122
|
+
export * from './layers/Svg.svelte';
|
|
121
123
|
export { default as Text } from './Text.svelte';
|
|
122
124
|
export * from './Text.svelte';
|
|
123
125
|
export { default as Threshold } from './Threshold.svelte';
|
|
@@ -134,5 +136,5 @@ export { default as Treemap } from './Treemap.svelte';
|
|
|
134
136
|
export * from './Treemap.svelte';
|
|
135
137
|
export { default as Voronoi } from './Voronoi.svelte';
|
|
136
138
|
export * from './Voronoi.svelte';
|
|
137
|
-
export { default as WebGL } from './
|
|
138
|
-
export * from './
|
|
139
|
+
export { default as WebGL } from './layers/WebGL.svelte';
|
|
140
|
+
export * from './layers/WebGL.svelte';
|
package/dist/components/index.js
CHANGED
|
@@ -24,9 +24,9 @@ export { default as BrushContext } from './BrushContext.svelte';
|
|
|
24
24
|
export * from './BrushContext.svelte';
|
|
25
25
|
export { default as Calendar } from './Calendar.svelte';
|
|
26
26
|
export * from './Calendar.svelte';
|
|
27
|
-
export { default as Canvas } from './
|
|
28
|
-
export * from './
|
|
29
|
-
export { default as Chart
|
|
27
|
+
export { default as Canvas } from './layers/Canvas.svelte';
|
|
28
|
+
export * from './layers/Canvas.svelte';
|
|
29
|
+
export { default as Chart } from './Chart.svelte';
|
|
30
30
|
export * from './Chart.svelte';
|
|
31
31
|
export { default as ChartClipPath } from './ChartClipPath.svelte';
|
|
32
32
|
export * from './ChartClipPath.svelte';
|
|
@@ -50,7 +50,7 @@ export { default as ForceSimulation } from './ForceSimulation.svelte';
|
|
|
50
50
|
export * from './ForceSimulation.svelte';
|
|
51
51
|
export { default as GeoCircle } from './GeoCircle.svelte';
|
|
52
52
|
export * from './GeoCircle.svelte';
|
|
53
|
-
export { default as GeoContext
|
|
53
|
+
export { default as GeoContext } from './GeoContext.svelte';
|
|
54
54
|
export * from './GeoContext.svelte';
|
|
55
55
|
export { default as GeoEdgeFade } from './GeoEdgeFade.svelte';
|
|
56
56
|
export * from './GeoEdgeFade.svelte';
|
|
@@ -72,14 +72,14 @@ export { default as Group } from './Group.svelte';
|
|
|
72
72
|
export * from './Group.svelte';
|
|
73
73
|
export { default as Highlight } from './Highlight.svelte';
|
|
74
74
|
export * from './Highlight.svelte';
|
|
75
|
-
export { default as Html } from './
|
|
76
|
-
export * from './
|
|
75
|
+
export { default as Html } from './layers/Html.svelte';
|
|
76
|
+
export * from './layers/Html.svelte';
|
|
77
77
|
export { default as Hull } from './Hull.svelte';
|
|
78
78
|
export * from './Hull.svelte';
|
|
79
79
|
export { default as Labels } from './Labels.svelte';
|
|
80
80
|
export * from './Labels.svelte';
|
|
81
|
-
export { default as Layer } from './
|
|
82
|
-
export * from './
|
|
81
|
+
export { default as Layer } from './layers/Layer.svelte';
|
|
82
|
+
export * from './layers/Layer.svelte';
|
|
83
83
|
export { default as Legend } from './Legend.svelte';
|
|
84
84
|
export * from './Legend.svelte';
|
|
85
85
|
export { default as Line } from './Line.svelte';
|
|
@@ -96,6 +96,8 @@ export { default as Pack } from './Pack.svelte';
|
|
|
96
96
|
export * from './Pack.svelte';
|
|
97
97
|
export { default as Partition } from './Partition.svelte';
|
|
98
98
|
export * from './Partition.svelte';
|
|
99
|
+
export { default as Path } from './Path.svelte';
|
|
100
|
+
export * from './Path.svelte';
|
|
99
101
|
export { default as Pattern } from './Pattern.svelte';
|
|
100
102
|
export * from './Pattern.svelte';
|
|
101
103
|
export { default as Pie } from './Pie.svelte';
|
|
@@ -116,8 +118,8 @@ export { default as Rule } from './Rule.svelte';
|
|
|
116
118
|
export * from './Rule.svelte';
|
|
117
119
|
export { default as Sankey } from './Sankey.svelte';
|
|
118
120
|
export * from './Sankey.svelte';
|
|
119
|
-
export { default as Svg } from './
|
|
120
|
-
export * from './
|
|
121
|
+
export { default as Svg } from './layers/Svg.svelte';
|
|
122
|
+
export * from './layers/Svg.svelte';
|
|
121
123
|
export { default as Text } from './Text.svelte';
|
|
122
124
|
export * from './Text.svelte';
|
|
123
125
|
export { default as Threshold } from './Threshold.svelte';
|
|
@@ -135,5 +137,5 @@ export { default as Treemap } from './Treemap.svelte';
|
|
|
135
137
|
export * from './Treemap.svelte';
|
|
136
138
|
export { default as Voronoi } from './Voronoi.svelte';
|
|
137
139
|
export * from './Voronoi.svelte';
|
|
138
|
-
export { default as WebGL } from './
|
|
139
|
-
export * from './
|
|
140
|
+
export { default as WebGL } from './layers/WebGL.svelte';
|
|
141
|
+
export * from './layers/WebGL.svelte';
|
|
@@ -86,54 +86,6 @@
|
|
|
86
86
|
export type CanvasProps = CanvasPropsWithoutHTML &
|
|
87
87
|
Without<HTMLCanvasAttributes, CanvasPropsWithoutHTML>;
|
|
88
88
|
|
|
89
|
-
type ComponentRender<T extends Element = Element> = {
|
|
90
|
-
name: string;
|
|
91
|
-
render: (ctx: CanvasRenderingContext2D, styleOverrides?: ComputedStylesOptions) => any;
|
|
92
|
-
retainState?: boolean;
|
|
93
|
-
events?: {
|
|
94
|
-
click?: MouseEventHandler<T> | null;
|
|
95
|
-
dblclick?: MouseEventHandler<T> | null;
|
|
96
|
-
pointerenter?: PointerEventHandler<T> | null;
|
|
97
|
-
pointerover?: PointerEventHandler<T> | null;
|
|
98
|
-
pointermove?: PointerEventHandler<T> | null;
|
|
99
|
-
pointerleave?: PointerEventHandler<T> | null;
|
|
100
|
-
pointerout?: PointerEventHandler<T> | null;
|
|
101
|
-
pointerdown?: PointerEventHandler<T> | null;
|
|
102
|
-
touchmove?: TouchEventHandler<T> | null;
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Optional dependencies to track and invalidate the canvas context when they change.
|
|
106
|
-
*/
|
|
107
|
-
deps?: () => any[];
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
export type CanvasContextValue = {
|
|
111
|
-
/**
|
|
112
|
-
* Register component to render.
|
|
113
|
-
*
|
|
114
|
-
* Returns method to unregister on component destroy
|
|
115
|
-
*/
|
|
116
|
-
register<T extends Element>(component: ComponentRender<T>): () => void;
|
|
117
|
-
invalidate(): void;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const CanvasContext = new Context<CanvasContextValue>('CanvasContext');
|
|
121
|
-
|
|
122
|
-
const defaultCanvasContext: CanvasContextValue = {
|
|
123
|
-
register: <T extends Element>(_: ComponentRender<T>) => {
|
|
124
|
-
return () => {};
|
|
125
|
-
},
|
|
126
|
-
invalidate: () => {},
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
export function getCanvasContext() {
|
|
130
|
-
return CanvasContext.getOr(defaultCanvasContext);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function setCanvasContext(context: CanvasContextValue) {
|
|
134
|
-
return CanvasContext.set(context);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
89
|
/**
|
|
138
90
|
* Handles the automatic registration of the component to the canvas context,
|
|
139
91
|
* with dependency tracking and cleanup on destroy.
|
|
@@ -152,19 +104,20 @@
|
|
|
152
104
|
import { Logger, localPoint } from '@layerstack/utils';
|
|
153
105
|
import { MediaQueryPresets } from '@layerstack/svelte-state';
|
|
154
106
|
|
|
155
|
-
import {
|
|
156
|
-
import { getTransformContext } from '
|
|
157
|
-
import { getPixelColor, scaleCanvas
|
|
107
|
+
import { setLayerContext } from '../../contexts/layer.js';
|
|
108
|
+
import { getTransformContext } from '../../contexts/transform.js';
|
|
109
|
+
import { getPixelColor, scaleCanvas } from '../../utils/canvas.js';
|
|
158
110
|
import { getColorStr, rgbColorGenerator } from '../../utils/color.js';
|
|
159
|
-
import {
|
|
160
|
-
import type {
|
|
161
|
-
HTMLCanvasAttributes,
|
|
162
|
-
MouseEventHandler,
|
|
163
|
-
PointerEventHandler,
|
|
164
|
-
TouchEventHandler,
|
|
165
|
-
} from 'svelte/elements';
|
|
111
|
+
import { useMutationObserver, watch } from 'runed';
|
|
112
|
+
import type { HTMLCanvasAttributes, PointerEventHandler } from 'svelte/elements';
|
|
166
113
|
import type { Without } from '../../utils/types.js';
|
|
167
|
-
import { getChartContext } from '
|
|
114
|
+
import { getChartContext } from '../../contexts/chart.js';
|
|
115
|
+
import {
|
|
116
|
+
getCanvasContext,
|
|
117
|
+
setCanvasContext,
|
|
118
|
+
type CanvasContextValue,
|
|
119
|
+
type ComponentRender,
|
|
120
|
+
} from '../../contexts/canvas.js';
|
|
168
121
|
|
|
169
122
|
let {
|
|
170
123
|
ref: refProp = $bindable(),
|
|
@@ -445,7 +398,7 @@
|
|
|
445
398
|
});
|
|
446
399
|
|
|
447
400
|
setCanvasContext(canvasContext);
|
|
448
|
-
|
|
401
|
+
setLayerContext('canvas');
|
|
449
402
|
</script>
|
|
450
403
|
|
|
451
404
|
<canvas
|
|
@@ -75,45 +75,15 @@ export type CanvasPropsWithoutHTML = {
|
|
|
75
75
|
]>;
|
|
76
76
|
};
|
|
77
77
|
export type CanvasProps = CanvasPropsWithoutHTML & Without<HTMLCanvasAttributes, CanvasPropsWithoutHTML>;
|
|
78
|
-
type ComponentRender<T extends Element = Element> = {
|
|
79
|
-
name: string;
|
|
80
|
-
render: (ctx: CanvasRenderingContext2D, styleOverrides?: ComputedStylesOptions) => any;
|
|
81
|
-
retainState?: boolean;
|
|
82
|
-
events?: {
|
|
83
|
-
click?: MouseEventHandler<T> | null;
|
|
84
|
-
dblclick?: MouseEventHandler<T> | null;
|
|
85
|
-
pointerenter?: PointerEventHandler<T> | null;
|
|
86
|
-
pointerover?: PointerEventHandler<T> | null;
|
|
87
|
-
pointermove?: PointerEventHandler<T> | null;
|
|
88
|
-
pointerleave?: PointerEventHandler<T> | null;
|
|
89
|
-
pointerout?: PointerEventHandler<T> | null;
|
|
90
|
-
pointerdown?: PointerEventHandler<T> | null;
|
|
91
|
-
touchmove?: TouchEventHandler<T> | null;
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Optional dependencies to track and invalidate the canvas context when they change.
|
|
95
|
-
*/
|
|
96
|
-
deps?: () => any[];
|
|
97
|
-
};
|
|
98
|
-
export type CanvasContextValue = {
|
|
99
|
-
/**
|
|
100
|
-
* Register component to render.
|
|
101
|
-
*
|
|
102
|
-
* Returns method to unregister on component destroy
|
|
103
|
-
*/
|
|
104
|
-
register<T extends Element>(component: ComponentRender<T>): () => void;
|
|
105
|
-
invalidate(): void;
|
|
106
|
-
};
|
|
107
|
-
export declare function getCanvasContext(): CanvasContextValue;
|
|
108
78
|
/**
|
|
109
79
|
* Handles the automatic registration of the component to the canvas context,
|
|
110
80
|
* with dependency tracking and cleanup on destroy.
|
|
111
81
|
*/
|
|
112
82
|
export declare function registerCanvasComponent<T extends Element>(component: ComponentRender<T>): void;
|
|
113
83
|
import { type Snippet } from 'svelte';
|
|
114
|
-
import {
|
|
115
|
-
import type { HTMLCanvasAttributes, MouseEventHandler, PointerEventHandler, TouchEventHandler } from 'svelte/elements';
|
|
84
|
+
import type { HTMLCanvasAttributes } from 'svelte/elements';
|
|
116
85
|
import type { Without } from '../../utils/types.js';
|
|
86
|
+
import { type ComponentRender } from '../../contexts/canvas.js';
|
|
117
87
|
declare const Canvas: import("svelte").Component<CanvasProps, {}, "ref" | "canvasContext">;
|
|
118
88
|
type Canvas = ReturnType<typeof Canvas>;
|
|
119
89
|
export default Canvas;
|
|
@@ -38,6 +38,14 @@
|
|
|
38
38
|
*/
|
|
39
39
|
ignoreTransform?: boolean;
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Whether to clip overflow content.
|
|
43
|
+
* When true, sets `overflow: hidden` on the layer.
|
|
44
|
+
*
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
clip?: boolean;
|
|
48
|
+
|
|
41
49
|
children?: Snippet<[{ ref: HTMLElement }]>;
|
|
42
50
|
};
|
|
43
51
|
|
|
@@ -46,9 +54,10 @@
|
|
|
46
54
|
</script>
|
|
47
55
|
|
|
48
56
|
<script lang="ts">
|
|
49
|
-
import { getTransformContext } from '
|
|
57
|
+
import { getTransformContext } from '../../contexts/transform.js';
|
|
50
58
|
|
|
51
|
-
import {
|
|
59
|
+
import { setLayerContext } from '../../contexts/layer.js';
|
|
60
|
+
import { getChartContext } from '../../contexts/chart.js';
|
|
52
61
|
|
|
53
62
|
let {
|
|
54
63
|
ref: refProp = $bindable(),
|
|
@@ -60,6 +69,7 @@
|
|
|
60
69
|
'aria-describedby': describedBy,
|
|
61
70
|
center = false,
|
|
62
71
|
ignoreTransform = false,
|
|
72
|
+
clip = false,
|
|
63
73
|
class: className,
|
|
64
74
|
children,
|
|
65
75
|
...restProps
|
|
@@ -83,13 +93,14 @@
|
|
|
83
93
|
}
|
|
84
94
|
});
|
|
85
95
|
|
|
86
|
-
|
|
96
|
+
setLayerContext('html');
|
|
87
97
|
</script>
|
|
88
98
|
|
|
89
99
|
<div
|
|
90
100
|
bind:this={ref}
|
|
91
101
|
class={['lc-layout-html', className]}
|
|
92
102
|
class:disablePointerEvents={pointerEvents === false}
|
|
103
|
+
class:clip
|
|
93
104
|
style:transform
|
|
94
105
|
style:transform-origin="top left"
|
|
95
106
|
style:z-index={zIndex}
|
|
@@ -115,6 +126,10 @@
|
|
|
115
126
|
&.disablePointerEvents {
|
|
116
127
|
pointer-events: none;
|
|
117
128
|
}
|
|
129
|
+
|
|
130
|
+
&.clip {
|
|
131
|
+
overflow: hidden;
|
|
132
|
+
}
|
|
118
133
|
}
|
|
119
134
|
}
|
|
120
135
|
</style>
|
|
@@ -30,6 +30,13 @@ type HTMLPropsWithoutHTML = {
|
|
|
30
30
|
* Ignore TransformContext. Useful to add static elements such as legends.
|
|
31
31
|
*/
|
|
32
32
|
ignoreTransform?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to clip overflow content.
|
|
35
|
+
* When true, sets `overflow: hidden` on the layer.
|
|
36
|
+
*
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
clip?: boolean;
|
|
33
40
|
children?: Snippet<[{
|
|
34
41
|
ref: HTMLElement;
|
|
35
42
|
}]>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ComponentProps, Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
export type CanvasLayerProps = {
|
|
5
|
+
type: 'canvas';
|
|
6
|
+
} & Omit<ComponentProps<typeof Canvas>, 'type' | 'onpointermove'>;
|
|
7
|
+
|
|
8
|
+
export type HtmlLayerProps = {
|
|
9
|
+
type: 'html';
|
|
10
|
+
} & Omit<ComponentProps<typeof Html>, 'type' | 'onpointermove'>;
|
|
11
|
+
|
|
12
|
+
export type SvgLayerProps = {
|
|
13
|
+
type: 'svg';
|
|
14
|
+
} & Omit<ComponentProps<typeof Svg>, 'type' | 'onpointermove'>;
|
|
15
|
+
|
|
16
|
+
export type DefaultLayerProps = {
|
|
17
|
+
type?: undefined;
|
|
18
|
+
children: Snippet;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type LayerProps = (
|
|
22
|
+
| CanvasLayerProps
|
|
23
|
+
| HtmlLayerProps
|
|
24
|
+
| SvgLayerProps
|
|
25
|
+
| DefaultLayerProps
|
|
26
|
+
) & {
|
|
27
|
+
onpointermove?: (e: PointerEvent) => void;
|
|
28
|
+
};
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<script lang="ts">
|
|
32
|
+
import Canvas, { type CanvasProps } from './Canvas.svelte';
|
|
33
|
+
import Svg, { type SVGProps } from './Svg.svelte';
|
|
34
|
+
import Html, { type HTMLProps } from './Html.svelte';
|
|
35
|
+
import Frame from '../Frame.svelte';
|
|
36
|
+
import { getSettings } from '../../contexts/settings.js';
|
|
37
|
+
|
|
38
|
+
let { type, children, ...restProps }: LayerProps = $props();
|
|
39
|
+
|
|
40
|
+
let settings = getSettings();
|
|
41
|
+
let layer = $derived(type ?? settings.layer);
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
{#if layer === 'canvas'}
|
|
45
|
+
<Canvas {...restProps as CanvasProps}>
|
|
46
|
+
{#snippet children(props)}
|
|
47
|
+
{#if settings.debug}
|
|
48
|
+
<Frame class="lc-debug-frame" />
|
|
49
|
+
<Frame class="lc-debug-frame" full />
|
|
50
|
+
{/if}
|
|
51
|
+
|
|
52
|
+
{@render children?.(props)}
|
|
53
|
+
{/snippet}
|
|
54
|
+
</Canvas>
|
|
55
|
+
{:else if layer === 'svg'}
|
|
56
|
+
<Svg {...restProps as SVGProps}>
|
|
57
|
+
{#snippet children(props)}
|
|
58
|
+
{#if settings.debug}
|
|
59
|
+
<Frame class="lc-debug-frame" />
|
|
60
|
+
<Frame class="lc-debug-frame" full />
|
|
61
|
+
{/if}
|
|
62
|
+
|
|
63
|
+
{@render children?.(props)}
|
|
64
|
+
{/snippet}
|
|
65
|
+
</Svg>
|
|
66
|
+
{:else if layer === 'html'}
|
|
67
|
+
<Html {...restProps as HTMLProps}>
|
|
68
|
+
{#snippet children(props)}
|
|
69
|
+
{#if settings.debug}
|
|
70
|
+
<Frame class="lc-debug-frame" />
|
|
71
|
+
<Frame class="lc-debug-frame" full />
|
|
72
|
+
{/if}
|
|
73
|
+
|
|
74
|
+
{@render children?.(props)}
|
|
75
|
+
{/snippet}
|
|
76
|
+
</Html>
|
|
77
|
+
{/if}
|
|
78
|
+
|
|
79
|
+
<style>
|
|
80
|
+
@layer component {
|
|
81
|
+
:global(:where(.lc-debug-frame)) {
|
|
82
|
+
--fill-color: color-mix(in oklab, var(--color-danger) 10%, transparent);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
</style>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentProps } from 'svelte';
|
|
1
|
+
import type { ComponentProps, Snippet } from 'svelte';
|
|
2
2
|
export type CanvasLayerProps = {
|
|
3
3
|
type: 'canvas';
|
|
4
4
|
} & Omit<ComponentProps<typeof Canvas>, 'type' | 'onpointermove'>;
|
|
@@ -8,12 +8,16 @@ export type HtmlLayerProps = {
|
|
|
8
8
|
export type SvgLayerProps = {
|
|
9
9
|
type: 'svg';
|
|
10
10
|
} & Omit<ComponentProps<typeof Svg>, 'type' | 'onpointermove'>;
|
|
11
|
-
export type
|
|
11
|
+
export type DefaultLayerProps = {
|
|
12
|
+
type?: undefined;
|
|
13
|
+
children: Snippet;
|
|
14
|
+
};
|
|
15
|
+
export type LayerProps = (CanvasLayerProps | HtmlLayerProps | SvgLayerProps | DefaultLayerProps) & {
|
|
12
16
|
onpointermove?: (e: PointerEvent) => void;
|
|
13
17
|
};
|
|
14
18
|
import Canvas from './Canvas.svelte';
|
|
15
|
-
import Html from './Html.svelte';
|
|
16
19
|
import Svg from './Svg.svelte';
|
|
20
|
+
import Html from './Html.svelte';
|
|
17
21
|
declare const Layer: import("svelte").Component<LayerProps, {}, "">;
|
|
18
22
|
type Layer = ReturnType<typeof Layer>;
|
|
19
23
|
export default Layer;
|