layerchart 2.0.0-next.4 → 2.0.0-next.40
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/components/AnnotationLine.svelte +15 -2
- package/dist/components/AnnotationPoint.svelte +29 -11
- package/dist/components/AnnotationRange.svelte +18 -4
- package/dist/components/Arc.svelte +5 -5
- package/dist/components/Area.svelte +10 -2
- package/dist/components/Axis.svelte +175 -58
- package/dist/components/Axis.svelte.d.ts +23 -6
- package/dist/components/Bar.svelte +20 -15
- package/dist/components/Bar.svelte.d.ts +2 -2
- package/dist/components/Bars.svelte +4 -4
- package/dist/components/Blur.svelte +7 -6
- package/dist/components/Blur.svelte.d.ts +2 -5
- package/dist/components/BrushContext.svelte +45 -45
- package/dist/components/Calendar.svelte +31 -10
- package/dist/components/Calendar.svelte.d.ts +2 -1
- package/dist/components/Chart.svelte +76 -27
- package/dist/components/Chart.svelte.d.ts +26 -8
- package/dist/components/ChartClipPath.svelte +1 -1
- package/dist/components/Circle.svelte +44 -3
- package/dist/components/CircleClipPath.svelte +8 -1
- package/dist/components/ClipPath.svelte +1 -2
- package/dist/components/ColorRamp.svelte +1 -1
- package/dist/components/ComputedStyles.svelte +9 -2
- package/dist/components/Connector.svelte +3 -3
- package/dist/components/Connector.svelte.d.ts +1 -1
- package/dist/components/Ellipse.svelte +228 -0
- package/dist/components/Ellipse.svelte.d.ts +64 -0
- package/dist/components/ForceSimulation.svelte +184 -50
- package/dist/components/ForceSimulation.svelte.d.ts +95 -21
- package/dist/components/Frame.svelte +1 -1
- package/dist/components/GeoCircle.svelte +1 -1
- package/dist/components/GeoEdgeFade.svelte +1 -1
- package/dist/components/GeoPath.svelte +30 -8
- package/dist/components/GeoPoint.svelte +4 -5
- package/dist/components/GeoSpline.svelte +5 -5
- package/dist/components/GeoSpline.svelte.d.ts +1 -1
- package/dist/components/GeoTile.svelte +1 -1
- package/dist/components/Graticule.svelte +5 -5
- package/dist/components/Grid.svelte +60 -63
- package/dist/components/Group.svelte +13 -8
- package/dist/components/Group.svelte.d.ts +10 -3
- package/dist/components/Highlight.svelte +55 -28
- package/dist/components/Highlight.svelte.d.ts +4 -0
- package/dist/components/Hull.svelte +12 -5
- package/dist/components/Labels.svelte +24 -13
- package/dist/components/Labels.svelte.d.ts +12 -5
- package/dist/components/Legend.svelte +143 -70
- package/dist/components/Legend.svelte.d.ts +12 -8
- package/dist/components/Line.svelte +40 -3
- package/dist/components/LinearGradient.svelte +35 -4
- package/dist/components/Link.svelte +1 -1
- package/dist/components/Marker.svelte +37 -26
- package/dist/components/MonthPath.svelte +26 -12
- package/dist/components/MonthPath.svelte.d.ts +4 -3
- package/dist/components/MotionPath.svelte +1 -1
- package/dist/components/Pack.svelte.d.ts +10 -3
- package/dist/components/Partition.svelte.d.ts +10 -3
- package/dist/components/Pattern.svelte +5 -5
- package/dist/components/Pie.svelte +1 -2
- package/dist/components/Points.svelte +11 -72
- package/dist/components/Points.svelte.d.ts +1 -8
- package/dist/components/Polygon.svelte +309 -0
- package/dist/components/Polygon.svelte.d.ts +115 -0
- package/dist/components/RadialGradient.svelte +4 -6
- package/dist/components/Rect.svelte +55 -5
- package/dist/components/Rect.svelte.d.ts +2 -2
- package/dist/components/RectClipPath.svelte +4 -3
- package/dist/components/RectClipPath.svelte.d.ts +2 -2
- package/dist/components/Rule.svelte +167 -77
- package/dist/components/Rule.svelte.d.ts +7 -2
- package/dist/components/Spline.svelte +59 -28
- package/dist/components/Spline.svelte.d.ts +12 -4
- package/dist/components/Text.svelte +121 -73
- package/dist/components/Text.svelte.d.ts +6 -0
- package/dist/components/TileImage.svelte +19 -4
- package/dist/components/TransformContext.svelte +9 -3
- package/dist/components/TransformControls.svelte +89 -38
- package/dist/components/Tree.svelte.d.ts +10 -3
- package/dist/components/Treemap.svelte +63 -26
- package/dist/components/Treemap.svelte.d.ts +21 -14
- package/dist/components/Voronoi.svelte +12 -13
- package/dist/components/charts/ArcChart.svelte +43 -71
- package/dist/components/charts/ArcChart.svelte.d.ts +10 -3
- package/dist/components/charts/AreaChart.svelte +29 -59
- package/dist/components/charts/AreaChart.svelte.d.ts +10 -3
- package/dist/components/charts/BarChart.svelte +79 -71
- package/dist/components/charts/BarChart.svelte.d.ts +10 -3
- package/dist/components/charts/DefaultTooltip.svelte +3 -3
- package/dist/components/charts/DefaultTooltip.svelte.d.ts +1 -1
- package/dist/components/charts/LineChart.svelte +69 -75
- package/dist/components/charts/LineChart.svelte.d.ts +21 -8
- package/dist/components/charts/PieChart.svelte +44 -71
- package/dist/components/charts/PieChart.svelte.d.ts +10 -3
- package/dist/components/charts/ScatterChart.svelte +10 -39
- package/dist/components/charts/ScatterChart.svelte.d.ts +10 -3
- package/dist/components/charts/utils.svelte.d.ts +1 -19
- package/dist/components/charts/utils.svelte.js +7 -35
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +5 -1
- package/dist/components/layout/Canvas.svelte +96 -69
- package/dist/components/layout/Canvas.svelte.d.ts +6 -0
- package/dist/components/layout/Html.svelte +15 -9
- package/dist/components/layout/Layer.svelte +6 -4
- package/dist/components/layout/Layer.svelte.d.ts +6 -4
- package/dist/components/layout/Svg.svelte +19 -11
- package/dist/components/layout/WebGL.svelte +26 -6
- package/dist/components/layout/WebGL.svelte.d.ts +5 -2
- package/dist/components/tooltip/Tooltip.svelte +65 -27
- package/dist/components/tooltip/Tooltip.svelte.d.ts +10 -3
- package/dist/components/tooltip/TooltipContext.svelte +167 -54
- package/dist/components/tooltip/TooltipContext.svelte.d.ts +19 -5
- package/dist/components/tooltip/TooltipHeader.svelte +32 -18
- package/dist/components/tooltip/TooltipHeader.svelte.d.ts +3 -3
- package/dist/components/tooltip/TooltipItem.svelte +46 -37
- package/dist/components/tooltip/TooltipItem.svelte.d.ts +3 -3
- package/dist/components/tooltip/TooltipList.svelte +12 -10
- package/dist/components/tooltip/TooltipSeparator.svelte +18 -10
- package/dist/components/tooltip/tooltipMetaContext.d.ts +2 -2
- package/dist/docs/Blockquote.svelte +6 -4
- package/dist/docs/Blockquote.svelte.d.ts +4 -19
- package/dist/docs/Code.svelte +70 -28
- package/dist/docs/Code.svelte.d.ts +9 -24
- package/dist/docs/Header1.svelte +4 -2
- package/dist/docs/Header1.svelte.d.ts +4 -28
- package/dist/docs/Json.svelte +11 -3
- package/dist/docs/Json.svelte.d.ts +9 -21
- package/dist/docs/Layout.svelte +10 -7
- package/dist/docs/Layout.svelte.d.ts +4 -19
- package/dist/docs/Link.svelte +7 -3
- package/dist/docs/Link.svelte.d.ts +4 -38
- package/dist/docs/Preview.svelte +22 -23
- package/dist/docs/Preview.svelte.d.ts +5 -6
- package/dist/docs/TilesetField.svelte +20 -19
- package/dist/docs/TilesetField.svelte.d.ts +5 -22
- package/dist/docs/ViewSourceButton.svelte +10 -7
- package/dist/docs/ViewSourceButton.svelte.d.ts +7 -21
- package/dist/states/series.svelte.d.ts +30 -0
- package/dist/states/series.svelte.js +54 -0
- package/dist/styles/daisyui-5.css +6 -0
- package/dist/styles/shadcn-svelte.css +11 -0
- package/dist/styles/skeleton-3.css +15 -0
- package/dist/utils/arcText.svelte.js +4 -4
- package/dist/utils/array.d.ts +11 -0
- package/dist/utils/array.js +23 -0
- package/dist/utils/array.test.d.ts +1 -0
- package/dist/utils/array.test.js +200 -0
- package/dist/utils/attributes.d.ts +3 -13
- package/dist/utils/attributes.js +4 -18
- package/dist/utils/canvas.d.ts +77 -0
- package/dist/utils/canvas.js +105 -41
- package/dist/utils/common.d.ts +9 -0
- package/dist/utils/common.js +18 -1
- package/dist/utils/common.test.js +26 -1
- package/dist/utils/genData.d.ts +22 -8
- package/dist/utils/genData.js +34 -14
- package/dist/utils/graph/dagre.d.ts +4 -4
- package/dist/utils/graph/dagre.js +5 -7
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/math.d.ts +17 -0
- package/dist/utils/math.js +17 -0
- package/dist/utils/path.d.ts +10 -0
- package/dist/utils/path.js +30 -0
- package/dist/utils/rect.svelte.d.ts +2 -2
- package/dist/utils/rect.svelte.js +73 -1
- package/dist/utils/scales.svelte.d.ts +9 -3
- package/dist/utils/scales.svelte.js +47 -4
- package/dist/utils/shape.d.ts +43 -0
- package/dist/utils/shape.js +59 -0
- package/dist/utils/stack.js +1 -1
- package/dist/utils/string.d.ts +49 -0
- package/dist/utils/string.js +4 -2
- package/dist/utils/ticks.d.ts +15 -4
- package/dist/utils/ticks.js +140 -159
- package/dist/utils/ticks.test.js +16 -26
- package/dist/utils/treemap.d.ts +1 -1
- package/dist/utils/types.d.ts +15 -2
- package/package.json +35 -35
- package/dist/utils/object.js +0 -2
|
@@ -32,20 +32,15 @@
|
|
|
32
32
|
<script lang="ts">
|
|
33
33
|
import { type ComponentProps } from 'svelte';
|
|
34
34
|
import { Button, Icon, MenuButton, Tooltip } from 'svelte-ux';
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
import
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
mdiChevronDown,
|
|
45
|
-
mdiResize,
|
|
46
|
-
mdiArrowExpandAll,
|
|
47
|
-
mdiCancel,
|
|
48
|
-
} from '@mdi/js';
|
|
35
|
+
|
|
36
|
+
import LucideFocus from '~icons/lucide/focus';
|
|
37
|
+
import LucideChevronDown from '~icons/lucide/chevron-down';
|
|
38
|
+
import LucideCircleOff from '~icons/lucide/circle-off';
|
|
39
|
+
import LucideImageUpscale from '~icons/lucide/image-upscale';
|
|
40
|
+
import LucideMove from '~icons/lucide/move';
|
|
41
|
+
import LucideUndo2 from '~icons/lucide/undo-2';
|
|
42
|
+
import LucideZoomIn from '~icons/lucide/zoom-in';
|
|
43
|
+
import LucideZoomOut from '~icons/lucide/zoom-out';
|
|
49
44
|
|
|
50
45
|
import { getTransformContext } from './TransformContext.svelte';
|
|
51
46
|
import type { Without } from '../utils/types.js';
|
|
@@ -89,22 +84,9 @@
|
|
|
89
84
|
|
|
90
85
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
91
86
|
<div
|
|
92
|
-
class={
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
{
|
|
96
|
-
'top-left': 'absolute top-0 left-0',
|
|
97
|
-
top: 'absolute top-0 left-1/2 -translate-x-1/2',
|
|
98
|
-
'top-right': 'absolute top-0 right-0',
|
|
99
|
-
left: 'absolute top-1/2 left-0 -translate-y-1/2',
|
|
100
|
-
center: 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',
|
|
101
|
-
right: 'absolute top-1/2 right-0 -translate-y-1/2',
|
|
102
|
-
'bottom-left': 'absolute bottom-0 left-0',
|
|
103
|
-
bottom: 'absolute bottom-0 left-1/2 -translate-x-1/2',
|
|
104
|
-
'bottom-right': 'absolute bottom-0 right-0',
|
|
105
|
-
}[placement],
|
|
106
|
-
className
|
|
107
|
-
)}
|
|
87
|
+
class={['lc-transform-controls', className]}
|
|
88
|
+
data-orientation={orientation}
|
|
89
|
+
data-placement={placement}
|
|
108
90
|
ondblclick={(e) => {
|
|
109
91
|
// Stop from propagating to TransformContext
|
|
110
92
|
e.stopPropagation();
|
|
@@ -113,7 +95,7 @@
|
|
|
113
95
|
{#if show.includes('zoomIn')}
|
|
114
96
|
<Tooltip title="Zoom in">
|
|
115
97
|
<Button
|
|
116
|
-
icon={
|
|
98
|
+
icon={LucideZoomIn}
|
|
117
99
|
on:click={() => transform.zoomIn()}
|
|
118
100
|
{size}
|
|
119
101
|
class="text-surface-content p-2"
|
|
@@ -124,7 +106,7 @@
|
|
|
124
106
|
{#if show.includes('zoomOut')}
|
|
125
107
|
<Tooltip title="Zoom out">
|
|
126
108
|
<Button
|
|
127
|
-
icon={
|
|
109
|
+
icon={LucideZoomOut}
|
|
128
110
|
on:click={() => transform.zoomOut()}
|
|
129
111
|
{size}
|
|
130
112
|
class="text-surface-content p-2"
|
|
@@ -135,7 +117,7 @@
|
|
|
135
117
|
{#if show.includes('center')}
|
|
136
118
|
<Tooltip title="Center">
|
|
137
119
|
<Button
|
|
138
|
-
icon={
|
|
120
|
+
icon={LucideFocus}
|
|
139
121
|
on:click={() => transform.translateCenter()}
|
|
140
122
|
{size}
|
|
141
123
|
class="text-surface-content p-2"
|
|
@@ -146,7 +128,7 @@
|
|
|
146
128
|
{#if show.includes('reset')}
|
|
147
129
|
<Tooltip title="Reset">
|
|
148
130
|
<Button
|
|
149
|
-
icon={
|
|
131
|
+
icon={LucideUndo2}
|
|
150
132
|
on:click={() => transform.reset()}
|
|
151
133
|
{size}
|
|
152
134
|
class="text-surface-content p-2"
|
|
@@ -159,9 +141,9 @@
|
|
|
159
141
|
<MenuButton
|
|
160
142
|
iconOnly
|
|
161
143
|
options={[
|
|
162
|
-
{ label: 'None', value: 'none', icon:
|
|
163
|
-
{ label: 'Zoom', value: 'scale', icon:
|
|
164
|
-
{ label: 'Move', value: 'translate', icon:
|
|
144
|
+
{ label: 'None', value: 'none', icon: LucideCircleOff },
|
|
145
|
+
{ label: 'Zoom', value: 'scale', icon: LucideImageUpscale },
|
|
146
|
+
{ label: 'Move', value: 'translate', icon: LucideMove },
|
|
165
147
|
]}
|
|
166
148
|
menuProps={{ placement: menuPlacementByOrientationAndPlacement[orientation][placement] }}
|
|
167
149
|
menuIcon={null}
|
|
@@ -171,9 +153,78 @@
|
|
|
171
153
|
class="text-surface-content"
|
|
172
154
|
>
|
|
173
155
|
<svelte:fragment slot="selection" let:value>
|
|
174
|
-
<Icon data={value?.icon ??
|
|
156
|
+
<Icon data={value?.icon ?? LucideChevronDown} />
|
|
175
157
|
</svelte:fragment>
|
|
176
158
|
</MenuButton>
|
|
177
159
|
</Tooltip>
|
|
178
160
|
{/if}
|
|
179
161
|
</div>
|
|
162
|
+
|
|
163
|
+
<style>
|
|
164
|
+
@layer components {
|
|
165
|
+
:where(.lc-transform-controls) {
|
|
166
|
+
display: flex;
|
|
167
|
+
background: color-mix(
|
|
168
|
+
in oklab,
|
|
169
|
+
var(--color-surface-300, light-dark(white, black)) 50%,
|
|
170
|
+
transparent
|
|
171
|
+
);
|
|
172
|
+
border: 1px solid
|
|
173
|
+
color-mix(in oklab, var(--color-surface-content, currentColor) 20%, transparent);
|
|
174
|
+
border-radius: 9999px;
|
|
175
|
+
margin: 4px;
|
|
176
|
+
backdrop-filter: blur(8px);
|
|
177
|
+
z-index: 10;
|
|
178
|
+
|
|
179
|
+
&[data-orientation='vertical'] {
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
&[data-placement] {
|
|
184
|
+
position: absolute;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
&[data-placement='top-left'] {
|
|
188
|
+
top: 0;
|
|
189
|
+
left: 0;
|
|
190
|
+
}
|
|
191
|
+
&[data-placement='top'] {
|
|
192
|
+
top: 0;
|
|
193
|
+
left: 50%;
|
|
194
|
+
transform: translateX(-50%);
|
|
195
|
+
}
|
|
196
|
+
&[data-placement='top-right'] {
|
|
197
|
+
top: 0;
|
|
198
|
+
right: 0;
|
|
199
|
+
}
|
|
200
|
+
&[data-placement='left'] {
|
|
201
|
+
top: 50%;
|
|
202
|
+
left: 0;
|
|
203
|
+
transform: translateY(-50%);
|
|
204
|
+
}
|
|
205
|
+
&[data-placement='center'] {
|
|
206
|
+
top: 50%;
|
|
207
|
+
left: 50%;
|
|
208
|
+
transform: translate(-50%, -50%);
|
|
209
|
+
}
|
|
210
|
+
&[data-placement='right'] {
|
|
211
|
+
top: 50%;
|
|
212
|
+
right: 0;
|
|
213
|
+
transform: translateY(-50%);
|
|
214
|
+
}
|
|
215
|
+
&[data-placement='bottom-left'] {
|
|
216
|
+
bottom: 0;
|
|
217
|
+
left: 0;
|
|
218
|
+
}
|
|
219
|
+
&[data-placement='bottom'] {
|
|
220
|
+
bottom: 0;
|
|
221
|
+
left: 50%;
|
|
222
|
+
transform: translateX(-50%);
|
|
223
|
+
}
|
|
224
|
+
&[data-placement='bottom-right'] {
|
|
225
|
+
bottom: 0;
|
|
226
|
+
right: 0;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
</style>
|
|
@@ -25,10 +25,17 @@ export type TreeProps<T> = {
|
|
|
25
25
|
};
|
|
26
26
|
import { type HierarchyPointNode, type HierarchyPointLink, type HierarchyNode } from 'd3-hierarchy';
|
|
27
27
|
import type { Snippet } from 'svelte';
|
|
28
|
+
declare function $$render<T>(): {
|
|
29
|
+
props: TreeProps<T>;
|
|
30
|
+
exports: {};
|
|
31
|
+
bindings: "";
|
|
32
|
+
slots: {};
|
|
33
|
+
events: {};
|
|
34
|
+
};
|
|
28
35
|
declare class __sveltets_Render<T> {
|
|
29
|
-
props():
|
|
30
|
-
events():
|
|
31
|
-
slots():
|
|
36
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
37
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
38
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
32
39
|
bindings(): "";
|
|
33
40
|
exports(): {};
|
|
34
41
|
}
|
|
@@ -18,53 +18,53 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @default 0
|
|
20
20
|
*/
|
|
21
|
-
padding?: number;
|
|
21
|
+
padding?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* The inner padding between nodes.
|
|
25
25
|
*
|
|
26
26
|
* @default 0
|
|
27
27
|
*/
|
|
28
|
-
paddingInner?: number;
|
|
28
|
+
paddingInner?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* The outer padding between nodes.
|
|
32
32
|
*
|
|
33
33
|
* @default 0
|
|
34
34
|
*/
|
|
35
|
-
paddingOuter?: number;
|
|
35
|
+
paddingOuter?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* The top padding between nodes.
|
|
39
39
|
*
|
|
40
40
|
* @default 0
|
|
41
41
|
*/
|
|
42
|
-
paddingTop?: number;
|
|
42
|
+
paddingTop?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* The bottom padding between nodes.
|
|
46
46
|
*
|
|
47
47
|
* @default 0
|
|
48
48
|
*/
|
|
49
|
-
paddingBottom?: number;
|
|
49
|
+
paddingBottom?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
50
50
|
/**
|
|
51
51
|
* The left padding between nodes.
|
|
52
52
|
*
|
|
53
53
|
*/
|
|
54
|
-
paddingLeft?: number;
|
|
54
|
+
paddingLeft?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* The right padding between nodes.
|
|
58
58
|
*
|
|
59
59
|
*/
|
|
60
|
-
paddingRight?: number;
|
|
60
|
+
paddingRight?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* Modify tiling function for approapriate aspect ratio when treemap is zoomed in
|
|
64
64
|
*
|
|
65
|
-
* @default
|
|
65
|
+
* @default false
|
|
66
66
|
*/
|
|
67
|
-
|
|
67
|
+
maintainAspectRatio?: boolean;
|
|
68
68
|
|
|
69
69
|
hierarchy?: HierarchyNode<T>;
|
|
70
70
|
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
paddingBottom = 0,
|
|
100
100
|
paddingLeft,
|
|
101
101
|
paddingRight,
|
|
102
|
-
|
|
102
|
+
maintainAspectRatio = false,
|
|
103
103
|
children,
|
|
104
104
|
}: TreemapProps<T> = $props();
|
|
105
105
|
|
|
@@ -121,45 +121,82 @@
|
|
|
121
121
|
: tile
|
|
122
122
|
);
|
|
123
123
|
|
|
124
|
-
const
|
|
124
|
+
const treemapData = $derived.by(() => {
|
|
125
125
|
const _treemap = d3treemap<T>()
|
|
126
126
|
.size([ctx.width, ctx.height])
|
|
127
|
-
.tile(aspectTile(tileFunc, ctx.width, ctx.height));
|
|
127
|
+
.tile(maintainAspectRatio ? aspectTile(tileFunc, ctx.width, ctx.height) : tileFunc);
|
|
128
128
|
|
|
129
129
|
if (padding) {
|
|
130
|
-
|
|
130
|
+
// Make Typescript happy to pick the correct overload
|
|
131
|
+
// TODO: Better way to do this?
|
|
132
|
+
if (typeof padding === 'number') {
|
|
133
|
+
_treemap.padding(padding);
|
|
134
|
+
} else {
|
|
135
|
+
_treemap.padding(padding);
|
|
136
|
+
}
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
if (paddingInner) {
|
|
134
|
-
|
|
140
|
+
if (typeof paddingInner === 'number') {
|
|
141
|
+
_treemap.paddingInner(typeof paddingInner === 'number' ? paddingInner : paddingInner);
|
|
142
|
+
} else {
|
|
143
|
+
_treemap.paddingInner(paddingInner);
|
|
144
|
+
}
|
|
135
145
|
}
|
|
136
146
|
|
|
137
147
|
if (paddingOuter) {
|
|
138
|
-
|
|
148
|
+
if (typeof paddingOuter === 'number') {
|
|
149
|
+
_treemap.paddingOuter(paddingOuter);
|
|
150
|
+
} else {
|
|
151
|
+
_treemap.paddingOuter(paddingOuter);
|
|
152
|
+
}
|
|
139
153
|
}
|
|
140
154
|
|
|
141
155
|
if (paddingTop) {
|
|
142
|
-
|
|
156
|
+
if (typeof paddingTop === 'number') {
|
|
157
|
+
_treemap.paddingTop(paddingTop);
|
|
158
|
+
} else {
|
|
159
|
+
_treemap.paddingTop(paddingTop);
|
|
160
|
+
}
|
|
143
161
|
}
|
|
144
162
|
|
|
145
163
|
if (paddingBottom) {
|
|
146
|
-
|
|
164
|
+
if (typeof paddingBottom === 'number') {
|
|
165
|
+
_treemap.paddingBottom(paddingBottom);
|
|
166
|
+
} else {
|
|
167
|
+
_treemap.paddingBottom(paddingBottom);
|
|
168
|
+
}
|
|
147
169
|
}
|
|
148
170
|
|
|
149
171
|
if (paddingLeft) {
|
|
150
|
-
|
|
172
|
+
if (typeof paddingLeft === 'number') {
|
|
173
|
+
_treemap.paddingLeft(paddingLeft);
|
|
174
|
+
} else {
|
|
175
|
+
_treemap.paddingLeft(paddingLeft);
|
|
176
|
+
}
|
|
151
177
|
}
|
|
152
178
|
if (paddingRight) {
|
|
153
|
-
|
|
179
|
+
if (typeof paddingRight === 'number') {
|
|
180
|
+
_treemap.paddingRight(paddingRight);
|
|
181
|
+
} else {
|
|
182
|
+
_treemap.paddingRight(paddingRight);
|
|
183
|
+
}
|
|
154
184
|
}
|
|
155
|
-
return _treemap;
|
|
156
|
-
});
|
|
157
185
|
|
|
158
|
-
|
|
186
|
+
if (hierarchy) {
|
|
187
|
+
const h = hierarchy.copy();
|
|
188
|
+
const treemapData = _treemap(h);
|
|
189
|
+
return {
|
|
190
|
+
links: treemapData.links(),
|
|
191
|
+
nodes: treemapData.descendants(),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
159
194
|
|
|
160
|
-
|
|
161
|
-
|
|
195
|
+
return {
|
|
196
|
+
links: [],
|
|
197
|
+
nodes: [],
|
|
198
|
+
};
|
|
162
199
|
});
|
|
163
200
|
</script>
|
|
164
201
|
|
|
165
|
-
{@render children?.({ nodes: treemapData
|
|
202
|
+
{@render children?.({ nodes: treemapData.nodes })}
|
|
@@ -10,47 +10,47 @@ export type TreemapProps<T> = {
|
|
|
10
10
|
*
|
|
11
11
|
* @default 0
|
|
12
12
|
*/
|
|
13
|
-
padding?: number;
|
|
13
|
+
padding?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
14
14
|
/**
|
|
15
15
|
* The inner padding between nodes.
|
|
16
16
|
*
|
|
17
17
|
* @default 0
|
|
18
18
|
*/
|
|
19
|
-
paddingInner?: number;
|
|
19
|
+
paddingInner?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
20
20
|
/**
|
|
21
21
|
* The outer padding between nodes.
|
|
22
22
|
*
|
|
23
23
|
* @default 0
|
|
24
24
|
*/
|
|
25
|
-
paddingOuter?: number;
|
|
25
|
+
paddingOuter?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
26
26
|
/**
|
|
27
27
|
* The top padding between nodes.
|
|
28
28
|
*
|
|
29
29
|
* @default 0
|
|
30
30
|
*/
|
|
31
|
-
paddingTop?: number;
|
|
31
|
+
paddingTop?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
32
32
|
/**
|
|
33
33
|
* The bottom padding between nodes.
|
|
34
34
|
*
|
|
35
35
|
* @default 0
|
|
36
36
|
*/
|
|
37
|
-
paddingBottom?: number;
|
|
37
|
+
paddingBottom?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
38
38
|
/**
|
|
39
39
|
* The left padding between nodes.
|
|
40
40
|
*
|
|
41
41
|
*/
|
|
42
|
-
paddingLeft?: number;
|
|
42
|
+
paddingLeft?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
43
43
|
/**
|
|
44
44
|
* The right padding between nodes.
|
|
45
45
|
*
|
|
46
46
|
*/
|
|
47
|
-
paddingRight?: number;
|
|
47
|
+
paddingRight?: number | ((node: HierarchyRectangularNode<T>) => number);
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* Modify tiling function for approapriate aspect ratio when treemap is zoomed in
|
|
50
50
|
*
|
|
51
|
-
* @default
|
|
51
|
+
* @default false
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
maintainAspectRatio?: boolean;
|
|
54
54
|
hierarchy?: HierarchyNode<T>;
|
|
55
55
|
children?: Snippet<[{
|
|
56
56
|
nodes: HierarchyRectangularNode<T>[];
|
|
@@ -58,11 +58,18 @@ export type TreemapProps<T> = {
|
|
|
58
58
|
};
|
|
59
59
|
import { treemapSquarify, type HierarchyNode, type HierarchyRectangularNode } from 'd3-hierarchy';
|
|
60
60
|
import type { Snippet } from 'svelte';
|
|
61
|
+
declare function $$render<T>(): {
|
|
62
|
+
props: TreemapProps<T>;
|
|
63
|
+
exports: {};
|
|
64
|
+
bindings: "";
|
|
65
|
+
slots: {};
|
|
66
|
+
events: {};
|
|
67
|
+
};
|
|
61
68
|
declare class __sveltets_Render<T> {
|
|
62
|
-
props():
|
|
63
|
-
events():
|
|
64
|
-
slots():
|
|
65
|
-
bindings(): "
|
|
69
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
70
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
71
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
72
|
+
bindings(): "";
|
|
66
73
|
exports(): {};
|
|
67
74
|
}
|
|
68
75
|
interface $$IsomorphicComponent {
|
|
@@ -71,8 +71,6 @@
|
|
|
71
71
|
import { getGeoContext } from './GeoContext.svelte';
|
|
72
72
|
import CircleClipPath from './CircleClipPath.svelte';
|
|
73
73
|
|
|
74
|
-
import { layerClass } from '../utils/attributes.js';
|
|
75
|
-
|
|
76
74
|
let {
|
|
77
75
|
data,
|
|
78
76
|
r,
|
|
@@ -118,7 +116,7 @@
|
|
|
118
116
|
const disableClip = $derived(r === 0 || r == null || r === Infinity);
|
|
119
117
|
</script>
|
|
120
118
|
|
|
121
|
-
<Group {...restProps} class={cls(
|
|
119
|
+
<Group {...restProps} class={cls('lc-voronoi-g', classes.root, className)}>
|
|
122
120
|
{#if geo.projection}
|
|
123
121
|
{@const polygons = geoVoronoi().polygons(points)}
|
|
124
122
|
{#each polygons.features as feature}
|
|
@@ -131,11 +129,7 @@
|
|
|
131
129
|
>
|
|
132
130
|
<GeoPath
|
|
133
131
|
geojson={feature}
|
|
134
|
-
class={
|
|
135
|
-
layerClass('voronoi-geo-path'),
|
|
136
|
-
'fill-transparent stroke-transparent',
|
|
137
|
-
classes.path
|
|
138
|
-
)}
|
|
132
|
+
class={['lc-voronoi-geo-path', classes.path]}
|
|
139
133
|
onclick={(e) => onclick?.(e, { data: feature.properties.site.data, feature })}
|
|
140
134
|
onpointerenter={(e) =>
|
|
141
135
|
onpointerenter?.(e, { data: feature.properties.site.data, feature })}
|
|
@@ -158,11 +152,7 @@
|
|
|
158
152
|
<CircleClipPath cx={point[0]} cy={point[1]} r={r ?? 0} disabled={disableClip}>
|
|
159
153
|
<Spline
|
|
160
154
|
{pathData}
|
|
161
|
-
class={
|
|
162
|
-
layerClass('voronoi-path'),
|
|
163
|
-
'fill-transparent stroke-transparent',
|
|
164
|
-
classes.path
|
|
165
|
-
)}
|
|
155
|
+
class={['lc-voronoi-path', classes.path]}
|
|
166
156
|
onclick={(e) => onclick?.(e, { data: point.data, point })}
|
|
167
157
|
onpointerenter={(e) => onpointerenter?.(e, { data: point.data, point })}
|
|
168
158
|
onpointermove={(e) => onpointermove?.(e, { data: point.data, point })}
|
|
@@ -178,3 +168,12 @@
|
|
|
178
168
|
{/each}
|
|
179
169
|
{/if}
|
|
180
170
|
</Group>
|
|
171
|
+
|
|
172
|
+
<style>
|
|
173
|
+
@layer components {
|
|
174
|
+
:global(:where(.lc-voronoi-path, .lc-voronoi-geo-path)) {
|
|
175
|
+
fill: transparent;
|
|
176
|
+
stroke: transparent;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
</style>
|