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,25 +1,23 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import GeoPath from './GeoPath.svelte';
3
- import type { ComponentProps } from 'svelte';
4
- declare const __propDef: {
5
- props: {
6
- [x: string]: any;
7
- radius?: number | undefined;
8
- center?: [number, number] | undefined;
9
- precision?: number | undefined;
10
- onclick?: ComponentProps<typeof GeoPath>["onclick"] | undefined;
11
- onpointerenter?: ComponentProps<typeof GeoPath>["onpointerenter"] | undefined;
12
- onpointermove?: ComponentProps<typeof GeoPath>["onpointermove"] | undefined;
13
- onpointerleave?: ComponentProps<typeof GeoPath>["onpointerleave"] | undefined;
14
- };
15
- events: {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {};
1
+ import { type GeoPathProps } from './GeoPath.svelte';
2
+ import type { Without } from '../utils/types.js';
3
+ export type GeoCirclePropsWithoutHTML = {
4
+ /**
5
+ * The radius of the circle in degrees.
6
+ * @default 90
7
+ */
8
+ radius?: number;
9
+ /**
10
+ * The center point of the circle in degrees ([longitude, latitude]).
11
+ * @default [0, 0]
12
+ */
13
+ center?: [number, number];
14
+ /**
15
+ * The precision of the circle in degrees.
16
+ * @default 6
17
+ */
18
+ precision?: number;
19
19
  };
20
- export type GeoCircleProps = typeof __propDef.props;
21
- export type GeoCircleEvents = typeof __propDef.events;
22
- export type GeoCircleSlots = typeof __propDef.slots;
23
- export default class GeoCircle extends SvelteComponentTyped<GeoCircleProps, GeoCircleEvents, GeoCircleSlots> {
24
- }
25
- export {};
20
+ export type GeoCircleProps = GeoCirclePropsWithoutHTML & Without<GeoPathProps, GeoCirclePropsWithoutHTML>;
21
+ declare const GeoCircle: import("svelte").Component<GeoCircleProps, {}, "">;
22
+ type GeoCircle = ReturnType<typeof GeoCircle>;
23
+ export default GeoCircle;
@@ -1,74 +1,113 @@
1
- <script lang="ts" context="module">
2
- import { getContext, setContext } from 'svelte';
3
- import { writable, type Writable } from 'svelte/store';
4
- import {
5
- type GeoIdentityTransform,
6
- type GeoPermissibleObjects,
7
- type GeoProjection,
8
- } from 'd3-geo';
9
-
10
- import { chartContext } from './ChartContext.svelte';
11
- import { transformContext } from './TransformContext.svelte';
12
-
13
- export const geoContextKey = Symbol();
14
-
15
- export type GeoContext = Writable<GeoProjection /* | GeoIdentityTransform*/>;
16
-
17
- export function geoContext() {
18
- return getContext<GeoContext>(geoContextKey);
1
+ <script lang="ts" module>
2
+ import { type GeoPermissibleObjects, type GeoProjection } from 'd3-geo';
3
+ import { getTransformContext } from './TransformContext.svelte';
4
+ import { Context } from 'runed';
5
+ import { getChartContext } from './Chart.svelte';
6
+ import type { Snippet } from 'svelte';
7
+
8
+ export type GeoContextValue = {
9
+ projection: GeoProjection | undefined;
10
+ };
11
+
12
+ /**
13
+ * Access or set the current GeoContext.
14
+ */
15
+ const _GeoContext = new Context<GeoContextValue>('GeoContext');
16
+
17
+ export function getGeoContext() {
18
+ return _GeoContext.getOr({ projection: undefined } as GeoContextValue);
19
19
  }
20
20
 
21
- function setGeoContext(geo: GeoContext) {
22
- setContext(geoContextKey, geo);
21
+ export function setGeoContext(geo: GeoContextValue) {
22
+ return _GeoContext.set(geo);
23
23
  }
24
+
25
+ export type GeoContextProps = {
26
+ /**
27
+ * A d3 projection function. Pass this in as an uncalled function, e.g.
28
+ * `projection={geoAlbersUsa}`.
29
+ */
30
+ projection?: () => GeoProjection;
31
+ fitGeojson?: GeoPermissibleObjects;
32
+ /**
33
+ * By default, the map fills to fit the $width and $height. If instead you want a
34
+ * fixed-aspect ratio, like for a server-side rendered map, set that here.
35
+ */
36
+ fixedAspectRatio?: number;
37
+ clipAngle?: number;
38
+ clipExtent?: [[number, number], [number, number]];
39
+ rotate?: {
40
+ /** Lambda (Center Meridian) */
41
+ yaw: number;
42
+ /** Phi */
43
+ pitch: number;
44
+ /** Gamma */
45
+ roll: number;
46
+ };
47
+ scale?: number;
48
+ translate?: [number, number];
49
+ center?: [number, number];
50
+ /**
51
+ * Apply TransformContext to the selected properties. Typically `translate` or `rotate` are
52
+ * mutually selected
53
+ */
54
+ applyTransform?: ('scale' | 'translate' | 'rotate')[];
55
+ reflectX?: boolean;
56
+ reflectY?: boolean;
57
+ /**
58
+ * Exposed to allow binding in Chart
59
+ *
60
+ * @bindable
61
+ */
62
+ geoContext?: GeoContextValue;
63
+
64
+ children: Snippet<[{ geoContext: GeoContextValue }]>;
65
+ };
24
66
  </script>
25
67
 
26
68
  <script lang="ts">
27
- const { width, height } = chartContext();
28
-
29
- /** @type {Function} projection - A d3 projection function. Pass this in as an uncalled function, e.g. `projection={geoAlbersUsa}`. */
30
- export let projection: (() => GeoProjection) /* | GeoIdentityTransform*/ | undefined = undefined;
31
-
32
- export let fitGeojson: GeoPermissibleObjects | undefined = undefined;
33
-
34
- /** By default, the map fills to fit the $width and $height. If instead you want a fixed-aspect ratio, like for a server-side rendered map, set that here. */
35
- export let fixedAspectRatio: number | undefined = undefined;
36
-
37
- export let clipAngle: number | undefined = undefined;
38
- export let clipExtent: [[number, number], [number, number]] | undefined = undefined;
39
- export let rotate:
40
- | {
41
- /** Lambda (Center Meridian) */
42
- yaw: number;
43
- /** Phi */
44
- pitch: number;
45
- /** Gamma */
46
- roll: number;
47
- }
48
- | undefined = undefined;
49
- export let scale: number | undefined = undefined;
50
- export let translate: [number, number] | undefined = undefined;
51
- export let center: [number, number] | undefined = undefined;
52
-
53
- /** Apply TransformContext to the selected properties. Typically `translate` or `rotate` are mutually selected */
54
- export let applyTransform: ('scale' | 'translate' | 'rotate')[] = [];
55
-
56
- export let reflectX: boolean | undefined = undefined;
57
- export let reflectY: boolean | undefined = undefined;
58
-
59
- /** Exposed to allow binding in Chart */
60
- export let geo = writable(projection?.());
61
- setGeoContext(geo);
62
-
63
- const { scale: transformScale, translate: transformTranslate } = transformContext();
64
-
65
- $: fitSizeRange = (fixedAspectRatio ? [100, 100 / fixedAspectRatio] : [$width, $height]) as [
66
- number,
67
- number,
68
- ];
69
-
70
- $: if (projection) {
71
- const _projection = projection();
69
+ let {
70
+ projection: projectionProp,
71
+ fitGeojson,
72
+ fixedAspectRatio,
73
+ clipAngle,
74
+ clipExtent,
75
+ rotate,
76
+ scale,
77
+ translate,
78
+ center,
79
+ applyTransform = [],
80
+ reflectX,
81
+ reflectY,
82
+ geoContext: geoContextProp = $bindable() as GeoContextValue,
83
+ children,
84
+ }: GeoContextProps = $props();
85
+
86
+ const ctx = getChartContext();
87
+ const transformCtx = getTransformContext();
88
+
89
+ let projection = $state<GeoProjection>();
90
+
91
+ const geoContext = {
92
+ get projection() {
93
+ return projection;
94
+ },
95
+ set projection(v: GeoProjection | undefined) {
96
+ projection = v;
97
+ },
98
+ };
99
+
100
+ geoContextProp = geoContext;
101
+
102
+ setGeoContext(geoContext);
103
+
104
+ const fitSizeRange = $derived(
105
+ fixedAspectRatio ? [100, 100 / fixedAspectRatio] : [ctx.width, ctx.height]
106
+ ) as [number, number];
107
+
108
+ $effect.pre(() => {
109
+ if (!projectionProp) return;
110
+ const _projection = projectionProp();
72
111
 
73
112
  if (fitGeojson && 'fitSize' in _projection) {
74
113
  _projection.fitSize(fitSizeRange, fitGeojson);
@@ -80,7 +119,7 @@
80
119
  }
81
120
 
82
121
  if (applyTransform.includes('scale')) {
83
- _projection.scale($transformScale);
122
+ _projection.scale(transformCtx.scale);
84
123
  }
85
124
  }
86
125
 
@@ -91,8 +130,8 @@
91
130
 
92
131
  if (applyTransform.includes('rotate')) {
93
132
  _projection.rotate([
94
- $transformTranslate.x, // yaw
95
- $transformTranslate.y, // pitch
133
+ transformCtx.translate.x, // yaw
134
+ transformCtx.translate.y, // pitch
96
135
  // TODO: `roll` from `transformContext`?
97
136
  ]);
98
137
  }
@@ -104,7 +143,7 @@
104
143
  }
105
144
 
106
145
  if (applyTransform.includes('translate')) {
107
- _projection.translate([$transformTranslate.x, $transformTranslate.y]);
146
+ _projection.translate([transformCtx.translate.x, transformCtx.translate.y]);
108
147
  }
109
148
  }
110
149
 
@@ -128,8 +167,10 @@
128
167
  _projection.clipExtent(clipExtent);
129
168
  }
130
169
 
131
- geo.set(_projection);
132
- }
170
+ geoContext.projection = _projection;
171
+ });
133
172
  </script>
134
173
 
135
- <slot projection={$geo} />
174
+ {@render children({
175
+ geoContext,
176
+ })}
@@ -1,44 +1,52 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import { type Writable } from 'svelte/store';
3
1
  import { type GeoPermissibleObjects, type GeoProjection } from 'd3-geo';
4
- export declare const geoContextKey: unique symbol;
5
- export type GeoContext = Writable<GeoProjection>;
6
- export declare function geoContext(): GeoContext;
7
- declare const __propDef: {
8
- props: {
9
- /** @type {Function} projection - A d3 projection function. Pass this in as an uncalled function, e.g. `projection={geoAlbersUsa}`. */ projection?: (() => GeoProjection) | undefined;
10
- fitGeojson?: GeoPermissibleObjects | undefined;
11
- /** By default, the map fills to fit the $width and $height. If instead you want a fixed-aspect ratio, like for a server-side rendered map, set that here. */ fixedAspectRatio?: number | undefined;
12
- clipAngle?: number | undefined;
13
- clipExtent?: [[number, number], [number, number]] | undefined;
14
- rotate?: {
15
- /** Lambda (Center Meridian) */
16
- yaw: number;
17
- /** Phi */
18
- pitch: number;
19
- /** Gamma */
20
- roll: number;
21
- } | undefined;
22
- scale?: number | undefined;
23
- translate?: [number, number] | undefined;
24
- center?: [number, number] | undefined;
25
- /** Apply TransformContext to the selected properties. Typically `translate` or `rotate` are mutually selected */ applyTransform?: ("scale" | "translate" | "rotate")[];
26
- reflectX?: boolean | undefined;
27
- reflectY?: boolean | undefined;
28
- /** Exposed to allow binding in Chart */ geo?: Writable<GeoProjection>;
29
- };
30
- events: {
31
- [evt: string]: CustomEvent<any>;
32
- };
33
- slots: {
34
- default: {
35
- projection: GeoProjection;
36
- };
2
+ import type { Snippet } from 'svelte';
3
+ export type GeoContextValue = {
4
+ projection: GeoProjection | undefined;
5
+ };
6
+ export declare function getGeoContext(): GeoContextValue;
7
+ export declare function setGeoContext(geo: GeoContextValue): GeoContextValue;
8
+ export type GeoContextProps = {
9
+ /**
10
+ * A d3 projection function. Pass this in as an uncalled function, e.g.
11
+ * `projection={geoAlbersUsa}`.
12
+ */
13
+ projection?: () => GeoProjection;
14
+ fitGeojson?: GeoPermissibleObjects;
15
+ /**
16
+ * By default, the map fills to fit the $width and $height. If instead you want a
17
+ * fixed-aspect ratio, like for a server-side rendered map, set that here.
18
+ */
19
+ fixedAspectRatio?: number;
20
+ clipAngle?: number;
21
+ clipExtent?: [[number, number], [number, number]];
22
+ rotate?: {
23
+ /** Lambda (Center Meridian) */
24
+ yaw: number;
25
+ /** Phi */
26
+ pitch: number;
27
+ /** Gamma */
28
+ roll: number;
37
29
  };
30
+ scale?: number;
31
+ translate?: [number, number];
32
+ center?: [number, number];
33
+ /**
34
+ * Apply TransformContext to the selected properties. Typically `translate` or `rotate` are
35
+ * mutually selected
36
+ */
37
+ applyTransform?: ('scale' | 'translate' | 'rotate')[];
38
+ reflectX?: boolean;
39
+ reflectY?: boolean;
40
+ /**
41
+ * Exposed to allow binding in Chart
42
+ *
43
+ * @bindable
44
+ */
45
+ geoContext?: GeoContextValue;
46
+ children: Snippet<[{
47
+ geoContext: GeoContextValue;
48
+ }]>;
38
49
  };
39
- export type GeoContextProps = typeof __propDef.props;
40
- export type GeoContextEvents = typeof __propDef.events;
41
- export type GeoContextSlots = typeof __propDef.slots;
42
- export default class GeoContext extends SvelteComponentTyped<GeoContextProps, GeoContextEvents, GeoContextSlots> {
43
- }
44
- export {};
50
+ declare const GeoContext: import("svelte").Component<GeoContextProps, {}, "geoContext">;
51
+ type GeoContext = ReturnType<typeof GeoContext>;
52
+ export default GeoContext;
@@ -1,25 +1,61 @@
1
+ <script lang="ts" module>
2
+ import type { Snippet } from 'svelte';
3
+ import type { Without } from '../utils/types.js';
4
+ import type { SVGAttributes } from 'svelte/elements';
5
+
6
+ export type GeoEdgeFadePropsWithoutHTML = {
7
+ link: { source: [number, number]; target: [number, number] };
8
+ /**
9
+ * A bindable reference to the underlying `<g>` element.
10
+ * @bindable
11
+ */
12
+ ref?: SVGGElement;
13
+
14
+ children?: Snippet;
15
+ };
16
+
17
+ export type GeoEdgeFadeProps = GeoEdgeFadePropsWithoutHTML &
18
+ Without<GroupProps, GeoEdgeFadePropsWithoutHTML>;
19
+ </script>
20
+
1
21
  <script lang="ts">
2
22
  import { scaleLinear } from 'd3-scale';
3
23
  import { geoDistance } from 'd3-geo';
4
24
 
5
- import { geoContext } from './GeoContext.svelte';
25
+ import { getGeoContext } from './GeoContext.svelte';
26
+ import Group, { type GroupProps } from './Group.svelte';
27
+ import { extractLayerProps } from '../utils/attributes.js';
28
+
29
+ let {
30
+ link,
31
+ ref: refProp = $bindable(),
32
+ children,
33
+ opacity: opacityProp,
34
+ ...restProps
35
+ }: GeoEdgeFadeProps = $props();
36
+
37
+ let ref = $state<SVGGElement>();
6
38
 
7
- export let link: { source: [number, number]; target: [number, number] };
39
+ $effect.pre(() => {
40
+ refProp = ref;
41
+ });
8
42
 
9
- const geo = geoContext();
43
+ const geoCtx = getGeoContext();
10
44
 
11
45
  const fade = scaleLinear().domain([-0.1, 0]).range([0, 0.1]);
12
46
  const clamper = scaleLinear().domain([0, 1]).range([0, 1]).clamp(true);
13
47
 
14
- $: center = $geo.invert?.($geo.translate()) ?? ([0, 0] as [number, number]);
15
- $: source = link.source;
16
- $: target = link.target;
17
- $: startDistance = 1.57 - geoDistance(source, center);
18
- $: endDistance = 1.57 - geoDistance(target, center);
19
- $: distance = startDistance < endDistance ? startDistance : endDistance;
20
- $: opacity = clamper(fade(distance));
48
+ const center = $derived(
49
+ geoCtx.projection?.invert?.(geoCtx.projection?.translate()) ?? ([0, 0] as [number, number])
50
+ );
51
+ const source = $derived(link.source);
52
+ const target = $derived(link.target);
53
+ const startDistance = $derived(1.57 - geoDistance(source, center));
54
+ const endDistance = $derived(1.57 - geoDistance(target, center));
55
+ const distance = $derived(startDistance < endDistance ? startDistance : endDistance);
56
+ const opacity = $derived(opacityProp ?? clamper(fade(distance)));
21
57
  </script>
22
58
 
23
- <g {opacity}>
24
- <slot />
25
- </g>
59
+ <Group {opacity} bind:ref {...extractLayerProps(restProps, 'geo-edge-fade')}>
60
+ {@render children?.()}
61
+ </Group>
@@ -1,21 +1,19 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- link: {
5
- source: [number, number];
6
- target: [number, number];
7
- };
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {
13
- default: {};
1
+ import type { Snippet } from 'svelte';
2
+ import type { Without } from '../utils/types.js';
3
+ export type GeoEdgeFadePropsWithoutHTML = {
4
+ link: {
5
+ source: [number, number];
6
+ target: [number, number];
14
7
  };
8
+ /**
9
+ * A bindable reference to the underlying `<g>` element.
10
+ * @bindable
11
+ */
12
+ ref?: SVGGElement;
13
+ children?: Snippet;
15
14
  };
16
- export type GeoEdgeFadeProps = typeof __propDef.props;
17
- export type GeoEdgeFadeEvents = typeof __propDef.events;
18
- export type GeoEdgeFadeSlots = typeof __propDef.slots;
19
- export default class GeoEdgeFade extends SvelteComponentTyped<GeoEdgeFadeProps, GeoEdgeFadeEvents, GeoEdgeFadeSlots> {
20
- }
21
- export {};
15
+ export type GeoEdgeFadeProps = GeoEdgeFadePropsWithoutHTML & Without<GroupProps, GeoEdgeFadePropsWithoutHTML>;
16
+ import { type GroupProps } from './Group.svelte';
17
+ declare const GeoEdgeFade: import("svelte").Component<GeoEdgeFadeProps, {}, "ref">;
18
+ type GeoEdgeFade = ReturnType<typeof GeoEdgeFade>;
19
+ export default GeoEdgeFade;