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.
- package/dist/actions/movable.d.ts +28 -0
- package/dist/actions/movable.js +91 -0
- package/dist/components/AnnotationLine.svelte +143 -0
- package/dist/components/AnnotationLine.svelte.d.ts +30 -0
- package/dist/components/AnnotationPoint.svelte +119 -0
- package/dist/components/AnnotationPoint.svelte.d.ts +34 -0
- package/dist/components/AnnotationRange.svelte +147 -0
- package/dist/components/AnnotationRange.svelte.d.ts +40 -0
- package/dist/components/Arc.svelte +344 -151
- package/dist/components/Arc.svelte.d.ts +138 -0
- package/dist/components/Area.svelte +165 -149
- package/dist/components/Area.svelte.d.ts +45 -0
- package/dist/components/Axis.svelte +283 -180
- package/dist/components/Axis.svelte.d.ts +117 -0
- package/dist/components/Bar.svelte +166 -107
- package/dist/components/Bar.svelte.d.ts +51 -0
- package/dist/components/Bars.svelte +56 -67
- package/dist/components/Bars.svelte.d.ts +27 -0
- package/dist/components/Blur.svelte +42 -12
- package/dist/components/Blur.svelte.d.ts +23 -21
- package/dist/components/Bounds.svelte +49 -19
- package/dist/components/Bounds.svelte.d.ts +24 -50
- package/dist/components/BrushContext.svelte +296 -168
- package/dist/components/BrushContext.svelte.d.ts +97 -65
- package/dist/components/Calendar.svelte +116 -59
- package/dist/components/Calendar.svelte.d.ts +50 -31
- package/dist/components/Chart.svelte +1289 -398
- package/dist/components/Chart.svelte.d.ts +535 -410
- package/dist/components/ChartClipPath.svelte +37 -15
- package/dist/components/ChartClipPath.svelte.d.ts +21 -19
- package/dist/components/Circle.svelte +124 -85
- package/dist/components/Circle.svelte.d.ts +52 -0
- package/dist/components/CircleClipPath.svelte +76 -16
- package/dist/components/CircleClipPath.svelte.d.ts +46 -0
- package/dist/components/ClipPath.svelte +71 -21
- package/dist/components/ClipPath.svelte.d.ts +40 -27
- package/dist/components/ColorRamp.svelte +75 -9
- package/dist/components/ColorRamp.svelte.d.ts +37 -19
- package/dist/components/ComputedStyles.svelte +17 -5
- package/dist/components/ComputedStyles.svelte.d.ts +11 -19
- package/dist/components/Connector.svelte +149 -0
- package/dist/components/Connector.svelte.d.ts +51 -0
- package/dist/components/Dagre.svelte +211 -122
- package/dist/components/Dagre.svelte.d.ts +119 -56
- package/dist/components/ForceSimulation.svelte +215 -90
- package/dist/components/ForceSimulation.svelte.d.ts +82 -35
- package/dist/components/Frame.svelte +33 -13
- package/dist/components/Frame.svelte.d.ts +13 -17
- package/dist/components/GeoCircle.svelte +29 -16
- package/dist/components/GeoCircle.svelte.d.ts +22 -24
- package/dist/components/GeoContext.svelte +113 -72
- package/dist/components/GeoContext.svelte.d.ts +49 -41
- package/dist/components/GeoEdgeFade.svelte +49 -13
- package/dist/components/GeoEdgeFade.svelte.d.ts +17 -19
- package/dist/components/GeoPath.svelte +157 -127
- package/dist/components/GeoPath.svelte.d.ts +48 -36
- package/dist/components/GeoPoint.svelte +52 -20
- package/dist/components/GeoPoint.svelte.d.ts +25 -22
- package/dist/components/GeoSpline.svelte +75 -26
- package/dist/components/GeoSpline.svelte.d.ts +29 -20
- package/dist/components/GeoTile.svelte +100 -49
- package/dist/components/GeoTile.svelte.d.ts +38 -23
- package/dist/components/GeoVisible.svelte +17 -9
- package/dist/components/GeoVisible.svelte.d.ts +10 -18
- package/dist/components/Graticule.svelte +30 -14
- package/dist/components/Graticule.svelte.d.ts +11 -52
- package/dist/components/Grid.svelte +230 -117
- package/dist/components/Grid.svelte.d.ts +71 -0
- package/dist/components/Group.svelte +173 -106
- package/dist/components/Group.svelte.d.ts +81 -0
- package/dist/components/Highlight.svelte +410 -308
- package/dist/components/Highlight.svelte.d.ts +107 -0
- package/dist/components/Hull.svelte +97 -46
- package/dist/components/Hull.svelte.d.ts +40 -30
- package/dist/components/Labels.svelte +127 -47
- package/dist/components/Labels.svelte.d.ts +70 -27
- package/dist/components/Legend.svelte +374 -190
- package/dist/components/Legend.svelte.d.ts +95 -44
- package/dist/components/Line.svelte +163 -125
- package/dist/components/Line.svelte.d.ts +75 -0
- package/dist/components/LinearGradient.svelte +153 -78
- package/dist/components/LinearGradient.svelte.d.ts +66 -31
- package/dist/components/Link.svelte +160 -104
- package/dist/components/Link.svelte.d.ts +54 -0
- package/dist/components/Marker.svelte +100 -39
- package/dist/components/Marker.svelte.d.ts +59 -27
- package/dist/components/MarkerWrapper.svelte +35 -0
- package/dist/components/MarkerWrapper.svelte.d.ts +18 -0
- package/dist/components/MonthPath.svelte +65 -20
- package/dist/components/MonthPath.svelte.d.ts +23 -17
- package/dist/components/MotionPath.svelte +80 -24
- package/dist/components/MotionPath.svelte.d.ts +46 -27
- package/dist/components/Pack.svelte +53 -17
- package/dist/components/Pack.svelte.d.ts +42 -21
- package/dist/components/Partition.svelte +64 -22
- package/dist/components/Partition.svelte.d.ts +49 -26
- package/dist/components/Pattern.svelte +297 -11
- package/dist/components/Pattern.svelte.d.ts +103 -19
- package/dist/components/Pie.svelte +122 -76
- package/dist/components/Pie.svelte.d.ts +65 -51
- package/dist/components/Point.svelte +20 -9
- package/dist/components/Point.svelte.d.ts +16 -20
- package/dist/components/Points.svelte +148 -137
- package/dist/components/Points.svelte.d.ts +45 -34
- package/dist/components/RadialGradient.svelte +143 -70
- package/dist/components/RadialGradient.svelte.d.ts +69 -31
- package/dist/components/Rect.svelte +121 -102
- package/dist/components/Rect.svelte.d.ts +36 -0
- package/dist/components/RectClipPath.svelte +82 -18
- package/dist/components/RectClipPath.svelte.d.ts +55 -0
- package/dist/components/Rule.svelte +107 -63
- package/dist/components/Rule.svelte.d.ts +40 -19
- package/dist/components/Sankey.svelte +132 -55
- package/dist/components/Sankey.svelte.d.ts +61 -31
- package/dist/components/Spline.svelte +281 -218
- package/dist/components/Spline.svelte.d.ts +95 -0
- package/dist/components/Text.svelte +437 -176
- package/dist/components/Text.svelte.d.ts +130 -0
- package/dist/components/Threshold.svelte +48 -16
- package/dist/components/Threshold.svelte.d.ts +29 -31
- package/dist/components/TileImage.svelte +103 -30
- package/dist/components/TileImage.svelte.d.ts +48 -23
- package/dist/components/TransformContext.svelte +365 -171
- package/dist/components/TransformControls.svelte +50 -26
- package/dist/components/TransformControls.svelte.d.ts +27 -19
- package/dist/components/Tree.svelte +74 -33
- package/dist/components/Tree.svelte.d.ts +42 -30
- package/dist/components/Treemap.svelte +119 -42
- package/dist/components/Treemap.svelte.d.ts +75 -27
- package/dist/components/Voronoi.svelte +108 -76
- package/dist/components/Voronoi.svelte.d.ts +40 -41
- package/dist/components/charts/ArcChart.svelte +464 -0
- package/dist/components/charts/ArcChart.svelte.d.ts +90 -0
- package/dist/components/charts/AreaChart.svelte +450 -393
- package/dist/components/charts/AreaChart.svelte.d.ts +61 -0
- package/dist/components/charts/BarChart.svelte +454 -389
- package/dist/components/charts/BarChart.svelte.d.ts +76 -0
- package/dist/components/charts/ChartAnnotations.svelte +37 -0
- package/dist/components/charts/ChartAnnotations.svelte.d.ts +10 -0
- package/dist/components/charts/DefaultTooltip.svelte +60 -0
- package/dist/components/charts/DefaultTooltip.svelte.d.ts +10 -0
- package/dist/components/charts/LineChart.svelte +369 -314
- package/dist/components/charts/LineChart.svelte.d.ts +53 -0
- package/dist/components/charts/PieChart.svelte +458 -316
- package/dist/components/charts/PieChart.svelte.d.ts +137 -353
- package/dist/components/charts/ScatterChart.svelte +334 -296
- package/dist/components/charts/ScatterChart.svelte.d.ts +39 -0
- package/dist/components/charts/index.d.ts +8 -0
- package/dist/components/charts/index.js +7 -0
- package/dist/components/charts/types.d.ts +253 -0
- package/dist/components/charts/utils.svelte.d.ts +30 -0
- package/dist/components/charts/utils.svelte.js +55 -0
- package/dist/components/index.d.ts +76 -4
- package/dist/components/index.js +76 -5
- package/dist/components/layout/Canvas.svelte +321 -155
- package/dist/components/layout/Canvas.svelte.d.ts +104 -55
- package/dist/components/layout/Html.svelte +82 -42
- package/dist/components/layout/Html.svelte.d.ts +39 -28
- package/dist/components/layout/Layer.svelte +39 -0
- package/dist/components/layout/Layer.svelte.d.ts +17 -0
- package/dist/components/layout/Svg.svelte +122 -70
- package/dist/components/layout/Svg.svelte.d.ts +53 -34
- package/dist/components/layout/WebGL.svelte +135 -0
- package/dist/components/layout/WebGL.svelte.d.ts +50 -0
- package/dist/components/tooltip/Tooltip.svelte +246 -78
- package/dist/components/tooltip/Tooltip.svelte.d.ts +149 -31
- package/dist/components/tooltip/TooltipContext.svelte +409 -271
- package/dist/components/tooltip/TooltipContext.svelte.d.ts +86 -55
- package/dist/components/tooltip/TooltipHeader.svelte +100 -11
- package/dist/components/tooltip/TooltipHeader.svelte.d.ts +43 -23
- package/dist/components/tooltip/TooltipItem.svelte +167 -27
- package/dist/components/tooltip/TooltipItem.svelte.d.ts +63 -31
- package/dist/components/tooltip/TooltipList.svelte +22 -3
- package/dist/components/tooltip/TooltipList.svelte.d.ts +6 -17
- package/dist/components/tooltip/TooltipSeparator.svelte +27 -1
- package/dist/components/tooltip/TooltipSeparator.svelte.d.ts +6 -15
- package/dist/components/tooltip/index.d.ts +6 -0
- package/dist/components/tooltip/index.js +6 -0
- package/dist/components/tooltip/tooltipMetaContext.d.ts +79 -0
- package/dist/components/tooltip/tooltipMetaContext.js +139 -0
- package/dist/components/types.d.ts +1 -0
- package/dist/components/types.js +1 -0
- package/dist/docs/Blockquote.svelte.d.ts +18 -14
- package/dist/docs/Code.svelte.d.ts +26 -22
- package/dist/docs/ConnectorSweepMenuField.svelte +17 -0
- package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +7 -0
- package/dist/docs/ConnectorTypeMenuField.svelte +17 -0
- package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +7 -0
- package/dist/docs/CurveMenuField.svelte +14 -3
- package/dist/docs/CurveMenuField.svelte.d.ts +9 -18
- package/dist/docs/GeoDebug.svelte +47 -42
- package/dist/docs/GeoDebug.svelte.d.ts +4 -16
- package/dist/docs/Header1.svelte.d.ts +27 -16
- package/dist/docs/Json.svelte.d.ts +20 -16
- package/dist/docs/Layout.svelte.d.ts +18 -13
- package/dist/docs/Link.svelte.d.ts +33 -21
- package/dist/docs/PathDataMenuField.svelte +14 -10
- package/dist/docs/PathDataMenuField.svelte.d.ts +8 -18
- package/dist/docs/Preview.svelte +20 -7
- package/dist/docs/Preview.svelte.d.ts +12 -22
- package/dist/docs/TilesetField.svelte.d.ts +21 -17
- package/dist/docs/TransformDebug.svelte +5 -6
- package/dist/docs/TransformDebug.svelte.d.ts +18 -14
- package/dist/docs/ViewSourceButton.svelte.d.ts +21 -17
- package/dist/types/d3-shape-extentions.d.ts +7 -0
- package/dist/utils/afterTick.d.ts +5 -0
- package/dist/utils/afterTick.js +8 -0
- package/dist/utils/arcText.svelte.d.ts +57 -0
- package/dist/utils/arcText.svelte.js +262 -0
- package/dist/utils/array.d.ts +9 -1
- package/dist/utils/array.js +13 -0
- package/dist/utils/attributes.d.ts +29 -0
- package/dist/utils/attributes.js +40 -0
- package/dist/utils/canvas.js +47 -10
- package/dist/utils/chart.d.ts +78 -0
- package/dist/utils/chart.js +512 -0
- package/dist/utils/color.d.ts +1 -0
- package/dist/utils/color.js +8 -0
- package/dist/utils/common.d.ts +3 -5
- package/dist/utils/common.js +3 -2
- package/dist/utils/connectorUtils.d.ts +21 -0
- package/dist/utils/connectorUtils.js +111 -0
- package/dist/utils/createId.d.ts +7 -0
- package/dist/utils/createId.js +9 -0
- package/dist/utils/debug.d.ts +1 -0
- package/dist/utils/debug.js +84 -0
- package/dist/utils/filterObject.d.ts +9 -0
- package/dist/utils/filterObject.js +12 -0
- package/dist/utils/graph/dagre.d.ts +34 -0
- package/dist/utils/graph/dagre.js +78 -0
- package/dist/utils/graph/dagre.test.d.ts +1 -0
- package/dist/utils/{graph.test.js → graph/dagre.test.js} +19 -33
- package/dist/utils/graph/sankey.d.ts +28 -0
- package/dist/utils/{graph.js → graph/sankey.js} +13 -41
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/key.svelte.d.ts +3 -0
- package/dist/utils/key.svelte.js +11 -0
- package/dist/utils/legendPayload.d.ts +7 -0
- package/dist/utils/legendPayload.js +8 -0
- package/dist/utils/motion.svelte.d.ts +140 -0
- package/dist/utils/motion.svelte.js +180 -0
- package/dist/utils/motion.test.d.ts +1 -0
- package/dist/utils/motion.test.js +213 -0
- package/dist/utils/{rect.d.ts → rect.svelte.d.ts} +7 -4
- package/dist/utils/rect.svelte.js +105 -0
- package/dist/utils/scales.svelte.d.ts +90 -0
- package/dist/utils/{scales.js → scales.svelte.js} +100 -39
- package/dist/utils/stack.d.ts +2 -3
- package/dist/utils/stack.js +1 -1
- package/dist/utils/string.js +87 -0
- package/dist/utils/ticks.d.ts +8 -2
- package/dist/utils/ticks.js +28 -0
- package/dist/utils/ticks.test.d.ts +1 -0
- package/dist/utils/ticks.test.js +67 -0
- package/dist/utils/types.d.ts +81 -0
- package/package.json +21 -19
- package/dist/components/ChartContext.svelte +0 -295
- package/dist/components/ChartContext.svelte.d.ts +0 -139
- package/dist/components/TransformContext.svelte.d.ts +0 -158
- package/dist/stores/motionStore.d.ts +0 -30
- package/dist/stores/motionStore.js +0 -62
- package/dist/utils/graph.d.ts +0 -37
- package/dist/utils/rect.js +0 -107
- package/dist/utils/scales.d.ts +0 -66
- /package/dist/{utils/graph.test.d.ts → components/charts/types.js} +0 -0
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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 =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export default
|
|
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"
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export function
|
|
18
|
-
return
|
|
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:
|
|
22
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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(
|
|
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
|
-
|
|
95
|
-
|
|
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([
|
|
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
|
-
|
|
132
|
-
}
|
|
170
|
+
geoContext.projection = _projection;
|
|
171
|
+
});
|
|
133
172
|
</script>
|
|
134
173
|
|
|
135
|
-
|
|
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
|
-
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
export
|
|
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 {
|
|
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
|
-
|
|
39
|
+
$effect.pre(() => {
|
|
40
|
+
refProp = ref;
|
|
41
|
+
});
|
|
8
42
|
|
|
9
|
-
const
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
<
|
|
24
|
-
|
|
25
|
-
</
|
|
59
|
+
<Group {opacity} bind:ref {...extractLayerProps(restProps, 'geo-edge-fade')}>
|
|
60
|
+
{@render children?.()}
|
|
61
|
+
</Group>
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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;
|