layerchart 2.0.0-next.1 → 2.0.0-next.3

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 (266) hide show
  1. package/dist/actions/movable.d.ts +28 -0
  2. package/dist/actions/movable.js +91 -0
  3. package/dist/components/AnnotationLine.svelte +143 -0
  4. package/dist/components/AnnotationLine.svelte.d.ts +30 -0
  5. package/dist/components/AnnotationPoint.svelte +119 -0
  6. package/dist/components/AnnotationPoint.svelte.d.ts +34 -0
  7. package/dist/components/AnnotationRange.svelte +147 -0
  8. package/dist/components/AnnotationRange.svelte.d.ts +40 -0
  9. package/dist/components/Arc.svelte +344 -151
  10. package/dist/components/Arc.svelte.d.ts +138 -0
  11. package/dist/components/Area.svelte +165 -149
  12. package/dist/components/Area.svelte.d.ts +45 -0
  13. package/dist/components/Axis.svelte +283 -180
  14. package/dist/components/Axis.svelte.d.ts +117 -0
  15. package/dist/components/Bar.svelte +166 -107
  16. package/dist/components/Bar.svelte.d.ts +51 -0
  17. package/dist/components/Bars.svelte +56 -67
  18. package/dist/components/Bars.svelte.d.ts +27 -0
  19. package/dist/components/Blur.svelte +42 -12
  20. package/dist/components/Blur.svelte.d.ts +23 -21
  21. package/dist/components/Bounds.svelte +49 -19
  22. package/dist/components/Bounds.svelte.d.ts +24 -50
  23. package/dist/components/BrushContext.svelte +296 -168
  24. package/dist/components/BrushContext.svelte.d.ts +97 -65
  25. package/dist/components/Calendar.svelte +116 -59
  26. package/dist/components/Calendar.svelte.d.ts +50 -31
  27. package/dist/components/Chart.svelte +1289 -398
  28. package/dist/components/Chart.svelte.d.ts +535 -410
  29. package/dist/components/ChartClipPath.svelte +37 -15
  30. package/dist/components/ChartClipPath.svelte.d.ts +21 -19
  31. package/dist/components/Circle.svelte +124 -85
  32. package/dist/components/Circle.svelte.d.ts +52 -0
  33. package/dist/components/CircleClipPath.svelte +76 -16
  34. package/dist/components/CircleClipPath.svelte.d.ts +46 -0
  35. package/dist/components/ClipPath.svelte +71 -21
  36. package/dist/components/ClipPath.svelte.d.ts +40 -27
  37. package/dist/components/ColorRamp.svelte +75 -9
  38. package/dist/components/ColorRamp.svelte.d.ts +37 -19
  39. package/dist/components/ComputedStyles.svelte +17 -5
  40. package/dist/components/ComputedStyles.svelte.d.ts +11 -19
  41. package/dist/components/Connector.svelte +149 -0
  42. package/dist/components/Connector.svelte.d.ts +51 -0
  43. package/dist/components/Dagre.svelte +211 -122
  44. package/dist/components/Dagre.svelte.d.ts +119 -56
  45. package/dist/components/ForceSimulation.svelte +215 -90
  46. package/dist/components/ForceSimulation.svelte.d.ts +82 -35
  47. package/dist/components/Frame.svelte +33 -13
  48. package/dist/components/Frame.svelte.d.ts +13 -17
  49. package/dist/components/GeoCircle.svelte +29 -16
  50. package/dist/components/GeoCircle.svelte.d.ts +22 -24
  51. package/dist/components/GeoContext.svelte +113 -72
  52. package/dist/components/GeoContext.svelte.d.ts +49 -41
  53. package/dist/components/GeoEdgeFade.svelte +49 -13
  54. package/dist/components/GeoEdgeFade.svelte.d.ts +17 -19
  55. package/dist/components/GeoPath.svelte +157 -127
  56. package/dist/components/GeoPath.svelte.d.ts +48 -36
  57. package/dist/components/GeoPoint.svelte +52 -20
  58. package/dist/components/GeoPoint.svelte.d.ts +25 -22
  59. package/dist/components/GeoSpline.svelte +75 -26
  60. package/dist/components/GeoSpline.svelte.d.ts +29 -20
  61. package/dist/components/GeoTile.svelte +100 -49
  62. package/dist/components/GeoTile.svelte.d.ts +38 -23
  63. package/dist/components/GeoVisible.svelte +17 -9
  64. package/dist/components/GeoVisible.svelte.d.ts +10 -18
  65. package/dist/components/Graticule.svelte +30 -14
  66. package/dist/components/Graticule.svelte.d.ts +11 -52
  67. package/dist/components/Grid.svelte +230 -117
  68. package/dist/components/Grid.svelte.d.ts +71 -0
  69. package/dist/components/Group.svelte +173 -106
  70. package/dist/components/Group.svelte.d.ts +81 -0
  71. package/dist/components/Highlight.svelte +410 -308
  72. package/dist/components/Highlight.svelte.d.ts +107 -0
  73. package/dist/components/Hull.svelte +97 -46
  74. package/dist/components/Hull.svelte.d.ts +40 -30
  75. package/dist/components/Labels.svelte +127 -47
  76. package/dist/components/Labels.svelte.d.ts +70 -27
  77. package/dist/components/Legend.svelte +374 -190
  78. package/dist/components/Legend.svelte.d.ts +95 -44
  79. package/dist/components/Line.svelte +163 -125
  80. package/dist/components/Line.svelte.d.ts +75 -0
  81. package/dist/components/LinearGradient.svelte +153 -78
  82. package/dist/components/LinearGradient.svelte.d.ts +66 -31
  83. package/dist/components/Link.svelte +160 -104
  84. package/dist/components/Link.svelte.d.ts +54 -0
  85. package/dist/components/Marker.svelte +100 -39
  86. package/dist/components/Marker.svelte.d.ts +59 -27
  87. package/dist/components/MarkerWrapper.svelte +35 -0
  88. package/dist/components/MarkerWrapper.svelte.d.ts +18 -0
  89. package/dist/components/MonthPath.svelte +65 -20
  90. package/dist/components/MonthPath.svelte.d.ts +23 -17
  91. package/dist/components/MotionPath.svelte +80 -24
  92. package/dist/components/MotionPath.svelte.d.ts +46 -27
  93. package/dist/components/Pack.svelte +53 -17
  94. package/dist/components/Pack.svelte.d.ts +42 -21
  95. package/dist/components/Partition.svelte +64 -22
  96. package/dist/components/Partition.svelte.d.ts +49 -26
  97. package/dist/components/Pattern.svelte +297 -11
  98. package/dist/components/Pattern.svelte.d.ts +103 -19
  99. package/dist/components/Pie.svelte +122 -76
  100. package/dist/components/Pie.svelte.d.ts +65 -51
  101. package/dist/components/Point.svelte +20 -9
  102. package/dist/components/Point.svelte.d.ts +16 -20
  103. package/dist/components/Points.svelte +148 -137
  104. package/dist/components/Points.svelte.d.ts +45 -34
  105. package/dist/components/RadialGradient.svelte +143 -70
  106. package/dist/components/RadialGradient.svelte.d.ts +69 -31
  107. package/dist/components/Rect.svelte +121 -102
  108. package/dist/components/Rect.svelte.d.ts +36 -0
  109. package/dist/components/RectClipPath.svelte +82 -18
  110. package/dist/components/RectClipPath.svelte.d.ts +55 -0
  111. package/dist/components/Rule.svelte +107 -63
  112. package/dist/components/Rule.svelte.d.ts +40 -19
  113. package/dist/components/Sankey.svelte +132 -55
  114. package/dist/components/Sankey.svelte.d.ts +61 -31
  115. package/dist/components/Spline.svelte +281 -218
  116. package/dist/components/Spline.svelte.d.ts +95 -0
  117. package/dist/components/Text.svelte +437 -176
  118. package/dist/components/Text.svelte.d.ts +130 -0
  119. package/dist/components/Threshold.svelte +48 -16
  120. package/dist/components/Threshold.svelte.d.ts +29 -31
  121. package/dist/components/TileImage.svelte +103 -30
  122. package/dist/components/TileImage.svelte.d.ts +48 -23
  123. package/dist/components/TransformContext.svelte +365 -171
  124. package/dist/components/TransformControls.svelte +50 -26
  125. package/dist/components/TransformControls.svelte.d.ts +27 -19
  126. package/dist/components/Tree.svelte +74 -33
  127. package/dist/components/Tree.svelte.d.ts +42 -30
  128. package/dist/components/Treemap.svelte +119 -42
  129. package/dist/components/Treemap.svelte.d.ts +75 -27
  130. package/dist/components/Voronoi.svelte +108 -76
  131. package/dist/components/Voronoi.svelte.d.ts +40 -41
  132. package/dist/components/charts/ArcChart.svelte +464 -0
  133. package/dist/components/charts/ArcChart.svelte.d.ts +90 -0
  134. package/dist/components/charts/AreaChart.svelte +450 -393
  135. package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
  136. package/dist/components/charts/BarChart.svelte +454 -389
  137. package/dist/components/charts/BarChart.svelte.d.ts +76 -0
  138. package/dist/components/charts/ChartAnnotations.svelte +37 -0
  139. package/dist/components/charts/ChartAnnotations.svelte.d.ts +10 -0
  140. package/dist/components/charts/DefaultTooltip.svelte +60 -0
  141. package/dist/components/charts/DefaultTooltip.svelte.d.ts +10 -0
  142. package/dist/components/charts/LineChart.svelte +369 -314
  143. package/dist/components/charts/LineChart.svelte.d.ts +53 -0
  144. package/dist/components/charts/PieChart.svelte +458 -316
  145. package/dist/components/charts/PieChart.svelte.d.ts +137 -353
  146. package/dist/components/charts/ScatterChart.svelte +334 -296
  147. package/dist/components/charts/ScatterChart.svelte.d.ts +39 -0
  148. package/dist/components/charts/index.d.ts +8 -0
  149. package/dist/components/charts/index.js +7 -0
  150. package/dist/components/charts/types.d.ts +253 -0
  151. package/dist/components/charts/utils.svelte.d.ts +30 -0
  152. package/dist/components/charts/utils.svelte.js +55 -0
  153. package/dist/components/index.d.ts +76 -4
  154. package/dist/components/index.js +76 -5
  155. package/dist/components/layout/Canvas.svelte +321 -155
  156. package/dist/components/layout/Canvas.svelte.d.ts +104 -55
  157. package/dist/components/layout/Html.svelte +82 -42
  158. package/dist/components/layout/Html.svelte.d.ts +39 -28
  159. package/dist/components/layout/Layer.svelte +39 -0
  160. package/dist/components/layout/Layer.svelte.d.ts +17 -0
  161. package/dist/components/layout/Svg.svelte +122 -70
  162. package/dist/components/layout/Svg.svelte.d.ts +53 -34
  163. package/dist/components/layout/WebGL.svelte +135 -0
  164. package/dist/components/layout/WebGL.svelte.d.ts +50 -0
  165. package/dist/components/tooltip/Tooltip.svelte +246 -78
  166. package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
  167. package/dist/components/tooltip/TooltipContext.svelte +409 -271
  168. package/dist/components/tooltip/TooltipContext.svelte.d.ts +86 -55
  169. package/dist/components/tooltip/TooltipHeader.svelte +100 -11
  170. package/dist/components/tooltip/TooltipHeader.svelte.d.ts +43 -23
  171. package/dist/components/tooltip/TooltipItem.svelte +167 -27
  172. package/dist/components/tooltip/TooltipItem.svelte.d.ts +63 -31
  173. package/dist/components/tooltip/TooltipList.svelte +22 -3
  174. package/dist/components/tooltip/TooltipList.svelte.d.ts +6 -17
  175. package/dist/components/tooltip/TooltipSeparator.svelte +27 -1
  176. package/dist/components/tooltip/TooltipSeparator.svelte.d.ts +6 -15
  177. package/dist/components/tooltip/index.d.ts +6 -0
  178. package/dist/components/tooltip/index.js +6 -0
  179. package/dist/components/tooltip/tooltipMetaContext.d.ts +79 -0
  180. package/dist/components/tooltip/tooltipMetaContext.js +139 -0
  181. package/dist/components/types.d.ts +1 -0
  182. package/dist/components/types.js +1 -0
  183. package/dist/docs/Blockquote.svelte.d.ts +18 -14
  184. package/dist/docs/Code.svelte.d.ts +26 -22
  185. package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
  186. package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
  187. package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
  188. package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
  189. package/dist/docs/CurveMenuField.svelte +14 -3
  190. package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
  191. package/dist/docs/GeoDebug.svelte +47 -42
  192. package/dist/docs/GeoDebug.svelte.d.ts +4 -16
  193. package/dist/docs/Header1.svelte.d.ts +27 -16
  194. package/dist/docs/Json.svelte.d.ts +20 -16
  195. package/dist/docs/Layout.svelte.d.ts +18 -13
  196. package/dist/docs/Link.svelte.d.ts +33 -21
  197. package/dist/docs/PathDataMenuField.svelte +14 -10
  198. package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
  199. package/dist/docs/Preview.svelte +20 -7
  200. package/dist/docs/Preview.svelte.d.ts +12 -22
  201. package/dist/docs/TilesetField.svelte.d.ts +21 -17
  202. package/dist/docs/TransformDebug.svelte +5 -6
  203. package/dist/docs/TransformDebug.svelte.d.ts +18 -14
  204. package/dist/docs/ViewSourceButton.svelte.d.ts +21 -17
  205. package/dist/types/d3-shape-extentions.d.ts +7 -0
  206. package/dist/utils/afterTick.d.ts +5 -0
  207. package/dist/utils/afterTick.js +8 -0
  208. package/dist/utils/arcText.svelte.d.ts +57 -0
  209. package/dist/utils/arcText.svelte.js +262 -0
  210. package/dist/utils/array.d.ts +9 -1
  211. package/dist/utils/array.js +13 -0
  212. package/dist/utils/attributes.d.ts +29 -0
  213. package/dist/utils/attributes.js +40 -0
  214. package/dist/utils/canvas.js +47 -10
  215. package/dist/utils/chart.d.ts +78 -0
  216. package/dist/utils/chart.js +512 -0
  217. package/dist/utils/color.d.ts +1 -0
  218. package/dist/utils/color.js +8 -0
  219. package/dist/utils/common.d.ts +3 -5
  220. package/dist/utils/common.js +3 -2
  221. package/dist/utils/connectorUtils.d.ts +21 -0
  222. package/dist/utils/connectorUtils.js +111 -0
  223. package/dist/utils/createId.d.ts +7 -0
  224. package/dist/utils/createId.js +9 -0
  225. package/dist/utils/debug.d.ts +1 -0
  226. package/dist/utils/debug.js +84 -0
  227. package/dist/utils/filterObject.d.ts +9 -0
  228. package/dist/utils/filterObject.js +12 -0
  229. package/dist/utils/graph/dagre.d.ts +34 -0
  230. package/dist/utils/graph/dagre.js +78 -0
  231. package/dist/utils/graph/dagre.test.d.ts +1 -0
  232. package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
  233. package/dist/utils/graph/sankey.d.ts +28 -0
  234. package/dist/utils/{graph.js → graph/sankey.js} +13 -41
  235. package/dist/utils/index.d.ts +3 -1
  236. package/dist/utils/index.js +3 -1
  237. package/dist/utils/key.svelte.d.ts +3 -0
  238. package/dist/utils/key.svelte.js +11 -0
  239. package/dist/utils/legendPayload.d.ts +7 -0
  240. package/dist/utils/legendPayload.js +8 -0
  241. package/dist/utils/motion.svelte.d.ts +140 -0
  242. package/dist/utils/motion.svelte.js +180 -0
  243. package/dist/utils/motion.test.d.ts +1 -0
  244. package/dist/utils/motion.test.js +213 -0
  245. package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
  246. package/dist/utils/rect.svelte.js +105 -0
  247. package/dist/utils/scales.svelte.d.ts +90 -0
  248. package/dist/utils/{scales.js → scales.svelte.js} +100 -39
  249. package/dist/utils/stack.d.ts +2 -3
  250. package/dist/utils/stack.js +1 -1
  251. package/dist/utils/string.js +87 -0
  252. package/dist/utils/ticks.d.ts +8 -2
  253. package/dist/utils/ticks.js +28 -0
  254. package/dist/utils/ticks.test.d.ts +1 -0
  255. package/dist/utils/ticks.test.js +67 -0
  256. package/dist/utils/types.d.ts +81 -0
  257. package/package.json +21 -19
  258. package/dist/components/ChartContext.svelte +0 -295
  259. package/dist/components/ChartContext.svelte.d.ts +0 -139
  260. package/dist/components/TransformContext.svelte.d.ts +0 -158
  261. package/dist/stores/motionStore.d.ts +0 -30
  262. package/dist/stores/motionStore.js +0 -62
  263. package/dist/utils/graph.d.ts +0 -37
  264. package/dist/utils/rect.js +0 -107
  265. package/dist/utils/scales.d.ts +0 -66
  266. /package/dist/{utils/graph.test.d.ts → components/charts/types.js} +0 -0
@@ -1,64 +1,113 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- type ComponentRender = {
1
+ export type CanvasPropsWithoutHTML = {
2
+ /**
3
+ * The `<canvas>` tag. Useful for bindings.
4
+ *
5
+ * @bindable
6
+ */
7
+ ref?: HTMLCanvasElement;
8
+ /**
9
+ * The `<canvas>`'s 2d context. Useful for bindings.
10
+ *
11
+ * @bindable
12
+ */
13
+ canvasContext?: CanvasRenderingContext2D;
14
+ /**
15
+ * Force the use of a software (instead of hardware accelerated) 2D canvas, which can
16
+ * save memory when calling getImageData() frequently.
17
+ *
18
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext#willreadfrequently
19
+ *
20
+ * @default false
21
+ */
22
+ willReadFrequently?: boolean;
23
+ /**
24
+ * The `z-index` style to apply to the layer.
25
+ *
26
+ * @default 0
27
+ */
28
+ zIndex?: number;
29
+ /**
30
+ *
31
+ * Whether pointer events should be enabled on the canvas.
32
+ *
33
+ * - `false`: `pointer-events: none;` will be set on the entire layer.
34
+ * - `true`: pointer events will operate normally.
35
+ *
36
+ * @default true
37
+ */
38
+ pointerEvents?: boolean;
39
+ /**
40
+ * The content to display if canvas is not supported or cannot be rendered.
41
+ * This can either be a string or a snippet with custom markup.
42
+ */
43
+ fallback?: string | Snippet;
44
+ /**
45
+ * Translate children to center of the canvas (useful for radial layouts).
46
+ *
47
+ * @default false
48
+ */
49
+ center?: boolean | 'x' | 'y';
50
+ /**
51
+ * Ignore TransformContext.
52
+ *
53
+ * Useful to add static elements such as legends.
54
+ *
55
+ * @default false
56
+ */
57
+ ignoreTransform?: boolean;
58
+ /**
59
+ * Show the hit canvas for debugging purposes.
60
+ *
61
+ * @default false
62
+ */
63
+ debug?: boolean;
64
+ children?: Snippet<[
65
+ {
66
+ ref: HTMLCanvasElement;
67
+ canvasContext: CanvasRenderingContext2D | undefined;
68
+ }
69
+ ]>;
70
+ };
71
+ export type CanvasProps = CanvasPropsWithoutHTML & Without<HTMLCanvasAttributes, CanvasPropsWithoutHTML>;
72
+ type ComponentRender<T extends Element = Element> = {
3
73
  name: string;
4
74
  render: (ctx: CanvasRenderingContext2D, styleOverrides?: ComputedStylesOptions) => any;
5
75
  retainState?: boolean;
6
76
  events?: {
7
- click?: (e: MouseEvent) => void;
8
- dblclick?: (e: MouseEvent) => void;
9
- pointerenter?: (e: PointerEvent) => void;
10
- pointerover?: (e: PointerEvent) => void;
11
- pointermove?: (e: PointerEvent) => void;
12
- pointerleave?: (e: PointerEvent) => void;
13
- pointerout?: (e: PointerEvent) => void;
14
- pointerdown?: (e: PointerEvent) => void;
15
- touchmove?: (e: TouchEvent) => void;
77
+ click?: MouseEventHandler<T> | null;
78
+ dblclick?: MouseEventHandler<T> | null;
79
+ pointerenter?: PointerEventHandler<T> | null;
80
+ pointerover?: PointerEventHandler<T> | null;
81
+ pointermove?: PointerEventHandler<T> | null;
82
+ pointerleave?: PointerEventHandler<T> | null;
83
+ pointerout?: PointerEventHandler<T> | null;
84
+ pointerdown?: PointerEventHandler<T> | null;
85
+ touchmove?: TouchEventHandler<T> | null;
16
86
  };
87
+ /**
88
+ * Optional dependencies to track and invalidate the canvas context when they change.
89
+ */
90
+ deps?: () => any[];
17
91
  };
18
- export type CanvasContext = {
19
- /** Register component to render. Returns method to unregister on component destory */
20
- register(component: ComponentRender): () => void;
92
+ export type CanvasContextValue = {
93
+ /**
94
+ * Register component to render.
95
+ *
96
+ * Returns method to unregister on component destroy
97
+ */
98
+ register<T extends Element>(component: ComponentRender<T>): () => void;
21
99
  invalidate(): void;
22
100
  };
23
- export declare const canvasContextKey: unique symbol;
24
- export declare function getCanvasContext(): CanvasContext;
101
+ export declare function getCanvasContext(): CanvasContextValue;
102
+ /**
103
+ * Handles the automatic registration of the component to the canvas context,
104
+ * with dependency tracking and cleanup on destroy.
105
+ */
106
+ export declare function registerCanvasComponent<T extends Element>(component: ComponentRender<T>): void;
107
+ import { type Snippet } from 'svelte';
25
108
  import { type ComputedStylesOptions } from '../../utils/canvas.js';
26
- declare const __propDef: {
27
- props: {
28
- [x: string]: any;
29
- element?: HTMLCanvasElement | undefined;
30
- context?: CanvasRenderingContext2D | undefined;
31
- willReadFrequently?: boolean | undefined;
32
- zIndex?: undefined;
33
- pointerEvents?: boolean | undefined | undefined;
34
- fallback?: string | undefined;
35
- label?: string | undefined | undefined;
36
- labelledBy?: string | undefined | undefined;
37
- describedBy?: string | undefined | undefined;
38
- center?: boolean | "x" | "y" | undefined;
39
- ignoreTransform?: boolean | undefined;
40
- debug?: boolean | undefined;
41
- };
42
- events: {
43
- click: MouseEvent;
44
- pointerenter: PointerEvent;
45
- pointermove: PointerEvent;
46
- pointerleave: PointerEvent;
47
- touchmove: TouchEvent;
48
- } & {
49
- [evt: string]: CustomEvent<any>;
50
- };
51
- slots: {
52
- fallback: {};
53
- default: {
54
- element: HTMLCanvasElement | undefined;
55
- context: CanvasRenderingContext2D;
56
- };
57
- };
58
- };
59
- export type CanvasProps = typeof __propDef.props;
60
- export type CanvasEvents = typeof __propDef.events;
61
- export type CanvasSlots = typeof __propDef.slots;
62
- export default class Canvas extends SvelteComponentTyped<CanvasProps, CanvasEvents, CanvasSlots> {
63
- }
64
- export {};
109
+ import type { HTMLCanvasAttributes, MouseEventHandler, PointerEventHandler, TouchEventHandler } from 'svelte/elements';
110
+ import type { Without } from '../../utils/types.js';
111
+ declare const Canvas: import("svelte").Component<CanvasProps, {}, "ref" | "canvasContext">;
112
+ type Canvas = ReturnType<typeof Canvas>;
113
+ export default Canvas;
@@ -1,74 +1,114 @@
1
- <script lang="ts">
2
- import { cls } from '@layerstack/tailwind';
1
+ <script lang="ts" module>
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { Without } from '../../utils/types.js';
4
+ import type { Snippet } from 'svelte';
3
5
 
4
- import { setRenderContext } from '../Chart.svelte';
5
- import { chartContext } from '../ChartContext.svelte';
6
- import { transformContext } from '../TransformContext.svelte';
6
+ type HTMLPropsWithoutHTML = {
7
+ /**
8
+ * A reference to the layer's outermost `<div>` tag.
9
+ *
10
+ * @bindable
11
+ */
12
+ ref?: HTMLElement;
7
13
 
8
- /** The layer's outermost `<div>` tag. Useful for bindings. */
9
- export let element: HTMLDivElement | undefined = undefined;
14
+ /**
15
+ * The layer's z-index.
16
+ */
17
+ zIndex?: number;
10
18
 
11
- /** The layer's z-index. */
12
- export let zIndex = undefined;
19
+ /**
20
+ * Set this to `false` to set `pointer-events: none;` on the entire layer.
21
+ */
22
+ pointerEvents?: boolean;
13
23
 
14
- /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
15
- export let pointerEvents: boolean | undefined = undefined;
24
+ /**
25
+ * A string passed to the `aria-role` on the `<div>` tag.
26
+ * This is `undefined` by default but will be set by default to `'figure'`
27
+ * if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in.
28
+ */
29
+ role?: string;
16
30
 
17
- /** A string passed to the `aria-role` on the `<div>` tag. This is `undefined` by default but will be set by default to `'figure'` if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in. */
18
- export let role: string | undefined = undefined;
31
+ /**
32
+ * Translate children to center (useful for radial layouts)
33
+ */
34
+ center?: boolean | 'x' | 'y';
19
35
 
20
- /** A string passed to the `aria-label` property on the `<div>` tag. */
21
- export let label: string | undefined = undefined;
36
+ /**
37
+ * Ignore TransformContext. Useful to add static elements such as legends.
38
+ */
39
+ ignoreTransform?: boolean;
22
40
 
23
- /** A string passed to the `aria-labelledby property` on the `<div>` tag. */
24
- export let labelledBy: string | undefined = undefined;
41
+ children?: Snippet<[{ ref: HTMLElement }]>;
42
+ };
43
+
44
+ export type HTMLProps = HTMLPropsWithoutHTML &
45
+ Without<HTMLAttributes<HTMLElement>, HTMLPropsWithoutHTML>;
46
+ </script>
47
+
48
+ <script lang="ts">
49
+ import { cls } from '@layerstack/tailwind';
50
+ import { getTransformContext } from '../TransformContext.svelte';
25
51
 
26
- /** A string passed to the `aria-describedby` property on the `<div>` tag. */
27
- export let describedBy: string | undefined = undefined;
52
+ import { getChartContext, setRenderContext } from '../Chart.svelte';
53
+ import { layerClass } from '../../utils/attributes.js';
28
54
 
29
- /**
30
- * Translate children to center (useful for radial layouts)
31
- */
32
- export let center: boolean | 'x' | 'y' = false;
55
+ let {
56
+ ref: refProp = $bindable(),
57
+ zIndex = 0,
58
+ pointerEvents = true,
59
+ role,
60
+ 'aria-label': label,
61
+ 'aria-labelledby': labelledBy,
62
+ 'aria-describedby': describedBy,
63
+ center = false,
64
+ ignoreTransform = false,
65
+ class: className,
66
+ children,
67
+ ...restProps
68
+ }: HTMLProps = $props();
33
69
 
34
- /** Ignore TransformContext. Useful to add static elements such as legends. */
35
- export let ignoreTransform = false;
70
+ let ref = $state<HTMLElement>();
71
+ $effect.pre(() => {
72
+ refProp = ref;
73
+ });
36
74
 
37
- $: roleVal = role || (label || labelledBy || describedBy ? 'figure' : undefined);
75
+ const roleVal = $derived(role || (label || labelledBy || describedBy ? 'figure' : undefined));
38
76
 
39
- const { width, height, padding } = chartContext();
40
- const { mode, scale, translate } = transformContext();
77
+ const ctx = getChartContext();
78
+ const transformCtx = getTransformContext();
41
79
 
42
- let transform = '';
43
- $: if (mode === 'canvas' && !ignoreTransform) {
44
- transform = `translate(${$translate.x}px,${$translate.y}px) scale(${$scale})`;
45
- } else if (center) {
46
- transform = `translate(${center === 'x' || center === true ? $width / 2 : 0}px, ${center === 'y' || center === true ? $height / 2 : 0}px)`;
47
- }
80
+ const transform = $derived.by(() => {
81
+ if (transformCtx.mode === 'canvas' && !ignoreTransform) {
82
+ return `translate(${transformCtx.translate.x}px,${transformCtx.translate.y}px) scale(${transformCtx.scale})`;
83
+ } else if (center) {
84
+ return `translate(${center === 'x' || center === true ? ctx.width / 2 : 0}px, ${center === 'y' || center === true ? ctx.height / 2 : 0}px)`;
85
+ }
86
+ });
48
87
 
49
88
  setRenderContext('html');
50
89
  </script>
51
90
 
52
91
  <div
53
- bind:this={element}
92
+ bind:this={ref}
54
93
  class={cls(
55
- 'layercake-layout-html',
94
+ layerClass('layout-html'),
56
95
  'absolute top-0 left-0',
57
96
  pointerEvents === false && 'pointer-events-none',
58
- $$props.class
97
+ className
59
98
  )}
60
99
  style:transform
61
100
  style:transform-origin="top left"
62
101
  style:z-index={zIndex}
63
102
  style:pointer-events={pointerEvents === false ? 'none' : null}
64
- style:top="{$padding.top}px"
65
- style:bottom="{$padding.bottom}px"
66
- style:left="{$padding.left}px"
67
- style:right="{$padding.right}px"
103
+ style:top="{ctx.padding.top}px"
104
+ style:bottom="{ctx.padding.bottom}px"
105
+ style:left="{ctx.padding.left}px"
106
+ style:right="{ctx.padding.right}px"
68
107
  role={roleVal}
69
108
  aria-label={label}
70
109
  aria-labelledby={labelledBy}
71
110
  aria-describedby={describedBy}
111
+ {...restProps}
72
112
  >
73
- <slot {element}></slot>
113
+ {@render children?.({ ref })}
74
114
  </div>
@@ -1,29 +1,40 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- element?: HTMLDivElement | undefined;
6
- zIndex?: undefined;
7
- pointerEvents?: boolean | undefined | undefined;
8
- role?: string | undefined | undefined;
9
- label?: string | undefined | undefined;
10
- labelledBy?: string | undefined | undefined;
11
- describedBy?: string | undefined | undefined;
12
- center?: boolean | "x" | "y" | undefined;
13
- ignoreTransform?: boolean | undefined;
14
- };
15
- events: {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {
19
- default: {
20
- element: HTMLDivElement | undefined;
21
- };
22
- };
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Without } from '../../utils/types.js';
3
+ import type { Snippet } from 'svelte';
4
+ type HTMLPropsWithoutHTML = {
5
+ /**
6
+ * A reference to the layer's outermost `<div>` tag.
7
+ *
8
+ * @bindable
9
+ */
10
+ ref?: HTMLElement;
11
+ /**
12
+ * The layer's z-index.
13
+ */
14
+ zIndex?: number;
15
+ /**
16
+ * Set this to `false` to set `pointer-events: none;` on the entire layer.
17
+ */
18
+ pointerEvents?: boolean;
19
+ /**
20
+ * A string passed to the `aria-role` on the `<div>` tag.
21
+ * This is `undefined` by default but will be set by default to `'figure'`
22
+ * if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in.
23
+ */
24
+ role?: string;
25
+ /**
26
+ * Translate children to center (useful for radial layouts)
27
+ */
28
+ center?: boolean | 'x' | 'y';
29
+ /**
30
+ * Ignore TransformContext. Useful to add static elements such as legends.
31
+ */
32
+ ignoreTransform?: boolean;
33
+ children?: Snippet<[{
34
+ ref: HTMLElement;
35
+ }]>;
23
36
  };
24
- export type HtmlProps = typeof __propDef.props;
25
- export type HtmlEvents = typeof __propDef.events;
26
- export type HtmlSlots = typeof __propDef.slots;
27
- export default class Html extends SvelteComponentTyped<HtmlProps, HtmlEvents, HtmlSlots> {
28
- }
29
- export {};
37
+ export type HTMLProps = HTMLPropsWithoutHTML & Without<HTMLAttributes<HTMLElement>, HTMLPropsWithoutHTML>;
38
+ declare const Html: import("svelte").Component<HTMLProps, {}, "ref">;
39
+ type Html = ReturnType<typeof Html>;
40
+ export default Html;
@@ -0,0 +1,39 @@
1
+ <script lang="ts" module>
2
+ import type { ComponentProps } from 'svelte';
3
+
4
+ export type CanvasLayerProps = {
5
+ type: 'canvas';
6
+ } & Omit<ComponentProps<typeof Canvas>, 'type'>;
7
+
8
+ export type HtmlLayerProps = {
9
+ type: 'html';
10
+ } & Omit<ComponentProps<typeof Html>, 'type'>;
11
+
12
+ export type SvgLayerProps = {
13
+ type: 'svg';
14
+ } & Omit<ComponentProps<typeof Svg>, 'type'>;
15
+
16
+ export type LayerProps = CanvasLayerProps | HtmlLayerProps | SvgLayerProps;
17
+ </script>
18
+
19
+ <script lang="ts">
20
+ import Canvas from './Canvas.svelte';
21
+ import Html from './Html.svelte';
22
+ import Svg from './Svg.svelte';
23
+
24
+ let { type, children, ...restProps }: LayerProps = $props();
25
+ </script>
26
+
27
+ {#if type === 'canvas'}
28
+ <Canvas {...restProps as ComponentProps<typeof Canvas>}>
29
+ {@render children?.()}
30
+ </Canvas>
31
+ {:else if type === 'svg'}
32
+ <Svg {...restProps as ComponentProps<typeof Svg>}>
33
+ {@render children?.()}
34
+ </Svg>
35
+ {:else if type === 'html'}
36
+ <Html {...restProps as ComponentProps<typeof Html>}>
37
+ {@render children?.()}
38
+ </Html>
39
+ {/if}
@@ -0,0 +1,17 @@
1
+ import type { ComponentProps } from 'svelte';
2
+ export type CanvasLayerProps = {
3
+ type: 'canvas';
4
+ } & Omit<ComponentProps<typeof Canvas>, 'type'>;
5
+ export type HtmlLayerProps = {
6
+ type: 'html';
7
+ } & Omit<ComponentProps<typeof Html>, 'type'>;
8
+ export type SvgLayerProps = {
9
+ type: 'svg';
10
+ } & Omit<ComponentProps<typeof Svg>, 'type'>;
11
+ export type LayerProps = CanvasLayerProps | HtmlLayerProps | SvgLayerProps;
12
+ import Canvas from './Canvas.svelte';
13
+ import Html from './Html.svelte';
14
+ import Svg from './Svg.svelte';
15
+ declare const Layer: import("svelte").Component<LayerProps, {}, "">;
16
+ type Layer = ReturnType<typeof Layer>;
17
+ export default Layer;