layerchart 2.0.0-next.0 → 2.0.0-next.2

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 +155 -0
  4. package/dist/components/AnnotationLine.svelte.d.ts +28 -0
  5. package/dist/components/AnnotationPoint.svelte +121 -0
  6. package/dist/components/AnnotationPoint.svelte.d.ts +32 -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 +287 -174
  14. package/dist/components/Axis.svelte.d.ts +116 -0
  15. package/dist/components/Bar.svelte +163 -107
  16. package/dist/components/Bar.svelte.d.ts +48 -0
  17. package/dist/components/Bars.svelte +54 -68
  18. package/dist/components/Bars.svelte.d.ts +27 -0
  19. package/dist/components/Blur.svelte +31 -7
  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 +60 -15
  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 +47 -12
  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 +28 -13
  66. package/dist/components/Graticule.svelte.d.ts +11 -52
  67. package/dist/components/Grid.svelte +226 -114
  68. package/dist/components/Grid.svelte.d.ts +70 -0
  69. package/dist/components/Group.svelte +132 -105
  70. package/dist/components/Group.svelte.d.ts +53 -0
  71. package/dist/components/Highlight.svelte +409 -307
  72. package/dist/components/Highlight.svelte.d.ts +107 -0
  73. package/dist/components/Hull.svelte +96 -45
  74. package/dist/components/Hull.svelte.d.ts +40 -30
  75. package/dist/components/Labels.svelte +125 -46
  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 +105 -62
  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 +106 -75
  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 +25 -24
  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,4 +1,9 @@
1
- <script lang="ts" context="module">
1
+ <script lang="ts" module>
2
+ import { type Snippet } from 'svelte';
3
+ import dagre, { type Edge, type EdgeConfig, type GraphEdge } from '@dagrejs/dagre';
4
+
5
+ import { dagreGraph } from '../utils/graph/dagre.js';
6
+
2
7
  export type DagreGraphData = {
3
8
  nodes: Array<{ id: string; parent?: string; label?: string | dagre.Label }>;
4
9
  edges: Array<{ source: string; target: string; label?: string }>;
@@ -24,129 +29,213 @@
24
29
  center: 'c',
25
30
  right: 'r',
26
31
  };
32
+
33
+ export type DagreProps = {
34
+ /**
35
+ * Data of nodes and edges to build graph
36
+ */
37
+ data: DagreGraphData;
38
+
39
+ /**
40
+ * Function to extract nodes from data
41
+ * @default (d: any) => d.nodes
42
+ */
43
+ nodes?: (d: any) => any;
44
+
45
+ /**
46
+ * Function to extract node ID from node data
47
+ * @default (d: any) => d.id
48
+ */
49
+ nodeId?: (d: any) => any;
50
+
51
+ /**
52
+ * Function to extract edges from data
53
+ * @default (d: any) => d.edges
54
+ */
55
+ edges?: (d: any) => any;
56
+
57
+ /**
58
+ * Set graph as directed (true, default) or undirected (false),
59
+ * which does not treat the order of nodes in an edge as significant
60
+ * @default true
61
+ */
62
+ directed?: boolean;
63
+
64
+ /**
65
+ * Allow a graph to have multiple edges between the same pair of nodes
66
+ * @default false
67
+ */
68
+ multigraph?: boolean;
69
+
70
+ /**
71
+ * Allow a graph to have compound nodes - nodes which can be the
72
+ * `parent` of other nodes
73
+ * @default false
74
+ */
75
+ compound?: boolean;
76
+
77
+ /**
78
+ * Type of algorithm to assigns a rank to each node in the input graph
79
+ * @default 'network-simplex'
80
+ */
81
+ ranker?: 'network-simplex' | 'tight-tree' | 'longest-path';
82
+
83
+ /**
84
+ * Direction for rank nodes
85
+ * @default 'top-bottom'
86
+ */
87
+ direction?: keyof typeof RankDir;
88
+
89
+ /**
90
+ * Alignment for rank nodes
91
+ * @default undefined
92
+ */
93
+ align?: keyof typeof Align | undefined;
94
+
95
+ /**
96
+ * Number of pixels between each rank in the layout
97
+ * @default 50
98
+ */
99
+ rankSeparation?: number;
100
+
101
+ /**
102
+ * Number of pixels that separate nodes horizontally in the layout
103
+ * @default 50
104
+ */
105
+ nodeSeparation?: number;
106
+
107
+ /**
108
+ * Number of pixels that separate edges horizontally in the layout
109
+ * @default 10
110
+ */
111
+ edgeSeparation?: number;
112
+
113
+ /**
114
+ * Default node width if not defined on node
115
+ * @default 100
116
+ */
117
+ nodeWidth?: number;
118
+
119
+ /**
120
+ * Default node height if not defined on node
121
+ * @default 50
122
+ */
123
+ nodeHeight?: number;
124
+
125
+ /**
126
+ * Default link label width if not defined on edge
127
+ * @default 100
128
+ */
129
+ edgeLabelWidth?: number;
130
+
131
+ /**
132
+ * Default edge label height if not defined on edge
133
+ * @default 20
134
+ */
135
+ edgeLabelHeight?: number;
136
+
137
+ /**
138
+ * Default edge label position
139
+ * @default 'center'
140
+ */
141
+ edgeLabelPosition?: keyof typeof EdgeLabelPosition;
142
+
143
+ /**
144
+ * Default pixels to move the label away from the edge if not defined on edge
145
+ * Applies only when labelpos is l or r
146
+ * @default 10
147
+ */
148
+ edgeLabelOffset?: number;
149
+
150
+ /**
151
+ * Filter nodes
152
+ * @default () => true
153
+ */
154
+ filterNodes?: (nodeId: string, graph: dagre.graphlib.Graph) => boolean;
155
+
156
+ /**
157
+ * Exposed to access to Dagre Graph instance via `bind:graph`
158
+ */
159
+ graph?: dagre.graphlib.Graph;
160
+
161
+ children?: Snippet<
162
+ [
163
+ {
164
+ nodes: Array<dagre.Node>;
165
+ edges: Array<Edge & EdgeConfig & GraphEdge>;
166
+ graph: dagre.graphlib.Graph;
167
+ },
168
+ ]
169
+ >;
170
+ };
27
171
  </script>
28
172
 
29
173
  <script lang="ts">
30
- import dagre, { type Edge, type EdgeConfig, type GraphEdge } from '@dagrejs/dagre';
31
-
32
- /** Data of nodes and edges to build graph */
33
- export let data: DagreGraphData;
34
-
35
- export let nodes = (d: any) => d.nodes;
36
- export let nodeId = (d: any) => d.id;
37
- export let edges = (d: any) => d.edges;
38
-
39
- /** Set graph as directed (true, default) or undirected (false), which does not treat the order of nodes in an edge as significant. */
40
- export let directed = true;
41
-
42
- /** Allow a graph to have multiple edges between the same pair of nodes */
43
- export let multigraph = false;
44
-
45
- /** Allow a graph to have compound nodes - nodes which can be the `parent` of other nodes */
46
- export let compound = false;
47
-
48
- /** Type of algorithm to assigns a rank to each node in the input graph */
49
- export let ranker: 'network-simplex' | 'tight-tree' | 'longest-path' = 'network-simplex';
50
-
51
- /** Direction for rank nodes */
52
- export let direction: keyof typeof RankDir = 'top-bottom';
53
-
54
- /** Alignment for rank nodes */
55
- export let align: keyof typeof Align | undefined = undefined;
56
-
57
- /** Number of pixels between each rank in the layout */
58
- export let rankSeparation = 50;
59
-
60
- /** Number of pixels that separate nodes horizontally in the layout */
61
- export let nodeSeparation = 50;
62
-
63
- /** Number of pixels that separate edges horizontally in the layout */
64
- export let edgeSeparation = 10;
65
-
66
- /** Default node width if not defined on node */
67
- export let nodeWidth = 100;
68
-
69
- /** Default node height if not defined on node */
70
- export let nodeHeight = 50;
71
-
72
- /** Default link label width if not defined on edge */
73
- export let edgeLabelWidth = 100;
74
-
75
- /** Default edge label height if not defined on edge */
76
- export let edgeLabelHeight = 20;
77
-
78
- /** Default edge label height if not defined on edge */
79
- export let edgeLabelPosition: keyof typeof EdgeLabelPosition = 'center';
80
-
81
- /** Default pixels to move the label away from the edge if not defined on edge. Applies only when labelpos is l or r.*/
82
- export let edgeLabelOffset = 10;
83
-
84
- /** Filter nodes */
85
- export let filterNodes: (nodeId: string, graph: dagre.graphlib.Graph) => boolean = () => true;
86
-
87
- /** Exposed to access to Dagre Graph instance via `bind:graph` */
88
- export let graph: dagre.graphlib.Graph | undefined = undefined;
89
- $: {
90
- let g = new dagre.graphlib.Graph({ directed, multigraph, compound });
91
-
92
- g.setGraph({
93
- ranker: ranker,
94
- rankdir: RankDir[direction],
95
- align: align ? Align[align] : undefined,
96
- ranksep: rankSeparation,
97
- nodesep: nodeSeparation,
98
- edgesep: edgeSeparation,
99
- });
100
-
101
- g.setDefaultEdgeLabel(() => {
102
- return {};
103
- });
104
-
105
- nodes(data).forEach((n: any) => {
106
- const id = nodeId(n);
107
-
108
- g.setNode(nodeId(n), {
109
- id,
110
- label: typeof n.label === 'string' ? n.label : id,
111
- width: nodeWidth,
112
- height: nodeHeight,
113
- ...(typeof n.label === 'object' ? n.label : null),
114
- });
115
-
116
- if (n.parent) {
117
- g.setParent(id, n.parent);
118
- }
119
- });
120
-
121
- edges(data).forEach((e: any) => {
122
- const { source, target, label, ...rest } = e;
123
- g.setEdge(
124
- e.source,
125
- e.target,
126
- label
127
- ? {
128
- label: label,
129
- labelpos: EdgeLabelPosition[edgeLabelPosition],
130
- labeloffset: edgeLabelOffset,
131
- width: edgeLabelWidth,
132
- height: edgeLabelHeight,
133
- ...rest,
134
- }
135
- : {}
136
- );
137
- });
138
-
139
- g = filterNodes ? g.filterNodes((nodeId) => filterNodes(nodeId, graph!)) : graph!;
140
-
141
- dagre.layout(g);
142
-
143
- graph = g;
144
- }
145
-
146
- $: graphNodes = graph!.nodes().map((id) => graph!.node(id));
147
- $: graphEdges = graph!.edges().map((edge) => ({ ...edge, ...graph!.edge(edge) })) as Array<
148
- Edge & EdgeConfig & GraphEdge // `EdgeConfig` is excluded when inferred from usage
149
- >;
174
+ let {
175
+ data,
176
+ nodes = (d: any) => d.nodes,
177
+ nodeId = (d: any) => d.id,
178
+ edges = (d: any) => d.edges,
179
+ directed = true,
180
+ multigraph = false,
181
+ compound = false,
182
+ ranker = 'network-simplex',
183
+ direction = 'top-bottom',
184
+ align,
185
+ rankSeparation = 50,
186
+ nodeSeparation = 50,
187
+ edgeSeparation = 10,
188
+ nodeWidth = 100,
189
+ nodeHeight = 50,
190
+ edgeLabelWidth = 100,
191
+ edgeLabelHeight = 20,
192
+ edgeLabelPosition = 'center',
193
+ edgeLabelOffset = 10,
194
+ filterNodes = () => true,
195
+ graph: graphProp = $bindable(),
196
+ children,
197
+ }: DagreProps = $props();
198
+
199
+ const graph = $derived(
200
+ dagreGraph(data, {
201
+ nodes,
202
+ nodeId,
203
+ edges,
204
+ directed,
205
+ multigraph,
206
+ compound,
207
+ ranker,
208
+ direction,
209
+ align,
210
+ rankSeparation,
211
+ nodeSeparation,
212
+ edgeSeparation,
213
+ nodeWidth,
214
+ nodeHeight,
215
+ edgeLabelWidth,
216
+ edgeLabelHeight,
217
+ edgeLabelPosition,
218
+ edgeLabelOffset,
219
+ filterNodes,
220
+ })
221
+ );
222
+
223
+ $effect.pre(() => {
224
+ graphProp = graph;
225
+ });
226
+
227
+ const graphNodes = $derived.by(() => {
228
+ if (typeof document === 'undefined' || !graph) return [];
229
+ return graph!.nodes().map((id) => graph!.node(id));
230
+ });
231
+
232
+ const graphEdges = $derived.by(() => {
233
+ if (typeof document === 'undefined' || !graph) return [];
234
+ return graph!.edges().map((edge) => ({ ...edge, ...graph!.edge(edge) })) as Array<
235
+ Edge & EdgeConfig & GraphEdge // `EdgeConfig` is excluded when inferred from usage
236
+ >;
237
+ });
150
238
  </script>
151
239
 
152
- <slot nodes={graphNodes} edges={graphEdges} {graph} />
240
+ <!-- TODO: are we sure we want to force these types? -->
241
+ {@render children?.({ nodes: graphNodes, edges: graphEdges, graph: graph! })}
@@ -1,4 +1,5 @@
1
- import { SvelteComponentTyped } from "svelte";
1
+ import { type Snippet } from 'svelte';
2
+ import dagre, { type Edge, type EdgeConfig, type GraphEdge } from '@dagrejs/dagre';
2
3
  export type DagreGraphData = {
3
4
  nodes: Array<{
4
5
  id: string;
@@ -29,59 +30,121 @@ export declare const EdgeLabelPosition: {
29
30
  center: string;
30
31
  right: string;
31
32
  };
32
- import dagre from '@dagrejs/dagre';
33
- declare const __propDef: {
34
- props: {
35
- /** Data of nodes and edges to build graph */ data: DagreGraphData;
36
- nodes?: (d: any) => any;
37
- nodeId?: (d: any) => any;
38
- edges?: (d: any) => any;
39
- /** Set graph as directed (true, default) or undirected (false), which does not treat the order of nodes in an edge as significant. */ directed?: boolean;
40
- /** Allow a graph to have multiple edges between the same pair of nodes */ multigraph?: boolean;
41
- /** Allow a graph to have compound nodes - nodes which can be the `parent` of other nodes */ compound?: boolean;
42
- /** Type of algorithm to assigns a rank to each node in the input graph */ ranker?: "network-simplex" | "tight-tree" | "longest-path";
43
- /** Direction for rank nodes */ direction?: keyof typeof RankDir;
44
- /** Alignment for rank nodes */ align?: keyof typeof Align | undefined;
45
- /** Number of pixels between each rank in the layout */ rankSeparation?: number;
46
- /** Number of pixels that separate nodes horizontally in the layout */ nodeSeparation?: number;
47
- /** Number of pixels that separate edges horizontally in the layout */ edgeSeparation?: number;
48
- /** Default node width if not defined on node */ nodeWidth?: number;
49
- /** Default node height if not defined on node */ nodeHeight?: number;
50
- /** Default link label width if not defined on edge */ edgeLabelWidth?: number;
51
- /** Default edge label height if not defined on edge */ edgeLabelHeight?: number;
52
- /** Default edge label height if not defined on edge */ edgeLabelPosition?: keyof typeof EdgeLabelPosition;
53
- /** Default pixels to move the label away from the edge if not defined on edge. Applies only when labelpos is l or r.*/ edgeLabelOffset?: number;
54
- /** Filter nodes */ filterNodes?: (nodeId: string, graph: dagre.graphlib.Graph) => boolean;
55
- /** Exposed to access to Dagre Graph instance via `bind:graph` */ graph?: dagre.graphlib.Graph | undefined;
56
- };
57
- events: {
58
- [evt: string]: CustomEvent<any>;
59
- };
60
- slots: {
61
- default: {
62
- nodes: {
63
- x: number;
64
- y: number;
65
- width: number;
66
- height: number;
67
- class?: string | undefined;
68
- label?: string | undefined;
69
- padding?: number | undefined;
70
- paddingX?: number | undefined;
71
- paddingY?: number | undefined;
72
- rank?: number | undefined;
73
- rx?: number | undefined;
74
- ry?: number | undefined;
75
- shape?: string | undefined;
76
- }[];
77
- edges: (dagre.Edge & dagre.EdgeConfig & dagre.GraphEdge)[];
78
- graph: dagre.graphlib.Graph<{}> | undefined;
79
- };
80
- };
33
+ export type DagreProps = {
34
+ /**
35
+ * Data of nodes and edges to build graph
36
+ */
37
+ data: DagreGraphData;
38
+ /**
39
+ * Function to extract nodes from data
40
+ * @default (d: any) => d.nodes
41
+ */
42
+ nodes?: (d: any) => any;
43
+ /**
44
+ * Function to extract node ID from node data
45
+ * @default (d: any) => d.id
46
+ */
47
+ nodeId?: (d: any) => any;
48
+ /**
49
+ * Function to extract edges from data
50
+ * @default (d: any) => d.edges
51
+ */
52
+ edges?: (d: any) => any;
53
+ /**
54
+ * Set graph as directed (true, default) or undirected (false),
55
+ * which does not treat the order of nodes in an edge as significant
56
+ * @default true
57
+ */
58
+ directed?: boolean;
59
+ /**
60
+ * Allow a graph to have multiple edges between the same pair of nodes
61
+ * @default false
62
+ */
63
+ multigraph?: boolean;
64
+ /**
65
+ * Allow a graph to have compound nodes - nodes which can be the
66
+ * `parent` of other nodes
67
+ * @default false
68
+ */
69
+ compound?: boolean;
70
+ /**
71
+ * Type of algorithm to assigns a rank to each node in the input graph
72
+ * @default 'network-simplex'
73
+ */
74
+ ranker?: 'network-simplex' | 'tight-tree' | 'longest-path';
75
+ /**
76
+ * Direction for rank nodes
77
+ * @default 'top-bottom'
78
+ */
79
+ direction?: keyof typeof RankDir;
80
+ /**
81
+ * Alignment for rank nodes
82
+ * @default undefined
83
+ */
84
+ align?: keyof typeof Align | undefined;
85
+ /**
86
+ * Number of pixels between each rank in the layout
87
+ * @default 50
88
+ */
89
+ rankSeparation?: number;
90
+ /**
91
+ * Number of pixels that separate nodes horizontally in the layout
92
+ * @default 50
93
+ */
94
+ nodeSeparation?: number;
95
+ /**
96
+ * Number of pixels that separate edges horizontally in the layout
97
+ * @default 10
98
+ */
99
+ edgeSeparation?: number;
100
+ /**
101
+ * Default node width if not defined on node
102
+ * @default 100
103
+ */
104
+ nodeWidth?: number;
105
+ /**
106
+ * Default node height if not defined on node
107
+ * @default 50
108
+ */
109
+ nodeHeight?: number;
110
+ /**
111
+ * Default link label width if not defined on edge
112
+ * @default 100
113
+ */
114
+ edgeLabelWidth?: number;
115
+ /**
116
+ * Default edge label height if not defined on edge
117
+ * @default 20
118
+ */
119
+ edgeLabelHeight?: number;
120
+ /**
121
+ * Default edge label position
122
+ * @default 'center'
123
+ */
124
+ edgeLabelPosition?: keyof typeof EdgeLabelPosition;
125
+ /**
126
+ * Default pixels to move the label away from the edge if not defined on edge
127
+ * Applies only when labelpos is l or r
128
+ * @default 10
129
+ */
130
+ edgeLabelOffset?: number;
131
+ /**
132
+ * Filter nodes
133
+ * @default () => true
134
+ */
135
+ filterNodes?: (nodeId: string, graph: dagre.graphlib.Graph) => boolean;
136
+ /**
137
+ * Exposed to access to Dagre Graph instance via `bind:graph`
138
+ */
139
+ graph?: dagre.graphlib.Graph;
140
+ children?: Snippet<[
141
+ {
142
+ nodes: Array<dagre.Node>;
143
+ edges: Array<Edge & EdgeConfig & GraphEdge>;
144
+ graph: dagre.graphlib.Graph;
145
+ }
146
+ ]>;
81
147
  };
82
- export type DagreProps = typeof __propDef.props;
83
- export type DagreEvents = typeof __propDef.events;
84
- export type DagreSlots = typeof __propDef.slots;
85
- export default class Dagre extends SvelteComponentTyped<DagreProps, DagreEvents, DagreSlots> {
86
- }
87
- export {};
148
+ declare const Dagre: import("svelte").Component<DagreProps, {}, "graph">;
149
+ type Dagre = ReturnType<typeof Dagre>;
150
+ export default Dagre;