layerchart 2.0.0-next.1 → 2.0.0-next.11

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 (275) 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 +320 -179
  14. package/dist/components/Axis.svelte.d.ts +127 -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 +148 -77
  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 +463 -197
  118. package/dist/components/Text.svelte.d.ts +136 -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 +153 -103
  131. package/dist/components/Voronoi.svelte.d.ts +42 -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 +444 -393
  135. package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
  136. package/dist/components/charts/BarChart.svelte +463 -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 +366 -315
  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 +332 -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 +59 -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 +347 -171
  156. package/dist/components/layout/Canvas.svelte.d.ts +110 -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 +253 -78
  166. package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
  167. package/dist/components/tooltip/TooltipContext.svelte +426 -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 +3 -1
  184. package/dist/docs/Blockquote.svelte.d.ts +5 -16
  185. package/dist/docs/Code.svelte +20 -12
  186. package/dist/docs/Code.svelte.d.ts +12 -22
  187. package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
  188. package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
  189. package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
  190. package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
  191. package/dist/docs/CurveMenuField.svelte +14 -3
  192. package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
  193. package/dist/docs/GeoDebug.svelte +47 -42
  194. package/dist/docs/GeoDebug.svelte.d.ts +4 -16
  195. package/dist/docs/Header1.svelte +4 -2
  196. package/dist/docs/Header1.svelte.d.ts +5 -18
  197. package/dist/docs/Json.svelte +11 -3
  198. package/dist/docs/Json.svelte.d.ts +9 -17
  199. package/dist/docs/Layout.svelte +10 -7
  200. package/dist/docs/Layout.svelte.d.ts +5 -15
  201. package/dist/docs/Link.svelte +7 -3
  202. package/dist/docs/Link.svelte.d.ts +5 -27
  203. package/dist/docs/PathDataMenuField.svelte +14 -10
  204. package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
  205. package/dist/docs/Preview.svelte +20 -7
  206. package/dist/docs/Preview.svelte.d.ts +12 -22
  207. package/dist/docs/TilesetField.svelte +20 -19
  208. package/dist/docs/TilesetField.svelte.d.ts +6 -19
  209. package/dist/docs/TransformDebug.svelte +5 -6
  210. package/dist/docs/TransformDebug.svelte.d.ts +18 -14
  211. package/dist/docs/ViewSourceButton.svelte +7 -4
  212. package/dist/docs/ViewSourceButton.svelte.d.ts +8 -18
  213. package/dist/types/d3-shape-extentions.d.ts +7 -0
  214. package/dist/utils/afterTick.d.ts +5 -0
  215. package/dist/utils/afterTick.js +8 -0
  216. package/dist/utils/arcText.svelte.d.ts +57 -0
  217. package/dist/utils/arcText.svelte.js +262 -0
  218. package/dist/utils/array.d.ts +9 -1
  219. package/dist/utils/array.js +13 -0
  220. package/dist/utils/attributes.d.ts +29 -0
  221. package/dist/utils/attributes.js +40 -0
  222. package/dist/utils/canvas.js +47 -10
  223. package/dist/utils/chart.d.ts +78 -0
  224. package/dist/utils/chart.js +512 -0
  225. package/dist/utils/color.d.ts +1 -0
  226. package/dist/utils/color.js +8 -0
  227. package/dist/utils/common.d.ts +3 -5
  228. package/dist/utils/common.js +3 -2
  229. package/dist/utils/connectorUtils.d.ts +21 -0
  230. package/dist/utils/connectorUtils.js +111 -0
  231. package/dist/utils/createId.d.ts +7 -0
  232. package/dist/utils/createId.js +9 -0
  233. package/dist/utils/debug.d.ts +1 -0
  234. package/dist/utils/debug.js +84 -0
  235. package/dist/utils/filterObject.d.ts +9 -0
  236. package/dist/utils/filterObject.js +12 -0
  237. package/dist/utils/graph/dagre.d.ts +34 -0
  238. package/dist/utils/graph/dagre.js +78 -0
  239. package/dist/utils/graph/dagre.test.d.ts +1 -0
  240. package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
  241. package/dist/utils/graph/sankey.d.ts +28 -0
  242. package/dist/utils/{graph.js → graph/sankey.js} +13 -41
  243. package/dist/utils/index.d.ts +3 -1
  244. package/dist/utils/index.js +3 -1
  245. package/dist/utils/key.svelte.d.ts +3 -0
  246. package/dist/utils/key.svelte.js +11 -0
  247. package/dist/utils/legendPayload.d.ts +7 -0
  248. package/dist/utils/legendPayload.js +8 -0
  249. package/dist/utils/motion.svelte.d.ts +140 -0
  250. package/dist/utils/motion.svelte.js +180 -0
  251. package/dist/utils/motion.test.d.ts +1 -0
  252. package/dist/utils/motion.test.js +213 -0
  253. package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
  254. package/dist/utils/rect.svelte.js +105 -0
  255. package/dist/utils/scales.svelte.d.ts +91 -0
  256. package/dist/utils/scales.svelte.js +201 -0
  257. package/dist/utils/stack.d.ts +2 -3
  258. package/dist/utils/stack.js +1 -1
  259. package/dist/utils/string.js +87 -0
  260. package/dist/utils/ticks.d.ts +9 -3
  261. package/dist/utils/ticks.js +122 -147
  262. package/dist/utils/ticks.test.d.ts +1 -0
  263. package/dist/utils/ticks.test.js +57 -0
  264. package/dist/utils/types.d.ts +81 -0
  265. package/package.json +28 -24
  266. package/dist/components/ChartContext.svelte +0 -295
  267. package/dist/components/ChartContext.svelte.d.ts +0 -139
  268. package/dist/components/TransformContext.svelte.d.ts +0 -158
  269. package/dist/stores/motionStore.d.ts +0 -30
  270. package/dist/stores/motionStore.js +0 -62
  271. package/dist/utils/graph.d.ts +0 -37
  272. package/dist/utils/rect.js +0 -107
  273. package/dist/utils/scales.d.ts +0 -66
  274. package/dist/utils/scales.js +0 -136
  275. /package/dist/{utils/graph.test.d.ts → components/charts/types.js} +0 -0
@@ -0,0 +1,127 @@
1
+ import type { Transition, TransitionParams, Without } from '../utils/types.js';
2
+ export type AxisPropsWithoutHTML<In extends Transition = Transition> = {
3
+ /**
4
+ * Location of axis
5
+ */
6
+ placement: 'top' | 'bottom' | 'left' | 'right' | 'angle' | 'radius';
7
+ /**
8
+ * The label for the axis.
9
+ *
10
+ * Can either be a string or a snippet to render custom content.
11
+ * The snippet receives spreadable props to apply to the label.
12
+ */
13
+ label?: string | Snippet<[{
14
+ props: ComponentProps<typeof Text>;
15
+ }]>;
16
+ /**
17
+ * Location of axis label
18
+ * @default 'middle'
19
+ */
20
+ labelPlacement?: 'start' | 'middle' | 'end';
21
+ /**
22
+ * Props applied to label Text
23
+ */
24
+ labelProps?: Partial<ComponentProps<typeof Text>>;
25
+ /**
26
+ * Draw a rule line. Use Rule component for greater rendering order control
27
+ * @default false
28
+ */
29
+ rule?: boolean | Partial<ComponentProps<typeof Rule>>;
30
+ /**
31
+ * Draw grid lines
32
+ * @default false
33
+ */
34
+ grid?: boolean | Pick<SVGAttributes<SVGElement>, 'class' | 'style'>;
35
+ /**
36
+ * Control the number of ticks
37
+ */
38
+ ticks?: TicksConfig;
39
+ /**
40
+ * Width or height of each tick in pxiels (responsive reduce)
41
+ */
42
+ tickSpacing?: number;
43
+ /**
44
+ * Whether to render tick labels on multiple lines for additional context
45
+ *
46
+ * @default false
47
+ */
48
+ tickMultiline?: boolean;
49
+ /**
50
+ * Length of the tick line
51
+ * @default 4
52
+ */
53
+ tickLength?: number;
54
+ /**
55
+ * Whether to render tick marks.
56
+ *
57
+ * @default true
58
+ */
59
+ tickMarks?: boolean;
60
+ /**
61
+ * Format tick labels
62
+ */
63
+ format?: FormatType;
64
+ /**
65
+ * Props to apply to each tick label
66
+ */
67
+ tickLabelProps?: Partial<ComponentProps<typeof Text>>;
68
+ /**
69
+ * A snippet to render your own custom tick label.
70
+ */
71
+ tickLabel?: Snippet<[{
72
+ props: ComponentProps<typeof Text>;
73
+ index: number;
74
+ }]>;
75
+ /**
76
+ * Transition function for entering elements
77
+ * @default defaults to fade if the motion prop is set to tweened
78
+ */
79
+ transitionIn?: In;
80
+ /**
81
+ * Parameters for the transitionIn function
82
+ * @default { easing: cubicIn }
83
+ */
84
+ transitionInParams?: TransitionParams<In>;
85
+ /**
86
+ * Scale for the axis
87
+ */
88
+ scale?: any;
89
+ /**
90
+ * Classes for styling various parts of the axis
91
+ * @default {}
92
+ */
93
+ classes?: {
94
+ root?: string;
95
+ label?: string;
96
+ rule?: string;
97
+ tick?: string;
98
+ tickLabel?: string;
99
+ };
100
+ motion?: MotionProp;
101
+ };
102
+ export type AxisProps<In extends Transition = Transition> = AxisPropsWithoutHTML<In> & Without<GroupProps, AxisPropsWithoutHTML<In>>;
103
+ import { type ComponentProps, type Snippet } from 'svelte';
104
+ import type { SVGAttributes } from 'svelte/elements';
105
+ import { type FormatType } from '@layerstack/utils';
106
+ import { type GroupProps } from './Group.svelte';
107
+ import Rule from './Rule.svelte';
108
+ import Text from './Text.svelte';
109
+ import { type MotionProp } from '../utils/motion.svelte.js';
110
+ import { type TicksConfig } from '../utils/ticks.js';
111
+ declare class __sveltets_Render<T extends Transition = Transition> {
112
+ props(): AxisProps<T>;
113
+ events(): {};
114
+ slots(): {};
115
+ bindings(): "";
116
+ exports(): {};
117
+ }
118
+ interface $$IsomorphicComponent {
119
+ new <T extends Transition = Transition>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
120
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
121
+ } & ReturnType<__sveltets_Render<T>['exports']>;
122
+ <T extends Transition = Transition>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
123
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
124
+ }
125
+ declare const Axis: $$IsomorphicComponent;
126
+ type Axis<T extends Transition = Transition> = InstanceType<typeof Axis<T>>;
127
+ export default Axis;
@@ -1,89 +1,140 @@
1
+ <script lang="ts" module>
2
+ import { createDimensionGetter, type Insets } from '../utils/rect.svelte.js';
3
+
4
+ export type BarPropsWithoutHTML = {
5
+ /**
6
+ * data to render the bar from
7
+ */
8
+ data: Object;
9
+
10
+ /**
11
+ * Override `x` from context. Useful for multiple Bar instances
12
+ *
13
+ * @default ctx.x
14
+ */
15
+ x?: Accessor;
16
+
17
+ /**
18
+ * Override `y` from context. Useful for multiple Bar instances
19
+ *
20
+ * @default ctx.y
21
+ */
22
+ y?: Accessor;
23
+
24
+ /**
25
+ * Override `x1` from context. Useful for multiple Bar instances
26
+ *
27
+ * @default ctx.x1
28
+ */
29
+ x1?: Accessor;
30
+
31
+ /**
32
+ * Override `y1` from context. Useful for multiple Bar instances
33
+ *
34
+ * @default ctx.y1
35
+ */
36
+ y1?: Accessor;
37
+
38
+ radius?: number;
39
+
40
+ insets?: Insets;
41
+
42
+ initialX?: number;
43
+
44
+ initialY?: number;
45
+
46
+ initialHeight?: number;
47
+
48
+ initialWidth?: number;
49
+
50
+ /**
51
+ * Control which corners are rounded with radius. Uses <path> instead of <rect> when not set
52
+ * to `all`
53
+ */
54
+ rounded?:
55
+ | 'all'
56
+ | 'none'
57
+ | 'edge'
58
+ | 'top'
59
+ | 'bottom'
60
+ | 'left'
61
+ | 'right'
62
+ | 'top-left'
63
+ | 'top-right'
64
+ | 'bottom-left'
65
+ | 'bottom-right';
66
+
67
+ motion?: MotionProp<'x' | 'y' | 'width' | 'height'>;
68
+ } & CommonStyleProps;
69
+
70
+ export type BarProps = BarPropsWithoutHTML &
71
+ Without<
72
+ Omit<SVGAttributes<SVGElement>, 'width' | 'height' | 'x' | 'y' | 'offset'>,
73
+ BarPropsWithoutHTML
74
+ >;
75
+ </script>
76
+
1
77
  <script lang="ts">
2
- import { type ComponentProps } from 'svelte';
78
+ import type { SVGAttributes } from 'svelte/elements';
79
+ import { greatestAbs } from '@layerstack/utils';
3
80
 
4
- import { chartContext } from './ChartContext.svelte';
5
81
  import Rect from './Rect.svelte';
6
82
  import Spline from './Spline.svelte';
7
83
 
8
- import { createDimensionGetter, type Insets } from '../utils/rect.js';
9
- import { isScaleBand } from '../utils/scales.js';
84
+ import { isScaleBand } from '../utils/scales.svelte.js';
10
85
  import { accessor, type Accessor } from '../utils/common.js';
11
- import { greatestAbs } from '@layerstack/utils';
12
-
13
- const { x: xContext, y: yContext, xScale } = chartContext();
14
-
15
- export let bar: Object;
16
-
17
- /**
18
- * Override `x` from context. Useful for multiple Bar instances
19
- */
20
- export let x: Accessor = $xContext;
21
-
22
- /**
23
- * Override `y` from context. Useful for multiple Bar instances
24
- */
25
- export let y: Accessor = $yContext;
26
-
27
- /**
28
- * Override `x1` from context. Useful for multiple Bar instances
29
- */
30
- export let x1: Accessor = undefined;
31
-
32
- /**
33
- * Override `y1` from context. Useful for multiple Bar instances
34
- */
35
- export let y1: Accessor = undefined;
36
-
37
- export let fill: string | undefined = undefined;
38
- export let fillOpacity: number | undefined = undefined;
39
- export let stroke = 'black';
40
- export let strokeWidth = 0;
41
- export let opacity: number | undefined = undefined;
42
- export let radius = 0;
43
-
44
- /** Control which corners are rounded with radius. Uses <path> instead of <rect> when not set to `all` */
45
- export let rounded:
46
- | 'all'
47
- | 'none'
48
- | 'edge'
49
- | 'top'
50
- | 'bottom'
51
- | 'left'
52
- | 'right'
53
- | 'top-left'
54
- | 'top-right'
55
- | 'bottom-left'
56
- | 'bottom-right' = 'all';
57
-
58
- export let insets: Insets | undefined = undefined;
59
-
60
- export let onclick: ((e: MouseEvent) => void) | undefined = undefined;
61
- export let onpointerenter: ((e: PointerEvent) => void) | undefined = undefined;
62
- export let onpointermove: ((e: PointerEvent) => void) | undefined = undefined;
63
- export let onpointerleave: ((e: PointerEvent) => void) | undefined = undefined;
64
-
65
- export let spring: ComponentProps<Rect>['spring'] = undefined;
66
- export let tweened: ComponentProps<Rect>['tweened'] = undefined;
67
-
68
- $: if (stroke === null || stroke === undefined) stroke = 'black';
69
-
70
- $: getDimensions = createDimensionGetter(chartContext(), {
71
- x,
72
- y,
86
+ import { getChartContext } from './Chart.svelte';
87
+ import type { CommonStyleProps, Without } from '../utils/types.js';
88
+ import { extractLayerProps } from '../utils/attributes.js';
89
+ import { extractTweenConfig, type MotionProp } from '../utils/motion.svelte.js';
90
+ import Arc from './Arc.svelte';
91
+
92
+ const ctx = getChartContext();
93
+
94
+ let {
95
+ data,
96
+ x = ctx.x,
97
+ y = ctx.y,
73
98
  x1,
74
99
  y1,
100
+ fill,
101
+ fillOpacity,
102
+ stroke: strokeProp = 'black',
103
+ strokeWidth = 0,
104
+ opacity,
105
+ radius = 0,
106
+ rounded: roundedProp = 'all',
107
+ motion,
75
108
  insets,
76
- });
77
- $: dimensions = $getDimensions(bar) ?? { x: 0, y: 0, width: 0, height: 0 };
78
-
79
- $: isVertical = isScaleBand($xScale);
80
- $: valueAccessor = accessor(isVertical ? y : x);
81
- $: value = valueAccessor(bar);
82
- $: resolvedValue = Array.isArray(value) ? greatestAbs(value) : value;
109
+ initialX,
110
+ initialY,
111
+ initialHeight,
112
+ initialWidth,
113
+ ...restProps
114
+ }: BarProps = $props();
115
+
116
+ const stroke = $derived(strokeProp === null || strokeProp === undefined ? 'black' : strokeProp);
117
+
118
+ const getDimensions = $derived(
119
+ createDimensionGetter(ctx, () => ({
120
+ x,
121
+ y,
122
+ x1,
123
+ y1,
124
+ insets,
125
+ }))
126
+ );
127
+
128
+ const dimensions = $derived(getDimensions(data) ?? { x: 0, y: 0, width: 0, height: 0 });
129
+
130
+ const isVertical = $derived(isScaleBand(ctx.xScale));
131
+ const valueAccessor = $derived(accessor(isVertical ? y : x));
132
+ const value = $derived(valueAccessor(data));
133
+ const resolvedValue = $derived(Array.isArray(value) ? greatestAbs(value) : value);
83
134
 
84
135
  // Resolved `rounded="edge"` based on orientation and value
85
- $: _rounded =
86
- rounded === 'edge'
136
+ const rounded = $derived(
137
+ roundedProp === 'edge'
87
138
  ? isVertical
88
139
  ? resolvedValue >= 0
89
140
  ? 'top'
@@ -91,18 +142,18 @@
91
142
  : resolvedValue >= 0
92
143
  ? 'right'
93
144
  : 'left'
94
- : rounded;
95
-
96
- $: topLeft = ['all', 'top', 'left', 'top-left'].includes(_rounded);
97
- $: topRight = ['all', 'top', 'right', 'top-right'].includes(_rounded);
98
- $: bottomLeft = ['all', 'bottom', 'left', 'bottom-left'].includes(_rounded);
99
- $: bottomRight = ['all', 'bottom', 'right', 'bottom-right'].includes(_rounded);
100
-
101
- $: width = dimensions.width;
102
- $: height = dimensions.height;
103
- $: diameter = 2 * radius;
104
-
105
- $: pathData = `M${dimensions.x + radius},${dimensions.y} h${width - diameter}
145
+ : roundedProp
146
+ );
147
+
148
+ const topLeft = $derived(['all', 'top', 'left', 'top-left'].includes(rounded));
149
+ const topRight = $derived(['all', 'top', 'right', 'top-right'].includes(rounded));
150
+ const bottomLeft = $derived(['all', 'bottom', 'left', 'bottom-left'].includes(rounded));
151
+ const bottomRight = $derived(['all', 'bottom', 'right', 'bottom-right'].includes(rounded));
152
+ const width = $derived(dimensions.width);
153
+ const height = $derived(dimensions.height);
154
+ const diameter = $derived(2 * radius);
155
+ const pathData = $derived(
156
+ `M${dimensions.x + radius},${dimensions.y} h${width - diameter}
106
157
  ${topRight ? `a${radius},${radius} 0 0 1 ${radius},${radius}` : `h${radius}v${radius}`}
107
158
  v${height - diameter}
108
159
  ${bottomRight ? `a${radius},${radius} 0 0 1 ${-radius},${radius}` : `v${radius}h${-radius}`}
@@ -111,29 +162,43 @@
111
162
  v${diameter - height}
112
163
  ${topLeft ? `a${radius},${radius} 0 0 1 ${radius},${-radius}` : `v${-radius}h${radius}`}
113
164
  z`
114
- .split('\n')
115
- .join('');
165
+ .split('\n')
166
+ .join('')
167
+ );
116
168
  </script>
117
169
 
118
- {#if _rounded === 'all' || _rounded === 'none' || radius === 0}
170
+ {#if ctx.radial}
171
+ <Arc
172
+ innerRadius={dimensions.y}
173
+ outerRadius={dimensions.y + dimensions.height}
174
+ startAngle={dimensions.x}
175
+ endAngle={dimensions.x + dimensions.width}
176
+ {fill}
177
+ {fillOpacity}
178
+ {stroke}
179
+ {strokeWidth}
180
+ {opacity}
181
+ cornerRadius={radius}
182
+ {...extractLayerProps(restProps, 'bar')}
183
+ />
184
+ {:else if rounded === 'all' || rounded === 'none' || radius === 0}
119
185
  <Rect
120
186
  {fill}
121
187
  {fillOpacity}
122
188
  {stroke}
123
189
  {strokeWidth}
124
190
  {opacity}
125
- rx={_rounded === 'none' ? 0 : radius}
126
- {spring}
127
- {tweened}
128
- {onclick}
129
- {onpointerenter}
130
- {onpointermove}
131
- {onpointerleave}
132
- on:touchmove
191
+ rx={rounded === 'none' ? 0 : radius}
192
+ {motion}
193
+ {initialX}
194
+ {initialY}
195
+ {initialHeight}
196
+ {initialWidth}
133
197
  {...dimensions}
134
- {...$$restProps}
198
+ {...extractLayerProps(restProps, 'bar')}
135
199
  />
136
200
  {:else}
201
+ {@const tweenMotion = extractTweenConfig(motion)}
137
202
  <Spline
138
203
  {pathData}
139
204
  {fill}
@@ -141,13 +206,7 @@
141
206
  {stroke}
142
207
  {strokeWidth}
143
208
  {opacity}
144
- {spring}
145
- {tweened}
146
- {onclick}
147
- {onpointerenter}
148
- {onpointermove}
149
- {onpointerleave}
150
- on:touchmove
151
- {...$$restProps}
209
+ motion={tweenMotion}
210
+ {...extractLayerProps(restProps, 'bar')}
152
211
  />
153
212
  {/if}
@@ -0,0 +1,51 @@
1
+ import { type Insets } from '../utils/rect.svelte.js';
2
+ export type BarPropsWithoutHTML = {
3
+ /**
4
+ * data to render the bar from
5
+ */
6
+ data: Object;
7
+ /**
8
+ * Override `x` from context. Useful for multiple Bar instances
9
+ *
10
+ * @default ctx.x
11
+ */
12
+ x?: Accessor;
13
+ /**
14
+ * Override `y` from context. Useful for multiple Bar instances
15
+ *
16
+ * @default ctx.y
17
+ */
18
+ y?: Accessor;
19
+ /**
20
+ * Override `x1` from context. Useful for multiple Bar instances
21
+ *
22
+ * @default ctx.x1
23
+ */
24
+ x1?: Accessor;
25
+ /**
26
+ * Override `y1` from context. Useful for multiple Bar instances
27
+ *
28
+ * @default ctx.y1
29
+ */
30
+ y1?: Accessor;
31
+ radius?: number;
32
+ insets?: Insets;
33
+ initialX?: number;
34
+ initialY?: number;
35
+ initialHeight?: number;
36
+ initialWidth?: number;
37
+ /**
38
+ * Control which corners are rounded with radius. Uses <path> instead of <rect> when not set
39
+ * to `all`
40
+ */
41
+ rounded?: 'all' | 'none' | 'edge' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
42
+ motion?: MotionProp<'x' | 'y' | 'width' | 'height'>;
43
+ } & CommonStyleProps;
44
+ export type BarProps = BarPropsWithoutHTML & Without<Omit<SVGAttributes<SVGElement>, 'width' | 'height' | 'x' | 'y' | 'offset'>, BarPropsWithoutHTML>;
45
+ import type { SVGAttributes } from 'svelte/elements';
46
+ import { type Accessor } from '../utils/common.js';
47
+ import type { CommonStyleProps, Without } from '../utils/types.js';
48
+ import { type MotionProp } from '../utils/motion.svelte.js';
49
+ declare const Bar: import("svelte").Component<BarProps, {}, "">;
50
+ type Bar = ReturnType<typeof Bar>;
51
+ export default Bar;
@@ -1,82 +1,71 @@
1
- <script lang="ts">
2
- import { type ComponentProps } from 'svelte';
3
-
4
- import { chartContext } from './ChartContext.svelte';
5
- import Bar from './Bar.svelte';
6
- import Rect from './Rect.svelte';
7
- import { chartDataArray, type Accessor } from '../utils/common.js';
8
- import type { Insets } from '../utils/rect.js';
9
-
10
- const { data: contextData, cGet, config } = chartContext();
1
+ <script lang="ts" module>
2
+ export type BarsPropsWithoutHTML = {
3
+ /**
4
+ * Override the data from the context.
5
+ */
6
+ data?: any;
11
7
 
12
- /**
13
- * Override `data` from context. Useful for multiple Bar instances
14
- */
15
- export let data: any = undefined;
8
+ /**
9
+ * Define unique value for {#each} `(key)` expressions
10
+ * to improve transitions.
11
+ *
12
+ * @default (d, index) => index
13
+ */
14
+ key?: (d: any, index: number) => any;
16
15
 
17
- /**
18
- * Override `x` from context. Useful for multiple Bar instances
19
- */
20
- export let x: Accessor = undefined;
16
+ /**
17
+ * Event dispatched when an individual bar is clicked.
18
+ */
19
+ onBarClick?: (e: MouseEvent, detail: { data: any }) => void;
21
20
 
22
- /**
23
- * Override `y` from context. Useful for multiple Bar instances
24
- */
25
- export let y: Accessor = undefined;
21
+ children?: Snippet;
22
+ // TODO: investigate
23
+ [key: string]: any;
24
+ } & Omit<BarPropsWithoutHTML, 'data' | 'children'>;
26
25
 
27
- /**
28
- * Override `x1` from context. Useful for multiple Bar instances
29
- */
30
- export let x1: Accessor = undefined;
31
-
32
- /**
33
- * Override `y1` from context. Useful for multiple Bar instances
34
- */
35
- export let y1: Accessor = undefined;
36
-
37
- export let stroke = 'black';
38
- export let strokeWidth = 0;
39
- export let radius = 0;
40
- export let fill: string | undefined = undefined;
41
- export let fillOpacity: number | undefined = undefined;
42
- export let opacity: number | undefined = undefined;
26
+ export type BarsProps = BarsPropsWithoutHTML & Omit<BarProps, 'data'>;
27
+ </script>
43
28
 
44
- /** Inset the rect for amount of padding. Useful with multiple bars (bullet, overlap, etc) */
45
- export let insets: Insets | undefined = undefined;
29
+ <script lang="ts">
30
+ import type { Snippet } from 'svelte';
46
31
 
47
- /** Define unique value for {#each} `(key)` expressions to improve transitions. `index` position used by default */
48
- export let key: (d: any, index: number) => any = (d, i) => i;
32
+ import Bar, { type BarProps, type BarPropsWithoutHTML } from './Bar.svelte';
33
+ import Group from './Group.svelte';
49
34
 
50
- export let spring: ComponentProps<Rect>['spring'] = undefined;
51
- export let tweened: ComponentProps<Rect>['tweened'] = undefined;
35
+ import { chartDataArray } from '../utils/common.js';
36
+ import { getChartContext } from './Chart.svelte';
37
+ import { extractLayerProps, layerClass } from '../utils/attributes.js';
52
38
 
53
- /** Event dispatched when individual Bar is clicked */
54
- export let onbarclick: (e: MouseEvent, detail: { data: any }) => void = () => {};
39
+ let {
40
+ fill,
41
+ key = (_, i) => i,
42
+ data: dataProp,
43
+ onBarClick = () => {},
44
+ children,
45
+ radius = 0,
46
+ strokeWidth = 0,
47
+ stroke = 'black',
48
+ ...restProps
49
+ }: BarsProps = $props();
55
50
 
56
- $: _data = chartDataArray(data ?? $contextData);
51
+ const ctx = getChartContext();
52
+ const data = $derived(chartDataArray(dataProp ?? ctx.data));
57
53
  </script>
58
54
 
59
- <g class="Bars">
60
- <slot>
61
- {#each _data as d, i (key(d, i))}
55
+ <Group class={layerClass('bars')}>
56
+ {#if children}
57
+ {@render children()}
58
+ {:else}
59
+ {#each data as d, i (key(d, i))}
62
60
  <Bar
63
- bar={d}
64
- {x}
65
- {y}
66
- {x1}
67
- {y1}
68
- fill={fill ?? ($config.c ? $cGet(d) : null)}
69
- {fillOpacity}
70
- {stroke}
71
- {strokeWidth}
72
- {opacity}
61
+ data={d}
73
62
  {radius}
74
- {insets}
75
- {spring}
76
- {tweened}
77
- onclick={(e) => onbarclick(e, { data: d })}
78
- {...$$restProps}
63
+ {strokeWidth}
64
+ {stroke}
65
+ fill={fill ?? (ctx.config.c ? ctx.cGet(d) : null)}
66
+ onclick={(e) => onBarClick(e, { data: d })}
67
+ {...extractLayerProps(restProps, 'bars-bar')}
79
68
  />
80
69
  {/each}
81
- </slot>
82
- </g>
70
+ {/if}
71
+ </Group>
@@ -0,0 +1,27 @@
1
+ export type BarsPropsWithoutHTML = {
2
+ /**
3
+ * Override the data from the context.
4
+ */
5
+ data?: any;
6
+ /**
7
+ * Define unique value for {#each} `(key)` expressions
8
+ * to improve transitions.
9
+ *
10
+ * @default (d, index) => index
11
+ */
12
+ key?: (d: any, index: number) => any;
13
+ /**
14
+ * Event dispatched when an individual bar is clicked.
15
+ */
16
+ onBarClick?: (e: MouseEvent, detail: {
17
+ data: any;
18
+ }) => void;
19
+ children?: Snippet;
20
+ [key: string]: any;
21
+ } & Omit<BarPropsWithoutHTML, 'data' | 'children'>;
22
+ export type BarsProps = BarsPropsWithoutHTML & Omit<BarProps, 'data'>;
23
+ import type { Snippet } from 'svelte';
24
+ import { type BarProps, type BarPropsWithoutHTML } from './Bar.svelte';
25
+ declare const Bars: import("svelte").Component<BarsProps, {}, "">;
26
+ type Bars = ReturnType<typeof Bars>;
27
+ export default Bars;