layerchart 0.38.0 → 0.38.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.
- package/dist/components/Chart.svelte +1 -0
- package/dist/components/HitCanvas.svelte +9 -3
- package/dist/components/RadialGradient.svelte +50 -0
- package/dist/components/RadialGradient.svelte.d.ts +33 -0
- package/dist/components/TooltipContext.svelte.d.ts +1 -1
- package/dist/components/TransformContext.svelte +4 -4
- package/dist/components/TransformContext.svelte.d.ts +3 -3
- package/dist/{docs → components}/TransformControls.svelte +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/threshold.js +1 -1
- package/package.json +3 -3
- /package/dist/{docs → components}/TransformControls.svelte.d.ts +0 -0
|
@@ -122,6 +122,7 @@ onMount(() => {
|
|
|
122
122
|
{#key isMounted}
|
|
123
123
|
<TransformContext
|
|
124
124
|
bind:this={transformContext}
|
|
125
|
+
mode={transform?.mode ?? geo?.applyTransform?.length ? 'manual' : 'none'}
|
|
125
126
|
initialTranslate={initialTransform?.translate}
|
|
126
127
|
initialScale={initialTransform?.scale}
|
|
127
128
|
processTranslate={geo
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
<script>import {
|
|
1
|
+
<script>import { createEventDispatcher, getContext, onMount, setContext } from 'svelte';
|
|
2
2
|
import { writable } from 'svelte/store';
|
|
3
3
|
import { scaleCanvas } from 'layercake';
|
|
4
4
|
import { cls } from 'svelte-ux';
|
|
5
5
|
import Canvas from './layout/Canvas.svelte';
|
|
6
|
+
import { transformContext } from './TransformContext.svelte';
|
|
6
7
|
const { width, height } = getContext('LayerCake');
|
|
7
8
|
export let context = undefined;
|
|
8
9
|
/** Show canvas for debugging */
|
|
@@ -31,9 +32,14 @@ function* rgbColorGenerator(step = 500) {
|
|
|
31
32
|
}
|
|
32
33
|
$: colorGenerator = rgbColorGenerator();
|
|
33
34
|
// Reset color generator whenever updated (width/height) so always reusing same colors (and not exhausting)
|
|
34
|
-
|
|
35
|
+
const { translate, scale } = transformContext();
|
|
36
|
+
$: {
|
|
37
|
+
$width;
|
|
38
|
+
$height;
|
|
39
|
+
$translate;
|
|
40
|
+
$scale;
|
|
35
41
|
colorGenerator = rgbColorGenerator();
|
|
36
|
-
}
|
|
42
|
+
}
|
|
37
43
|
const dataByColor = new Map();
|
|
38
44
|
function setColorData(color, data) {
|
|
39
45
|
dataByColor.set(color, data);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script>import { uniqueId } from 'svelte-ux';
|
|
2
|
+
/** Unique id for linearGradient */
|
|
3
|
+
export let id = uniqueId('radialGradient-');
|
|
4
|
+
/** Array array of strings (colors), will equally distributed from 0-100%. If array of tuples, will use first value as the offset, and second as color */
|
|
5
|
+
export let stops = [
|
|
6
|
+
'var(--tw-gradient-from)',
|
|
7
|
+
'var(--tw-gradient-to)',
|
|
8
|
+
];
|
|
9
|
+
export let cx = '50%';
|
|
10
|
+
export let cy = '50%';
|
|
11
|
+
export let fx = cx;
|
|
12
|
+
export let fy = cy;
|
|
13
|
+
export let r = '50%';
|
|
14
|
+
export let fr = '0%';
|
|
15
|
+
/** Indicates how the gradient behaves if it starts or ends inside the bounds of the shape containing the gradient */
|
|
16
|
+
export let spreadMethod = 'pad';
|
|
17
|
+
export let transform = undefined;
|
|
18
|
+
/** Define the coordinate system for attributes (i.e. gradientUnits) */
|
|
19
|
+
export let units = 'objectBoundingBox';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<defs>
|
|
23
|
+
<radialGradient
|
|
24
|
+
{id}
|
|
25
|
+
{cx}
|
|
26
|
+
{cy}
|
|
27
|
+
{fx}
|
|
28
|
+
{fy}
|
|
29
|
+
{r}
|
|
30
|
+
{fr}
|
|
31
|
+
{spreadMethod}
|
|
32
|
+
gradientTransform={transform}
|
|
33
|
+
gradientUnits={units}
|
|
34
|
+
{...$$restProps}
|
|
35
|
+
>
|
|
36
|
+
<slot name="stops">
|
|
37
|
+
{#if stops}
|
|
38
|
+
{#each stops as stop, i}
|
|
39
|
+
{#if Array.isArray(stop)}
|
|
40
|
+
<stop offset={stop[0]} stop-color={stop[1]} />
|
|
41
|
+
{:else}
|
|
42
|
+
<stop offset="{i * (100 / (stops.length - 1))}%" stop-color={stop} />
|
|
43
|
+
{/if}
|
|
44
|
+
{/each}
|
|
45
|
+
{/if}
|
|
46
|
+
</slot>
|
|
47
|
+
</radialGradient>
|
|
48
|
+
</defs>
|
|
49
|
+
|
|
50
|
+
<slot {id} url="url(#{id})" />
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
id?: string | undefined;
|
|
6
|
+
stops?: string[] | [string | number, string][] | undefined;
|
|
7
|
+
cx?: string | undefined;
|
|
8
|
+
cy?: string | undefined;
|
|
9
|
+
fx?: string | undefined;
|
|
10
|
+
fy?: string | undefined;
|
|
11
|
+
r?: string | undefined;
|
|
12
|
+
fr?: string | undefined;
|
|
13
|
+
spreadMethod?: "pad" | "reflect" | "repeat" | undefined;
|
|
14
|
+
transform?: string | null | undefined;
|
|
15
|
+
units?: "objectBoundingBox" | "userSpaceOnUse" | undefined;
|
|
16
|
+
};
|
|
17
|
+
events: {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
};
|
|
20
|
+
slots: {
|
|
21
|
+
stops: {};
|
|
22
|
+
default: {
|
|
23
|
+
id: string;
|
|
24
|
+
url: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type RadialGradientProps = typeof __propDef.props;
|
|
29
|
+
export type RadialGradientEvents = typeof __propDef.events;
|
|
30
|
+
export type RadialGradientSlots = typeof __propDef.slots;
|
|
31
|
+
export default class RadialGradient extends SvelteComponentTyped<RadialGradientProps, RadialGradientEvents, RadialGradientSlots> {
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -14,7 +14,7 @@ declare const __propDef: {
|
|
|
14
14
|
props: {
|
|
15
15
|
/**
|
|
16
16
|
* @type {'bisect-x' | 'bisect-y' | 'band' | 'bisect-band' | 'bounds' | 'voronoi' | 'quadtree' | 'manual'}
|
|
17
|
-
*/ mode?: "bisect-x" | "bisect-y" | "band" | "bisect-band" | "bounds" | "voronoi" | "quadtree" |
|
|
17
|
+
*/ mode?: "manual" | "bisect-x" | "bisect-y" | "band" | "bisect-band" | "bounds" | "voronoi" | "quadtree" | undefined;
|
|
18
18
|
/**
|
|
19
19
|
* @type {'closest' | 'left' | 'right'}
|
|
20
20
|
*/ findTooltipData?: "left" | "right" | "closest" | undefined;
|
|
@@ -33,7 +33,7 @@ export let processTranslate = (x, y, deltaX, deltaY, scale) => {
|
|
|
33
33
|
y: y + deltaY / scale,
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
/** Disable pointer events including move/dragging */
|
|
36
|
+
/** Disable pointer events including move/dragging. Useful for `mode="canvas" but only want zoomTo() interactions */
|
|
37
37
|
export let disablePointer = false;
|
|
38
38
|
/** Action to take during wheel scroll */
|
|
39
39
|
export let scroll = 'none';
|
|
@@ -88,7 +88,7 @@ setTransformContext({
|
|
|
88
88
|
zoomTo,
|
|
89
89
|
});
|
|
90
90
|
function onPointerDown(e) {
|
|
91
|
-
if (disablePointer)
|
|
91
|
+
if (mode === 'none' || disablePointer)
|
|
92
92
|
return;
|
|
93
93
|
e.preventDefault();
|
|
94
94
|
pointerDown = true;
|
|
@@ -125,13 +125,13 @@ function onClick(e) {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
function onDoubleClick(e) {
|
|
128
|
-
if (disablePointer)
|
|
128
|
+
if (mode === 'none' || disablePointer)
|
|
129
129
|
return;
|
|
130
130
|
const point = localPoint(e);
|
|
131
131
|
scaleTo(e.shiftKey ? 0.5 : 2, point);
|
|
132
132
|
}
|
|
133
133
|
function onWheel(e) {
|
|
134
|
-
if (
|
|
134
|
+
if (mode === 'none' || disablePointer || scroll === 'none')
|
|
135
135
|
return;
|
|
136
136
|
e.preventDefault();
|
|
137
137
|
const point = (startPoint = localPoint(e));
|
|
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
import { type Readable, type Writable } from 'svelte/store';
|
|
3
3
|
export declare const transformContextKey: unique symbol;
|
|
4
4
|
export type TransformContextValue = {
|
|
5
|
-
mode: 'canvas' | 'none';
|
|
5
|
+
mode: 'canvas' | 'manual' | 'none';
|
|
6
6
|
scale: Writable<number>;
|
|
7
7
|
translate: Writable<{
|
|
8
8
|
x: number;
|
|
@@ -26,7 +26,7 @@ export declare function transformContext(): TransformContext;
|
|
|
26
26
|
import { motionStore } from '../stores/motionStore.js';
|
|
27
27
|
declare const __propDef: {
|
|
28
28
|
props: {
|
|
29
|
-
mode?: "none" | "canvas" | undefined;
|
|
29
|
+
mode?: "none" | "canvas" | "manual" | undefined;
|
|
30
30
|
translateOnScale?: boolean | undefined;
|
|
31
31
|
spring?: boolean | Parameters<typeof motionStore>[1]['spring'];
|
|
32
32
|
tweened?: boolean | Parameters<typeof motionStore>[1]['tweened'];
|
|
@@ -34,7 +34,7 @@ declare const __propDef: {
|
|
|
34
34
|
x: number;
|
|
35
35
|
y: number;
|
|
36
36
|
}) | undefined;
|
|
37
|
-
/** Disable pointer events including move/dragging */ disablePointer?: boolean | undefined;
|
|
37
|
+
/** Disable pointer events including move/dragging. Useful for `mode="canvas" but only want zoomTo() interactions */ disablePointer?: boolean | undefined;
|
|
38
38
|
/** Action to take during wheel scroll */ scroll?: "none" | "scale" | "translate" | undefined;
|
|
39
39
|
/** Distance/threshold to consider drag vs click (disable click propagation) */ clickDistance?: number | undefined;
|
|
40
40
|
initialTranslate?: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>import { Button, Tooltip, cls } from 'svelte-ux';
|
|
2
2
|
import { mdiArrowULeftTop, mdiMagnifyPlusOutline, mdiMagnifyMinusOutline, mdiImageFilterCenterFocus, } from '@mdi/js';
|
|
3
|
-
import { transformContext } from '
|
|
3
|
+
import { transformContext } from './TransformContext.svelte';
|
|
4
4
|
export let placement = 'top-right';
|
|
5
5
|
export let orientation = 'vertical';
|
|
6
6
|
const transform = transformContext();
|
|
@@ -43,6 +43,7 @@ export { default as Pattern } from './Pattern.svelte';
|
|
|
43
43
|
export { default as Pie } from './Pie.svelte';
|
|
44
44
|
export { default as Point } from './Point.svelte';
|
|
45
45
|
export { default as Points } from './Points.svelte';
|
|
46
|
+
export { default as RadialGradient } from './RadialGradient.svelte';
|
|
46
47
|
export { default as Rect } from './Rect.svelte';
|
|
47
48
|
export { default as RectClipPath } from './RectClipPath.svelte';
|
|
48
49
|
export { default as Rule } from './Rule.svelte';
|
|
@@ -56,6 +57,7 @@ export { default as TooltipContext } from './TooltipContext.svelte';
|
|
|
56
57
|
export { default as TooltipItem } from './TooltipItem.svelte';
|
|
57
58
|
export { default as TooltipSeparator } from './TooltipSeparator.svelte';
|
|
58
59
|
export { default as TransformContext, transformContext } from './TransformContext.svelte';
|
|
60
|
+
export { default as TransformControls } from './TransformControls.svelte';
|
|
59
61
|
export { default as Tree } from './Tree.svelte';
|
|
60
62
|
export { default as Treemap } from './Treemap.svelte';
|
|
61
63
|
export { default as Voronoi } from './Voronoi.svelte';
|
package/dist/components/index.js
CHANGED
|
@@ -44,6 +44,7 @@ export { default as Pattern } from './Pattern.svelte';
|
|
|
44
44
|
export { default as Pie } from './Pie.svelte';
|
|
45
45
|
export { default as Point } from './Point.svelte';
|
|
46
46
|
export { default as Points } from './Points.svelte';
|
|
47
|
+
export { default as RadialGradient } from './RadialGradient.svelte';
|
|
47
48
|
export { default as Rect } from './Rect.svelte';
|
|
48
49
|
export { default as RectClipPath } from './RectClipPath.svelte';
|
|
49
50
|
export { default as Rule } from './Rule.svelte';
|
|
@@ -57,6 +58,7 @@ export { default as TooltipContext } from './TooltipContext.svelte';
|
|
|
57
58
|
export { default as TooltipItem } from './TooltipItem.svelte';
|
|
58
59
|
export { default as TooltipSeparator } from './TooltipSeparator.svelte';
|
|
59
60
|
export { default as TransformContext, transformContext } from './TransformContext.svelte';
|
|
61
|
+
export { default as TransformControls } from './TransformControls.svelte';
|
|
60
62
|
export { default as Tree } from './Tree.svelte';
|
|
61
63
|
export { default as Treemap } from './Treemap.svelte';
|
|
62
64
|
export { default as Voronoi } from './Voronoi.svelte';
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
package/dist/utils/threshold.js
CHANGED
|
@@ -5,7 +5,7 @@ import { scaleTime } from 'd3-scale';
|
|
|
5
5
|
* https://observablehq.com/@d3/d3-bin-time-thresholds
|
|
6
6
|
*/
|
|
7
7
|
export function thresholdTime(n) {
|
|
8
|
-
// TODO: Unable to
|
|
8
|
+
// TODO: Unable to satisfy `ThresholdNumberArrayGenerator<Value extends number>` with `Date`
|
|
9
9
|
return (data, min, max) => {
|
|
10
10
|
return scaleTime().domain([min, max]).ticks(n);
|
|
11
11
|
};
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"author": "Sean Lynch <techniq35@gmail.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "techniq/layerchart",
|
|
7
|
-
"version": "0.38.
|
|
7
|
+
"version": "0.38.2",
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@changesets/cli": "^2.27.5",
|
|
10
10
|
"@mdi/js": "^7.4.47",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@types/d3-scale": "^4.0.8",
|
|
29
29
|
"@types/d3-scale-chromatic": "^3.0.3",
|
|
30
30
|
"@types/d3-shape": "^3.1.6",
|
|
31
|
-
"@types/d3-time": "^3.0.
|
|
31
|
+
"@types/d3-time": "^3.0.3",
|
|
32
32
|
"@types/lodash-es": "^4.17.12",
|
|
33
33
|
"@types/prismjs": "^1.26.4",
|
|
34
34
|
"@types/shapefile": "^0.6.4",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"lodash-es": "^4.17.21",
|
|
88
88
|
"posthog-js": "^1.136.2",
|
|
89
89
|
"shapefile": "^0.6.6",
|
|
90
|
-
"svelte-ux": "^0.66.
|
|
90
|
+
"svelte-ux": "^0.66.4",
|
|
91
91
|
"topojson-client": "^3.1.0"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
File without changes
|