@rokkit/chart 1.0.0-next.124 → 1.0.0-next.127
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/README.md +1 -1
- package/package.json +3 -3
- package/src/Plot/Bar.svelte +4 -3
- package/src/Plot/Root.svelte +8 -15
- package/src/Texture.svelte +1 -7
- package/src/elements/Bar.svelte +20 -16
- package/src/elements/ContinuousLegend.svelte +19 -15
- package/src/elements/DefinePatterns.svelte +9 -7
- package/src/elements/DiscreteLegend.svelte +12 -10
- package/src/elements/Label.svelte +11 -9
- package/src/elements/SymbolGrid.svelte +11 -7
- package/src/patterns/Brick.svelte +3 -5
- package/src/patterns/Circles.svelte +11 -11
- package/src/patterns/CrossHatch.svelte +3 -5
- package/src/patterns/CurvedWave.svelte +1 -3
- package/src/patterns/Dots.svelte +13 -12
- package/src/patterns/OutlineCircles.svelte +4 -6
- package/src/patterns/Tile.svelte +3 -4
- package/src/patterns/Triangles.svelte +3 -5
- package/src/patterns/Waves.svelte +2 -6
- package/src/patterns/paths/NamedPattern.svelte +2 -5
- package/src/symbols/RoundedSquare.svelte +7 -11
- package/src/symbols/Shape.svelte +8 -15
- package/src/template/Texture.svelte +5 -8
- package/src/template/shapes/Circles.svelte +3 -6
- package/src/template/shapes/Lines.svelte +3 -6
- package/src/template/shapes/Path.svelte +2 -5
- package/src/template/shapes/Polygons.svelte +2 -11
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rokkit/chart",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.127",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Data-driven chart components",
|
|
6
6
|
"author": "Jerry Thomas <me@jerrythomas.name>",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"@rokkit/core": "latest",
|
|
36
36
|
"@rokkit/data": "latest",
|
|
37
37
|
"@rokkit/states": "latest",
|
|
38
|
-
"bits-ui": "^2.10.0",
|
|
39
38
|
"d3-array": "^3.2.4",
|
|
39
|
+
"d3-format": "^3.1.2",
|
|
40
40
|
"d3-axis": "^3.0.0",
|
|
41
41
|
"d3-scale": "^4.0.2",
|
|
42
42
|
"d3-scale-chromatic": "^3.1.0",
|
|
43
43
|
"d3-selection": "^3.0.0",
|
|
44
44
|
"d3-transition": "^3.0.1",
|
|
45
|
-
"ramda": "^0.
|
|
45
|
+
"ramda": "^0.32.0"
|
|
46
46
|
}
|
|
47
47
|
}
|
package/src/Plot/Bar.svelte
CHANGED
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
{@const barY = initialY > 0 ? brewer.getDimensions().innerHeight : bar.y}
|
|
61
61
|
{@const barHeight = initialHeight > 0 ? 0 : bar.height}
|
|
62
62
|
|
|
63
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_interactions, a11y_click_events_have_key_events -->
|
|
63
64
|
<rect
|
|
64
65
|
class="bar"
|
|
65
66
|
x={bar.x}
|
|
@@ -68,11 +69,11 @@
|
|
|
68
69
|
height={barHeight}
|
|
69
70
|
fill={bar.color}
|
|
70
71
|
{opacity}
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
onclick={(event) => handleClick(event, bar)}
|
|
73
|
+
onmouseenter={(event) => {
|
|
73
74
|
event.target.setAttribute('opacity', Math.min(opacity + 0.2, 1))
|
|
74
75
|
}}
|
|
75
|
-
|
|
76
|
+
onmouseleave={(event) => {
|
|
76
77
|
event.target.setAttribute('opacity', opacity)
|
|
77
78
|
}}
|
|
78
79
|
style="transition: y {animationDuration}ms ease, height {animationDuration}ms ease;"
|
package/src/Plot/Root.svelte
CHANGED
|
@@ -9,18 +9,16 @@
|
|
|
9
9
|
margin = { top: 20, right: 30, bottom: 40, left: 50 },
|
|
10
10
|
fill = null,
|
|
11
11
|
responsive = true,
|
|
12
|
-
animationDuration = 300
|
|
12
|
+
animationDuration = 300,
|
|
13
|
+
children
|
|
13
14
|
} = $props()
|
|
14
15
|
|
|
15
16
|
// Create chart brewer instance
|
|
16
|
-
let brewer = $state(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
animationDuration
|
|
22
|
-
})
|
|
23
|
-
)
|
|
17
|
+
let brewer = $state(new ChartBrewer())
|
|
18
|
+
|
|
19
|
+
$effect(() => {
|
|
20
|
+
brewer.setDimensions({ width, height, margin })
|
|
21
|
+
})
|
|
24
22
|
|
|
25
23
|
// Chart dimensions derived from brewer
|
|
26
24
|
let dimensions = $derived(brewer.getDimensions())
|
|
@@ -38,11 +36,6 @@
|
|
|
38
36
|
brewer.createScales()
|
|
39
37
|
})
|
|
40
38
|
|
|
41
|
-
// Update chart dimensions when props change
|
|
42
|
-
$effect(() => {
|
|
43
|
-
brewer.setDimensions({ width, height, margin })
|
|
44
|
-
})
|
|
45
|
-
|
|
46
39
|
// Provide chart context to child components
|
|
47
40
|
setContext('chart-brewer', brewer)
|
|
48
41
|
|
|
@@ -91,7 +84,7 @@
|
|
|
91
84
|
transform="translate({dimensions.margin.left}, {dimensions.margin.top})"
|
|
92
85
|
data-plot-canvas
|
|
93
86
|
>
|
|
94
|
-
|
|
87
|
+
{@render children?.()}
|
|
95
88
|
</g>
|
|
96
89
|
</svg>
|
|
97
90
|
</div>
|
package/src/Texture.svelte
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let path
|
|
4
|
-
export let fill = 'currentColor'
|
|
5
|
-
export let stroke = 'currentColor'
|
|
6
|
-
export let thickness = 0.5
|
|
7
|
-
export let patternUnits = 'userSpaceOnUse'
|
|
8
|
-
export let size = 10
|
|
2
|
+
let { id, path, fill = 'currentColor', stroke = 'currentColor', thickness = 0.5, patternUnits = 'userSpaceOnUse', size = 10 } = $props()
|
|
9
3
|
</script>
|
|
10
4
|
|
|
11
5
|
<pattern {id} {patternUnits} width={size} height={size}>
|
package/src/elements/Bar.svelte
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { format } from 'd3-format'
|
|
3
|
+
import { get } from 'svelte/store'
|
|
3
4
|
import Label from './Label.svelte'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
let {
|
|
7
|
+
rank,
|
|
8
|
+
value,
|
|
9
|
+
name,
|
|
10
|
+
formatString = '.1%',
|
|
11
|
+
scales,
|
|
12
|
+
height = 60,
|
|
13
|
+
fill,
|
|
14
|
+
spaceBetween = 5
|
|
15
|
+
} = $props()
|
|
13
16
|
|
|
14
17
|
const textHeight = 16
|
|
15
18
|
const charWidth = 12
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
let y = $derived(rank * (height + spaceBetween))
|
|
20
|
+
let width = $derived(get(scales).x(value))
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
let textWidth = $derived(name.length * charWidth)
|
|
23
|
+
let textOffset = $derived(width <= textWidth ? width + charWidth : width)
|
|
24
|
+
let textAnchor = $derived(textOffset > width ? 'start' : 'end')
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
let formattedValue = $derived(format(formatString)(value))
|
|
27
|
+
let xOrigin = $derived(get(scales).x(0))
|
|
24
28
|
</script>
|
|
25
29
|
|
|
26
|
-
<rect x={
|
|
27
|
-
<rect x={
|
|
30
|
+
<rect x={xOrigin} {y} {width} {height} {fill} opacity={0.5} />
|
|
31
|
+
<rect x={xOrigin} {y} width={5} {height} {fill} />
|
|
28
32
|
<Label x={width} y={y + textHeight + 8} anchor={textAnchor} text={name} />
|
|
29
33
|
<Label x={width} y={y + height - 14} anchor={textAnchor} text={formattedValue} small />
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { scaleLinear } from 'd3-scale'
|
|
3
|
-
// import { id as uniqueId } from '@rokkit/core'
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
let {
|
|
5
|
+
x = 0,
|
|
6
|
+
y = 0,
|
|
7
|
+
textSize = 5,
|
|
8
|
+
height = 10,
|
|
9
|
+
width = 100,
|
|
10
|
+
tickCount = 5,
|
|
11
|
+
scale,
|
|
12
|
+
id = 'legend'
|
|
13
|
+
} = $props()
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
let scaleTicks = $derived(
|
|
16
|
+
scaleLinear()
|
|
17
|
+
.range([x, x + 100])
|
|
18
|
+
.domain(scale.domain())
|
|
19
|
+
)
|
|
20
|
+
let ticks = $derived(
|
|
21
|
+
scale.ticks.apply(scale, [tickCount]).map((d) => ({ x: scaleTicks(d), label: d }))
|
|
22
|
+
)
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
// $: id = uniqueId('legend-')
|
|
24
|
+
let colors = $derived(scale.range())
|
|
21
25
|
</script>
|
|
22
26
|
|
|
23
27
|
<defs>
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { uniq } from 'ramda'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
let {
|
|
5
|
+
size = 10,
|
|
6
|
+
patternUnits = 'userSpaceOnUse',
|
|
7
|
+
/** @type {Array<import('./types').Pattern>} */
|
|
8
|
+
patterns = []
|
|
9
|
+
} = $props()
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
let names = $derived(uniq(patterns.map(({ id }) => id)))
|
|
10
12
|
</script>
|
|
11
13
|
|
|
12
14
|
{#if names.length < patterns.length}
|
|
13
15
|
<error> Patterns should be an array and should have unique names for each pattern </error>
|
|
14
16
|
{:else if patterns.length > 0}
|
|
15
17
|
<defs>
|
|
16
|
-
{#each patterns as { id, component, fill, stroke }, index (index)}
|
|
18
|
+
{#each patterns as { id, component: Component, fill, stroke }, index (index)}
|
|
17
19
|
<pattern {id} {patternUnits} width={size} height={size}>
|
|
18
|
-
<
|
|
20
|
+
<Component {size} {fill} {stroke} />
|
|
19
21
|
</pattern>
|
|
20
22
|
{/each}
|
|
21
23
|
</defs>
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
let {
|
|
3
|
+
x = 0,
|
|
4
|
+
y = 0,
|
|
5
|
+
textSize = 5,
|
|
6
|
+
size = 10,
|
|
7
|
+
space = 2,
|
|
8
|
+
padding = 5,
|
|
9
|
+
scale,
|
|
10
|
+
tickCount = 10
|
|
11
|
+
} = $props()
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
let sizeWithSpace = $derived(size + space)
|
|
14
|
+
let ticks = $derived(scale.ticks.apply(scale, [tickCount]))
|
|
13
15
|
</script>
|
|
14
16
|
|
|
15
17
|
{#each ticks as tick, i (i)}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
let {
|
|
3
|
+
x,
|
|
4
|
+
y,
|
|
5
|
+
text,
|
|
6
|
+
angle = 0,
|
|
7
|
+
small = false,
|
|
8
|
+
anchor = 'middle'
|
|
9
|
+
} = $props()
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
let transform = $derived(`translate(${x},${y}) rotate(${angle})`)
|
|
12
|
+
let validAnchor = $derived(['start', 'middle', 'end'].includes(anchor) ? anchor : 'middle')
|
|
11
13
|
</script>
|
|
12
14
|
|
|
13
|
-
<text class="label" class:small text-anchor={
|
|
15
|
+
<text class="label" class:small text-anchor={validAnchor} {transform}>{text}</text>
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
import { get } from 'svelte/store'
|
|
2
3
|
import { swatch, swatchGrid } from '../old_lib'
|
|
3
4
|
import Symbol from '../Symbol.svelte'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
let {
|
|
7
|
+
base = 'teal',
|
|
8
|
+
size = 4,
|
|
9
|
+
shade = 600
|
|
10
|
+
} = $props()
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
let swatchValue = $derived(get(swatch))
|
|
13
|
+
let grid = $derived(swatchGrid(swatchValue.keys.symbol.length, size, 10))
|
|
10
14
|
</script>
|
|
11
15
|
|
|
12
16
|
<svg viewBox="0 0 {grid.width} {grid.height}">
|
|
@@ -15,9 +19,9 @@
|
|
|
15
19
|
{x}
|
|
16
20
|
{y}
|
|
17
21
|
size={r * 2}
|
|
18
|
-
name={
|
|
19
|
-
fill={
|
|
20
|
-
stroke={
|
|
22
|
+
name={swatchValue.keys.symbol[index]}
|
|
23
|
+
fill={swatchValue.palette[base][shade]}
|
|
24
|
+
stroke={swatchValue.palette[base][shade]}
|
|
21
25
|
/>
|
|
22
26
|
{/each}
|
|
23
27
|
</svg>
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let thickness = 0.5
|
|
4
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor' } = $props()
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
let lines = $derived([
|
|
7
5
|
{ x1: 0, y1: 0.25 * size, x2: 0.5 * size, y2: 0.25 * size },
|
|
8
6
|
{ x1: 0.5 * size, y1: 0.75 * size, x2: size, y2: 0.75 * size },
|
|
9
7
|
{ x1: 0, y1: 0, x2: 0, y2: size },
|
|
10
8
|
{ x1: size, y1: 0, x2: size, y2: size },
|
|
11
9
|
{ x1: 0.5 * size, y1: 0, x2: 0.5 * size, y2: size }
|
|
12
|
-
]
|
|
10
|
+
])
|
|
13
11
|
</script>
|
|
14
12
|
|
|
15
13
|
{#each lines as line, index (index)}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let fill = 'currentColor'
|
|
4
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { size = 10, fill = 'currentColor', stroke = 'currentColor' } = $props()
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
let data = $derived(
|
|
5
|
+
[
|
|
6
|
+
{ cx: 0, cy: 0, r: 0.5 },
|
|
7
|
+
{ cx: 1, cy: 1, r: 0.5 }
|
|
8
|
+
].map(({ cx, cy, r }) => ({
|
|
9
|
+
cx: cx * size,
|
|
10
|
+
cy: cy * size,
|
|
11
|
+
r: r * size
|
|
12
|
+
}))
|
|
13
|
+
)
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
{#each data as { cx, cy, r }, index (index)}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let thickness = 0.5
|
|
4
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor' } = $props()
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
let lines = $derived([
|
|
7
5
|
{ x1: 0, y1: 0, x2: size, y2: size },
|
|
8
6
|
{ x1: 0, y1: size, x2: size, y2: 0 }
|
|
9
|
-
]
|
|
7
|
+
])
|
|
10
8
|
</script>
|
|
11
9
|
|
|
12
10
|
{#each lines as line, index (index)}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import NamedPattern from './paths/NamedPattern.svelte'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export let thickness = 0.5
|
|
6
|
-
export let stroke = 'currentColor'
|
|
4
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor' } = $props()
|
|
7
5
|
</script>
|
|
8
6
|
|
|
9
7
|
<NamedPattern {size} {thickness} {stroke} name="curvedWave" />
|
package/src/patterns/Dots.svelte
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let fill = 'currentColor'
|
|
2
|
+
let { size = 10, fill = 'currentColor' } = $props()
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
let data = $derived(
|
|
5
|
+
[
|
|
6
|
+
{ cx: 0.2 * size, cy: 0.2 * size },
|
|
7
|
+
{ cx: 0.4 * size, cy: 0.4 * size },
|
|
8
|
+
{ cx: 0.6 * size, cy: 0.6 * size },
|
|
9
|
+
{ cx: 0.8 * size, cy: 0.8 * size },
|
|
10
|
+
{ cx: 0.8 * size, cy: 0.2 * size },
|
|
11
|
+
{ cx: 0.6 * size, cy: 0.4 * size },
|
|
12
|
+
{ cx: 0.4 * size, cy: 0.6 * size },
|
|
13
|
+
{ cx: 0.2 * size, cy: 0.8 * size }
|
|
14
|
+
].map((x) => ({ ...x, r: 0.08 * size }))
|
|
15
|
+
)
|
|
15
16
|
</script>
|
|
16
17
|
|
|
17
18
|
{#each data as { cx, cy, r }, index (index)}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let fill = 'currentColor'
|
|
4
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { size = 10, fill = 'currentColor', stroke = 'currentColor' } = $props()
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
let centres = $derived([
|
|
7
5
|
{ cx: 0, cy: 0 },
|
|
8
6
|
{ cx: size, cy: size }
|
|
9
|
-
]
|
|
10
|
-
|
|
7
|
+
])
|
|
8
|
+
let r = $derived(0.5 * size)
|
|
11
9
|
</script>
|
|
12
10
|
|
|
13
11
|
{#each centres as { cx, cy }, index (index)}
|
package/src/patterns/Tile.svelte
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
const thickness = 0.5
|
|
3
|
-
|
|
4
|
-
export let stroke = 'currentColor'
|
|
3
|
+
let { size = 10, stroke = 'currentColor' } = $props()
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
let lines = $derived([
|
|
7
6
|
{ x1: 0, y1: 0.25 * size, x2: 0.5 * size, y2: 0.25 * size },
|
|
8
7
|
{ x1: 0.5 * size, y1: 0.75 * size, x2: size, y2: 0.75 * size },
|
|
9
8
|
{ x1: 0, y1: 0, x2: 0, y2: size },
|
|
10
9
|
{ x1: size, y1: 0, x2: size, y2: size },
|
|
11
10
|
{ x1: 0.5 * size, y1: 0, x2: 0.5 * size, y2: size }
|
|
12
|
-
]
|
|
11
|
+
])
|
|
13
12
|
</script>
|
|
14
13
|
|
|
15
14
|
{#each lines as line, index (index)}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let fill = 'currentColor'
|
|
4
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { size = 10, fill = 'currentColor', stroke = 'currentColor' } = $props()
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
let polygons = $derived([
|
|
7
5
|
[0, 0.5 * size, 0.5 * size, size, 0, size],
|
|
8
6
|
[0.5 * size, 0, 0, 0, 0, 0.5 * size],
|
|
9
7
|
[size, 0, 0.5 * size, 0.5 * size, size, size]
|
|
10
|
-
]
|
|
8
|
+
])
|
|
11
9
|
</script>
|
|
12
10
|
|
|
13
11
|
{#each polygons as points, index (index)}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { scaledPath } from '@rokkit/core'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export let thickness = 0.5
|
|
6
|
-
export let stroke = 'currentColor'
|
|
7
|
-
export let fill = 'none'
|
|
8
|
-
export let data = []
|
|
4
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor', fill = 'none', data = [] } = $props()
|
|
9
5
|
|
|
10
|
-
|
|
6
|
+
let d = $derived(scaledPath(size, data))
|
|
11
7
|
</script>
|
|
12
8
|
|
|
13
9
|
<path {d} {stroke} stroke-width={thickness} {fill} />
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { patterns } from './constants'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export let thickness = 0.5
|
|
6
|
-
export let stroke = 'currentColor'
|
|
7
|
-
export let name = 'cross-hatch'
|
|
4
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor', name = 'cross-hatch' } = $props()
|
|
8
5
|
|
|
9
|
-
|
|
6
|
+
let d = $derived(patterns[name](size))
|
|
10
7
|
</script>
|
|
11
8
|
|
|
12
9
|
<path {d} {stroke} stroke-width={thickness} fill="none" />
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let y = 0
|
|
4
|
-
export let size = 1
|
|
5
|
-
export let fill = 'currentColor'
|
|
6
|
-
export let stroke = 'currentColor'
|
|
2
|
+
let { x = 0, y = 0, size = 1, fill = 'currentColor', stroke = 'currentColor', onclick, onmouseover, onmouseleave, onfocus, ...restProps } = $props()
|
|
7
3
|
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
let r = $derived(size * 3.534)
|
|
5
|
+
let props = $derived({ rx: r * 0.1, ry: r * 0.1, ...restProps })
|
|
10
6
|
</script>
|
|
11
7
|
|
|
12
8
|
<rect
|
|
@@ -18,9 +14,9 @@
|
|
|
18
14
|
{stroke}
|
|
19
15
|
{...props}
|
|
20
16
|
role="button"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
{onclick}
|
|
18
|
+
{onmouseover}
|
|
19
|
+
{onmouseleave}
|
|
20
|
+
{onfocus}
|
|
25
21
|
tabindex="0"
|
|
26
22
|
/>
|
package/src/symbols/Shape.svelte
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { namedShapes } from './constants'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export let y = 0
|
|
6
|
-
export let size = 1
|
|
7
|
-
export let fill = 'none'
|
|
8
|
-
export let stroke = 'currentColor'
|
|
9
|
-
export let thickness = 1
|
|
4
|
+
let { x = 0, y = 0, size = 1, fill = 'none', stroke = 'currentColor', thickness = 1, name = 'circle', onclick, onmouseover, onmouseleave, onfocus, onblur } = $props()
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
$: d = name in namedShapes ? namedShapes[name](size) : namedShapes['circle'](size)
|
|
6
|
+
let d = $derived(name in namedShapes ? namedShapes[name](size) : namedShapes['circle'](size))
|
|
14
7
|
</script>
|
|
15
8
|
|
|
16
|
-
<!-- svelte-ignore
|
|
9
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
17
10
|
<path
|
|
18
11
|
{d}
|
|
19
12
|
{fill}
|
|
@@ -22,10 +15,10 @@
|
|
|
22
15
|
stroke-width={thickness}
|
|
23
16
|
fill-rule="evenodd"
|
|
24
17
|
role="button"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
{onclick}
|
|
19
|
+
{onmouseover}
|
|
20
|
+
{onmouseleave}
|
|
21
|
+
{onfocus}
|
|
22
|
+
{onblur}
|
|
30
23
|
tabindex="0"
|
|
31
24
|
/>
|
|
@@ -3,14 +3,11 @@
|
|
|
3
3
|
import * as templates from './shapes'
|
|
4
4
|
import { pick } from 'ramda'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
export let fill = 'none'
|
|
8
|
-
export let stroke = 'none'
|
|
9
|
-
export let thickness = 0.5
|
|
10
|
-
export let name = 'Waves'
|
|
6
|
+
let { size = 10, fill = 'none', stroke = 'none', thickness = 0.5, name = 'Waves' } = $props()
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
let pattern = $derived(library[name])
|
|
9
|
+
let props = $derived(pick(pattern.allowed ?? [], { fill, stroke, thickness }))
|
|
10
|
+
let Component = $derived(templates[pattern.component])
|
|
14
11
|
</script>
|
|
15
12
|
|
|
16
|
-
<
|
|
13
|
+
<Component {size} {...props} data={pattern.data} />
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let fill = 'currentColor'
|
|
4
|
-
export let stroke = 'currentColor'
|
|
5
|
-
export let data
|
|
2
|
+
let { size = 10, fill = 'currentColor', stroke = 'currentColor', data } = $props()
|
|
6
3
|
|
|
7
|
-
|
|
4
|
+
let circles = $derived(data.map(({ cx, cy, r }) => ({
|
|
8
5
|
cx: cx * size,
|
|
9
6
|
cy: cy * size,
|
|
10
7
|
r: r * size
|
|
11
|
-
}))
|
|
8
|
+
})))
|
|
12
9
|
</script>
|
|
13
10
|
|
|
14
11
|
{#each circles as { cx, cy, r }, index (index)}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let thickness = 0.5
|
|
4
|
-
export let stroke = 'currentColor'
|
|
5
|
-
export let data = []
|
|
2
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor', data = [] } = $props()
|
|
6
3
|
|
|
7
|
-
|
|
4
|
+
let lines = $derived(data.map(({ x1, y1, x2, y2 }) => ({
|
|
8
5
|
x1: x1 * size,
|
|
9
6
|
y1: y1 * size,
|
|
10
7
|
x2: x2 * size,
|
|
11
8
|
y2: y2 * size
|
|
12
|
-
}))
|
|
9
|
+
})))
|
|
13
10
|
</script>
|
|
14
11
|
|
|
15
12
|
{#each lines as line, index (index)}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { scaledPath } from '@rokkit/core'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export let thickness = 0.5
|
|
6
|
-
export let stroke = 'currentColor'
|
|
7
|
-
export let data = []
|
|
4
|
+
let { size = 10, thickness = 0.5, stroke = 'currentColor', data = [] } = $props()
|
|
8
5
|
|
|
9
|
-
|
|
6
|
+
let d = $derived(scaledPath(size, data))
|
|
10
7
|
</script>
|
|
11
8
|
|
|
12
9
|
<path {d} {stroke} stroke-width={thickness} fill="none" />
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
export let thickness = 0.5
|
|
4
|
-
export let fill = 'currentColor'
|
|
5
|
-
export let stroke = 'currentColor'
|
|
6
|
-
export let data = []
|
|
2
|
+
let { size = 10, thickness = 0.5, fill = 'currentColor', stroke = 'currentColor', data = [] } = $props()
|
|
7
3
|
|
|
8
|
-
|
|
9
|
-
// [
|
|
10
|
-
// [0, 0.5 * size, 0.5 * size, size, 0, size],
|
|
11
|
-
// [0.5 * size, 0, 0, 0, 0, 0.5 * size],
|
|
12
|
-
// [size, 0, 0.5 * size, 0.5 * size, size, size]
|
|
13
|
-
// ]
|
|
4
|
+
let polygons = $derived(data.map((points) => points.map((point) => point * size).join(', ')))
|
|
14
5
|
</script>
|
|
15
6
|
|
|
16
7
|
{#each polygons as points, index (index)}
|