layerchart 0.0.8 → 0.2.0
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/components/Arc.svelte +59 -21
- package/components/Arc.svelte.d.ts +5 -3
- package/components/Group.svelte +3 -3
- package/components/Group.svelte.d.ts +3 -3
- package/components/LinearGradient.svelte +13 -2
- package/components/LinearGradient.svelte.d.ts +3 -2
- package/components/Path.svelte +5 -1
- package/components/Pattern.svelte +13 -0
- package/components/Pattern.svelte.d.ts +21 -0
- package/components/Pie.svelte +88 -0
- package/components/Pie.svelte.d.ts +54 -0
- package/components/Text.svelte +3 -0
- package/docs/Header1.svelte +14 -0
- package/docs/Header1.svelte.d.ts +27 -0
- package/docs/Layout.svelte +42 -8
- package/docs/Layout.svelte.d.ts +10 -3
- package/docs/Preview.svelte +3 -7
- package/package.json +25 -20
package/components/Arc.svelte
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
<script >/*
|
|
2
2
|
TODO:
|
|
3
|
-
- [ ] Chart usage
|
|
4
|
-
- [x] Track on/off and pass props
|
|
5
|
-
- [x] Text configuration / slot?
|
|
6
|
-
- [ ] Pie usage (second dimension?)
|
|
7
|
-
- [x] style / class (gradient, etc)
|
|
8
3
|
- [ ] Allow spring/tweened to be reactive (but ignore value)
|
|
9
4
|
*/
|
|
10
5
|
// https://caniuse.com/#feat=css-conic-gradients
|
|
11
6
|
// https://css-tricks.com/snippets/css/css-conic-gradient/
|
|
12
7
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/conic-gradient
|
|
8
|
+
// https://stackoverflow.com/questions/2465405/svg-angular-gradient
|
|
9
|
+
// https://stackoverflow.com/questions/18206361/svg-multiple-color-on-circle-stroke
|
|
10
|
+
// https://bl.ocks.org/mbostock/4163057
|
|
11
|
+
// https://github.com/d3/d3/issues/2427#issuecomment-100759055
|
|
12
|
+
// https://github.com/mnsht/gradient-path
|
|
13
|
+
// https://svelte.dev/repl/09711e43a1264ba18945d7db7cab9335?version=3.38.2
|
|
14
|
+
// https://codepen.io/simeydotme/pen/rrOEmO/
|
|
15
|
+
import { getContext } from 'svelte';
|
|
13
16
|
import { arc as d3arc } from 'd3-shape';
|
|
14
17
|
import { scaleLinear } from 'd3-scale';
|
|
15
18
|
import { getMotionStore } from '../stores/motionStore';
|
|
@@ -20,30 +23,58 @@ export let value = 0;
|
|
|
20
23
|
let tweened_value = getMotionStore(value, { spring, tweened });
|
|
21
24
|
$: tweened_value.set(value);
|
|
22
25
|
export let domain = [0, 100];
|
|
26
|
+
/**
|
|
27
|
+
* Range [min,max] in degrees. See also startAngle/endAngle
|
|
28
|
+
*/
|
|
23
29
|
export let range = [0, 360]; // degrees
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Start angle in radians
|
|
32
|
+
*/
|
|
33
|
+
export let startAngle = undefined;
|
|
34
|
+
/**
|
|
35
|
+
* End angle in radians
|
|
36
|
+
*/
|
|
37
|
+
export let endAngle = undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Define innerRadius.
|
|
40
|
+
* value >= 1: discrete value
|
|
41
|
+
* value > 0: percent of `outerRadius`
|
|
42
|
+
* value < 0: offset of `outerRadius`
|
|
43
|
+
* default: yRange min
|
|
44
|
+
*/
|
|
45
|
+
export let innerRadius = undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
|
|
48
|
+
*/
|
|
49
|
+
export let outerRadius = undefined;
|
|
50
|
+
export let cornerRadius = 0;
|
|
27
51
|
export let padAngle = 0;
|
|
28
|
-
export let padRadius = 0;
|
|
52
|
+
// export let padRadius = 0;
|
|
29
53
|
export let track = false;
|
|
54
|
+
const { yRange } = getContext('LayerCake');
|
|
30
55
|
$: scale = scaleLinear().domain(domain).range(range);
|
|
31
|
-
$:
|
|
32
|
-
$:
|
|
33
|
-
|
|
56
|
+
$: _outerRadius = outerRadius ?? $yRange[0] / 2;
|
|
57
|
+
$: _innerRadius =
|
|
58
|
+
(innerRadius > 1
|
|
59
|
+
? innerRadius
|
|
60
|
+
: innerRadius > 0
|
|
61
|
+
? _outerRadius * innerRadius
|
|
62
|
+
: innerRadius < 0
|
|
63
|
+
? _outerRadius - innerRadius
|
|
64
|
+
: innerRadius) ?? $yRange[1];
|
|
34
65
|
$: arc = d3arc()
|
|
35
|
-
.innerRadius(
|
|
36
|
-
.outerRadius(
|
|
37
|
-
.startAngle(startAngle)
|
|
38
|
-
.endAngle(
|
|
66
|
+
.innerRadius(_innerRadius)
|
|
67
|
+
.outerRadius(_outerRadius)
|
|
68
|
+
.startAngle(startAngle ?? degreesToRadians(range[0]))
|
|
69
|
+
.endAngle(endAngle ?? degreesToRadians(scale($tweened_value)))
|
|
39
70
|
.cornerRadius(cornerRadius)
|
|
40
71
|
.padAngle(padAngle);
|
|
41
72
|
// .padRadius(padRadius);
|
|
42
73
|
$: trackArc = d3arc()
|
|
43
|
-
.innerRadius(
|
|
44
|
-
.outerRadius(
|
|
45
|
-
.startAngle(startAngle)
|
|
46
|
-
.endAngle(endAngle)
|
|
74
|
+
.innerRadius(_innerRadius)
|
|
75
|
+
.outerRadius(_outerRadius)
|
|
76
|
+
.startAngle(startAngle ?? degreesToRadians(range[0]))
|
|
77
|
+
.endAngle(endAngle ?? degreesToRadians(range[1]))
|
|
47
78
|
.cornerRadius(cornerRadius)
|
|
48
79
|
.padAngle(padAngle);
|
|
49
80
|
// .padRadius(padRadius);
|
|
@@ -66,12 +97,19 @@ $: labelArcBottomOffset = {
|
|
|
66
97
|
y: (outerRadius - boundingBox.height) * -1
|
|
67
98
|
};
|
|
68
99
|
// $: console.log(labelArcBottomOffset)
|
|
100
|
+
/**
|
|
101
|
+
* Offset arc from center
|
|
102
|
+
*/
|
|
103
|
+
export let offset = 0;
|
|
104
|
+
$: angle = (startAngle + endAngle) / 2;
|
|
105
|
+
$: xOffset = Math.sin(angle) * offset;
|
|
106
|
+
$: yOffset = -Math.cos(angle) * offset;
|
|
69
107
|
</script>
|
|
70
108
|
|
|
71
109
|
{#if track}
|
|
72
110
|
<path d={trackArc()} class="track" bind:this={trackArcEl} {...track} />
|
|
73
111
|
{/if}
|
|
74
112
|
|
|
75
|
-
<path d={arc()} {...$$restProps} />
|
|
113
|
+
<path d={arc()} transform="translate({xOffset}, {yOffset})" {...$$restProps} />
|
|
76
114
|
|
|
77
115
|
<slot value={$tweened_value} centroid={trackArcCentroid} {boundingBox} />
|
|
@@ -8,12 +8,14 @@ declare const __propDef: {
|
|
|
8
8
|
value?: number;
|
|
9
9
|
domain?: number[];
|
|
10
10
|
range?: number[];
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
startAngle?: number;
|
|
12
|
+
endAngle?: number;
|
|
13
|
+
innerRadius?: any;
|
|
14
|
+
outerRadius?: any;
|
|
13
15
|
cornerRadius?: number;
|
|
14
16
|
padAngle?: number;
|
|
15
|
-
padRadius?: number;
|
|
16
17
|
track?: boolean | svelte.JSX.SVGProps<SVGPathElement>;
|
|
18
|
+
offset?: number;
|
|
17
19
|
};
|
|
18
20
|
events: {
|
|
19
21
|
[evt: string]: CustomEvent<any>;
|
package/components/Group.svelte
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Translate x
|
|
4
4
|
*/
|
|
5
|
-
export let x;
|
|
5
|
+
export let x = undefined;
|
|
6
6
|
/**
|
|
7
7
|
* Translate x
|
|
8
8
|
*/
|
|
9
|
-
export let y;
|
|
9
|
+
export let y = undefined;
|
|
10
10
|
/**
|
|
11
11
|
* Center within chart
|
|
12
12
|
*/
|
|
13
|
-
export let center;
|
|
13
|
+
export let center = false;
|
|
14
14
|
const { width, height } = getContext('LayerCake');
|
|
15
15
|
let transform = undefined;
|
|
16
16
|
$: if (x != null || y != null) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script >export let id;
|
|
2
2
|
export let from;
|
|
3
|
+
export let via; // TODO: Currently --tw-gradient-via is not the color but the full stops
|
|
3
4
|
export let to;
|
|
4
5
|
export let vertical = false;
|
|
5
6
|
export let x1 = '0%';
|
|
@@ -20,8 +21,18 @@ export let rotate = undefined;
|
|
|
20
21
|
{...$$restProps}
|
|
21
22
|
>
|
|
22
23
|
<slot>
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
{#if from}
|
|
25
|
+
<stop offset="0%" stop-color={from === true ? 'var(--tw-gradient-from)' : from} />
|
|
26
|
+
{/if}
|
|
27
|
+
|
|
28
|
+
{#if via}
|
|
29
|
+
<!-- <stop offset="50%" stop-color={via === true ? 'var(--tw-gradient-via)' : via} /> -->
|
|
30
|
+
<stop offset="50%" stop-color={via} />
|
|
31
|
+
{/if}
|
|
32
|
+
|
|
33
|
+
{#if to}
|
|
34
|
+
<stop offset="100%" stop-color={to === true ? 'var(--tw-gradient-to)' : to} />
|
|
35
|
+
{/if}
|
|
25
36
|
</slot>
|
|
26
37
|
</linearGradient>
|
|
27
38
|
</defs>
|
package/components/Path.svelte
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
<script
|
|
1
|
+
<script >/*
|
|
2
|
+
TODO:
|
|
3
|
+
- [ ] Show path progressively show / animated in on load. Also fix sliding in from left side (at last in from bottom)
|
|
4
|
+
*/
|
|
5
|
+
import { getContext } from 'svelte';
|
|
2
6
|
import { line as d3Line } from 'd3-shape';
|
|
3
7
|
// import { interpolateString } from 'd3-interpolate';
|
|
4
8
|
import { interpolatePath } from 'd3-interpolate-path';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script >// https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern
|
|
2
|
+
// https://airbnb.io/visx/patterns
|
|
3
|
+
// https://github.com/airbnb/visx/tree/master/packages/visx-pattern/src/patterns
|
|
4
|
+
export let id;
|
|
5
|
+
export let width;
|
|
6
|
+
export let height;
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<defs>
|
|
10
|
+
<pattern {id} {width} {height} patternUnits="userSpaceOnUse" {...$$restProps}>
|
|
11
|
+
<slot />
|
|
12
|
+
</pattern>
|
|
13
|
+
</defs>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
id: string;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {
|
|
13
|
+
default: {};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare type PatternProps = typeof __propDef.props;
|
|
17
|
+
export declare type PatternEvents = typeof __propDef.events;
|
|
18
|
+
export declare type PatternSlots = typeof __propDef.slots;
|
|
19
|
+
export default class Pattern extends SvelteComponentTyped<PatternProps, PatternEvents, PatternSlots> {
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script >import { getContext } from 'svelte';
|
|
2
|
+
import { pie as d3pie } from 'd3-shape';
|
|
3
|
+
import Arc from './Arc.svelte';
|
|
4
|
+
import Group from './Group.svelte';
|
|
5
|
+
import { degreesToRadians } from '../utils/math';
|
|
6
|
+
import { getMotionStore } from '../stores/motionStore';
|
|
7
|
+
/*
|
|
8
|
+
TODO:
|
|
9
|
+
- [ ] Offset (always, on hover)
|
|
10
|
+
- [ ] Labels
|
|
11
|
+
- [ ] Multiple nested circles (zScale, or take in data to override context data). See Path/Area/Threshold
|
|
12
|
+
- [ ] Hover events / change innerRadius / outerRadius, etc
|
|
13
|
+
*/
|
|
14
|
+
export let data = undefined; // TODO: Update Type
|
|
15
|
+
/**
|
|
16
|
+
* Range [min,max] in degrees. See also startAngle/endAngle
|
|
17
|
+
*/
|
|
18
|
+
export let range = [0, 360]; // degrees
|
|
19
|
+
/**
|
|
20
|
+
* Start angle in radians
|
|
21
|
+
*/
|
|
22
|
+
export let startAngle = undefined;
|
|
23
|
+
/**
|
|
24
|
+
* End angle in radians
|
|
25
|
+
*/
|
|
26
|
+
export let endAngle = undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Define innerRadius.
|
|
29
|
+
* value >= 1: discrete value
|
|
30
|
+
* value > 0: percent of `outerRadius`
|
|
31
|
+
* value < 0: offset of `outerRadius`
|
|
32
|
+
* default: yRange min
|
|
33
|
+
*/
|
|
34
|
+
export let innerRadius = undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
|
|
37
|
+
*/
|
|
38
|
+
export let outerRadius = undefined;
|
|
39
|
+
export let cornerRadius = 0;
|
|
40
|
+
export let padAngle = 0;
|
|
41
|
+
// export let padRadius = 0;
|
|
42
|
+
export let color = 'black';
|
|
43
|
+
export let spring = undefined;
|
|
44
|
+
export let tweened = undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Offset all arcs from center
|
|
47
|
+
*/
|
|
48
|
+
export let offset = 0;
|
|
49
|
+
const { data: contextData, x, y, xRange, rGet, config } = getContext('LayerCake');
|
|
50
|
+
$: resolved_endAngle = endAngle ?? degreesToRadians($config.xRange ? $xRange[1] : range[1]);
|
|
51
|
+
let tweened_endAngle = getMotionStore(0, { spring, tweened });
|
|
52
|
+
$: tweened_endAngle.set(resolved_endAngle);
|
|
53
|
+
$: pie = d3pie()
|
|
54
|
+
.startAngle(startAngle ?? degreesToRadians($config.xRange ? $xRange[0] : range[0]))
|
|
55
|
+
.endAngle($tweened_endAngle)
|
|
56
|
+
.padAngle(padAngle)
|
|
57
|
+
.value($x);
|
|
58
|
+
$: arcs = pie(data ?? $contextData);
|
|
59
|
+
// $: console.log({ arcs, $yRange });
|
|
60
|
+
function getColor(item, index) {
|
|
61
|
+
if (typeof color === 'function') {
|
|
62
|
+
return color({ value: $y(item), item, index });
|
|
63
|
+
}
|
|
64
|
+
else if ($config.r) {
|
|
65
|
+
return $rGet(item);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return color;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<Group center>
|
|
74
|
+
<slot {arcs}>
|
|
75
|
+
{#each arcs as arc, index}
|
|
76
|
+
<Arc
|
|
77
|
+
startAngle={arc.startAngle}
|
|
78
|
+
endAngle={arc.endAngle}
|
|
79
|
+
padAngle={arc.padAngle}
|
|
80
|
+
{innerRadius}
|
|
81
|
+
{outerRadius}
|
|
82
|
+
{cornerRadius}
|
|
83
|
+
{offset}
|
|
84
|
+
fill={getColor(arc.data, index)}
|
|
85
|
+
/>
|
|
86
|
+
{/each}
|
|
87
|
+
</slot>
|
|
88
|
+
</Group>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { spring as springStore, tweened as tweenedStore } from 'svelte/motion';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
data?: any;
|
|
6
|
+
/**
|
|
7
|
+
* Range [min,max] in degrees. See also startAngle/endAngle
|
|
8
|
+
*/ range?: number[];
|
|
9
|
+
/**
|
|
10
|
+
* Start angle in radians
|
|
11
|
+
*/ startAngle?: number;
|
|
12
|
+
/**
|
|
13
|
+
* End angle in radians
|
|
14
|
+
*/ endAngle?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Define innerRadius.
|
|
17
|
+
* value >= 1: discrete value
|
|
18
|
+
* value > 0: percent of `outerRadius`
|
|
19
|
+
* value < 0: offset of `outerRadius`
|
|
20
|
+
* default: yRange min
|
|
21
|
+
*/ innerRadius?: any;
|
|
22
|
+
/**
|
|
23
|
+
* Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
|
|
24
|
+
*/ outerRadius?: any;
|
|
25
|
+
cornerRadius?: number;
|
|
26
|
+
padAngle?: number;
|
|
27
|
+
color?: string | ((obj: {
|
|
28
|
+
value: any;
|
|
29
|
+
item: any;
|
|
30
|
+
index: number;
|
|
31
|
+
}) => string);
|
|
32
|
+
spring?: boolean | Parameters<typeof springStore>[1];
|
|
33
|
+
tweened?: boolean | Parameters<typeof tweenedStore>[1];
|
|
34
|
+
/**
|
|
35
|
+
* Offset all arcs from center
|
|
36
|
+
*/ offset?: number;
|
|
37
|
+
};
|
|
38
|
+
events: {
|
|
39
|
+
[evt: string]: CustomEvent<any>;
|
|
40
|
+
};
|
|
41
|
+
slots: {
|
|
42
|
+
default: {
|
|
43
|
+
arcs: import("d3-shape").PieArcDatum<number | {
|
|
44
|
+
valueOf(): number;
|
|
45
|
+
}>[];
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export declare type PieProps = typeof __propDef.props;
|
|
50
|
+
export declare type PieEvents = typeof __propDef.events;
|
|
51
|
+
export declare type PieSlots = typeof __propDef.slots;
|
|
52
|
+
export default class Pie extends SvelteComponentTyped<PieProps, PieEvents, PieSlots> {
|
|
53
|
+
}
|
|
54
|
+
export {};
|
package/components/Text.svelte
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
/*
|
|
3
3
|
TODO:
|
|
4
4
|
- [ ] Handle styled text (use <slot /> to measure?)
|
|
5
|
+
- [ ] Simplify by using `alignment-baseline` / `dominant-baseline`, rework multiline or drop support, etc
|
|
6
|
+
- https://svelte.dev/repl/f12d3003313a43ba8a0be53e5786f1c7?version=3.44.3
|
|
7
|
+
- https://observablehq.com/@neocartocnrs/cheat-sheet-on-texts-in-svg
|
|
5
8
|
|
|
6
9
|
Reference:
|
|
7
10
|
- https://bl.ocks.org/mbostock/7555321
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { SectionDivider } from 'svelte-ux';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<!--
|
|
6
|
+
TODO:
|
|
7
|
+
- [ ] Set id based on slot value
|
|
8
|
+
- Needed for #examples, #api, etc
|
|
9
|
+
- Maybe possible to set/get props from markdown/mdsvex
|
|
10
|
+
- Example: `#API { id: 'api' }
|
|
11
|
+
-->
|
|
12
|
+
<SectionDivider {...$$restProps}>
|
|
13
|
+
<slot />
|
|
14
|
+
</SectionDivider>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} Header1Props */
|
|
2
|
+
/** @typedef {typeof __propDef.events} Header1Events */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} Header1Slots */
|
|
4
|
+
export default class Header1 extends SvelteComponentTyped<{
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {
|
|
9
|
+
default: {};
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
export type Header1Props = typeof __propDef.props;
|
|
13
|
+
export type Header1Events = typeof __propDef.events;
|
|
14
|
+
export type Header1Slots = typeof __propDef.slots;
|
|
15
|
+
import { SvelteComponentTyped } from "svelte";
|
|
16
|
+
declare const __propDef: {
|
|
17
|
+
props: {
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {
|
|
24
|
+
default: {};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {};
|
package/docs/Layout.svelte
CHANGED
|
@@ -2,19 +2,53 @@
|
|
|
2
2
|
// Custom components: https://mdsvex.com/docs#custom-components
|
|
3
3
|
import blockquote from './Blockquote.svelte';
|
|
4
4
|
import a from './Link.svelte';
|
|
5
|
+
import h1 from './Header1.svelte';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
// Used by injected info via svelte preprocessor
|
|
8
|
+
import { mdiCodeTags, mdiFileDocumentEditOutline } from '@mdi/js';
|
|
9
|
+
import { Button, Tooltip } from 'svelte-ux';
|
|
10
|
+
|
|
11
|
+
export { a, blockquote, h1 };
|
|
7
12
|
</script>
|
|
8
13
|
|
|
9
14
|
<script>
|
|
10
|
-
import { AppBar } from 'svelte-ux';
|
|
11
|
-
|
|
12
15
|
// frontmatter: https://mdsvex.com/docs#frontmatter-1
|
|
13
|
-
export let
|
|
16
|
+
export let component;
|
|
17
|
+
export let filename;
|
|
18
|
+
export let description;
|
|
14
19
|
</script>
|
|
15
20
|
|
|
16
|
-
|
|
21
|
+
{#if component}
|
|
22
|
+
<div class="flex items-center gap-2">
|
|
23
|
+
<span class="text-2xl font-bold">{component}</span>
|
|
24
|
+
{#if component}
|
|
25
|
+
<Tooltip title="View source">
|
|
26
|
+
<Button
|
|
27
|
+
class="text-black/50"
|
|
28
|
+
icon={mdiCodeTags}
|
|
29
|
+
href="https://github.com/techniq/svelte-ux/blob/master/src/lib/components/{component}.svelte"
|
|
30
|
+
target="_blank"
|
|
31
|
+
/>
|
|
32
|
+
</Tooltip>
|
|
33
|
+
{/if}
|
|
34
|
+
|
|
35
|
+
{#if filename}
|
|
36
|
+
<Tooltip title="Edit this page">
|
|
37
|
+
<Button
|
|
38
|
+
class="text-black/50"
|
|
39
|
+
icon={mdiFileDocumentEditOutline}
|
|
40
|
+
href="https://github.com/techniq/svelte-ux/blob/master/{filename}"
|
|
41
|
+
target="_blank"
|
|
42
|
+
/>
|
|
43
|
+
</Tooltip>
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
{/if}
|
|
47
|
+
|
|
48
|
+
{#if description}
|
|
49
|
+
{description}
|
|
50
|
+
{/if}
|
|
51
|
+
|
|
52
|
+
<slot name="toc" />
|
|
17
53
|
|
|
18
|
-
<
|
|
19
|
-
<slot />
|
|
20
|
-
</main>
|
|
54
|
+
<slot />
|
package/docs/Layout.svelte.d.ts
CHANGED
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
/** @typedef {typeof __propDef.events} LayoutEvents */
|
|
3
3
|
/** @typedef {typeof __propDef.slots} LayoutSlots */
|
|
4
4
|
export default class Layout extends SvelteComponentTyped<{
|
|
5
|
-
|
|
5
|
+
component: any;
|
|
6
|
+
filename: any;
|
|
7
|
+
description: any;
|
|
6
8
|
}, {
|
|
7
9
|
[evt: string]: CustomEvent<any>;
|
|
8
10
|
}, {
|
|
11
|
+
toc: {};
|
|
9
12
|
default: {};
|
|
10
13
|
}> {
|
|
11
14
|
}
|
|
@@ -14,16 +17,20 @@ export type LayoutEvents = typeof __propDef.events;
|
|
|
14
17
|
export type LayoutSlots = typeof __propDef.slots;
|
|
15
18
|
import a from "./Link.svelte";
|
|
16
19
|
import blockquote from "./Blockquote.svelte";
|
|
20
|
+
import h1 from "./Header1.svelte";
|
|
17
21
|
import { SvelteComponentTyped } from "svelte";
|
|
18
22
|
declare const __propDef: {
|
|
19
23
|
props: {
|
|
20
|
-
|
|
24
|
+
component: any;
|
|
25
|
+
filename: any;
|
|
26
|
+
description: any;
|
|
21
27
|
};
|
|
22
28
|
events: {
|
|
23
29
|
[evt: string]: CustomEvent<any>;
|
|
24
30
|
};
|
|
25
31
|
slots: {
|
|
32
|
+
toc: {};
|
|
26
33
|
default: {};
|
|
27
34
|
};
|
|
28
35
|
};
|
|
29
|
-
export { a, blockquote };
|
|
36
|
+
export { a, blockquote, h1 };
|
package/docs/Preview.svelte
CHANGED
|
@@ -12,12 +12,8 @@ $: displayCode = highlight ? Prism.highlight(code, Prism.languages.svelte, 'svel
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
14
|
{#if displayCode}
|
|
15
|
-
<pre
|
|
16
|
-
class="language-{language}
|
|
17
|
-
|
|
18
|
-
<code class="language-{language}">
|
|
19
|
-
{@html displayCode}
|
|
20
|
-
</code>
|
|
21
|
-
</pre>
|
|
15
|
+
<pre class="language-{language} rounded" style="margin: 0; white-space: normal;">
|
|
16
|
+
<code class="language-{language}">{@html displayCode}</code>
|
|
17
|
+
</pre>
|
|
22
18
|
{/if}
|
|
23
19
|
</div>
|
package/package.json
CHANGED
|
@@ -3,40 +3,42 @@
|
|
|
3
3
|
"author": "Sean Lynch <techniq35@gmail.com>",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "techniq/layerchart",
|
|
6
|
-
"version": "0.0
|
|
6
|
+
"version": "0.2.0",
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"@sveltejs/adapter-static": "^1.0.0-next.
|
|
9
|
-
"@sveltejs/kit": "^1.0.0-next.
|
|
8
|
+
"@sveltejs/adapter-static": "^1.0.0-next.29",
|
|
9
|
+
"@sveltejs/kit": "^1.0.0-next.303",
|
|
10
|
+
"@tailwindcss/typography": "^0.5.2",
|
|
10
11
|
"@types/d3-array": "^3.0.2",
|
|
11
12
|
"@types/d3-scale": "^4.0.2",
|
|
12
13
|
"@types/d3-shape": "^3.0.2",
|
|
13
|
-
"@types/lodash-es": "^4.17.
|
|
14
|
-
"autoprefixer": "^10.4.
|
|
15
|
-
"mdsvex": "^0.
|
|
16
|
-
"prettier": "^2.
|
|
17
|
-
"prettier-plugin-svelte": "^2.
|
|
14
|
+
"@types/lodash-es": "^4.17.6",
|
|
15
|
+
"autoprefixer": "^10.4.4",
|
|
16
|
+
"mdsvex": "^0.10.5",
|
|
17
|
+
"prettier": "^2.6.1",
|
|
18
|
+
"prettier-plugin-svelte": "^2.6.0",
|
|
18
19
|
"prism-themes": "^1.9.0",
|
|
19
|
-
"svelte": "^3.
|
|
20
|
-
"svelte-check": "^2.
|
|
21
|
-
"svelte-preprocess": "^4.
|
|
22
|
-
"svelte2tsx": "^0.
|
|
23
|
-
"tailwindcss": "^
|
|
20
|
+
"svelte": "^3.46.6",
|
|
21
|
+
"svelte-check": "^2.4.6",
|
|
22
|
+
"svelte-preprocess": "^4.10.4",
|
|
23
|
+
"svelte2tsx": "^0.5.6",
|
|
24
|
+
"tailwindcss": "^3.0.23",
|
|
24
25
|
"tailwindcss-elevation": "^1.0.1",
|
|
25
26
|
"tslib": "^2.3.1",
|
|
26
|
-
"typescript": "^4.
|
|
27
|
-
"unist-util-visit": "^4.1.0"
|
|
27
|
+
"typescript": "^4.6.3",
|
|
28
|
+
"unist-util-visit": "^4.1.0",
|
|
29
|
+
"vite-plugin-sveld": "^1.0.3"
|
|
28
30
|
},
|
|
29
31
|
"type": "module",
|
|
30
32
|
"dependencies": {
|
|
31
|
-
"@mdi/js": "^6.
|
|
33
|
+
"@mdi/js": "^6.6.96",
|
|
32
34
|
"d3-array": "^3.1.1",
|
|
33
35
|
"d3-interpolate-path": "^2.2.3",
|
|
34
36
|
"d3-scale": "^4.0.2",
|
|
35
|
-
"d3-shape": "^3.0
|
|
36
|
-
"date-fns": "^2.
|
|
37
|
-
"layercake": "^
|
|
37
|
+
"d3-shape": "^3.1.0",
|
|
38
|
+
"date-fns": "^2.28.0",
|
|
39
|
+
"layercake": "^6.1.0",
|
|
38
40
|
"lodash-es": "^4.17.21",
|
|
39
|
-
"svelte-ux": "^0.
|
|
41
|
+
"svelte-ux": "^0.3.2"
|
|
40
42
|
},
|
|
41
43
|
"exports": {
|
|
42
44
|
"./package.json": "./package.json",
|
|
@@ -57,6 +59,8 @@
|
|
|
57
59
|
"./components/Line.svelte": "./components/Line.svelte",
|
|
58
60
|
"./components/LinearGradient.svelte": "./components/LinearGradient.svelte",
|
|
59
61
|
"./components/Path.svelte": "./components/Path.svelte",
|
|
62
|
+
"./components/Pattern.svelte": "./components/Pattern.svelte",
|
|
63
|
+
"./components/Pie.svelte": "./components/Pie.svelte",
|
|
60
64
|
"./components/Points.svelte": "./components/Points.svelte",
|
|
61
65
|
"./components/Rect.svelte": "./components/Rect.svelte",
|
|
62
66
|
"./components/Text.svelte": "./components/Text.svelte",
|
|
@@ -65,6 +69,7 @@
|
|
|
65
69
|
"./components": "./components/index.js",
|
|
66
70
|
"./docs/Blockquote.svelte": "./docs/Blockquote.svelte",
|
|
67
71
|
"./docs/Code.svelte": "./docs/Code.svelte",
|
|
72
|
+
"./docs/Header1.svelte": "./docs/Header1.svelte",
|
|
68
73
|
"./docs/Layout.svelte": "./docs/Layout.svelte",
|
|
69
74
|
"./docs/Link.svelte": "./docs/Link.svelte",
|
|
70
75
|
"./docs/Preview.svelte": "./docs/Preview.svelte",
|