@pixerate/editor-svelte 0.38.0 → 0.39.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/dist/vector/VectorEffectsPanel.svelte +160 -0
- package/dist/vector/VectorEffectsPanel.svelte.d.ts +15 -0
- package/dist/vector/VectorEffectsPanel.svelte.d.ts.map +1 -0
- package/dist/vector/VectorStylePanel.svelte +2 -0
- package/dist/vector/VectorStylePanel.svelte.d.ts.map +1 -1
- package/dist/vector/VectorToolbar.svelte +18 -4
- package/dist/vector/VectorToolbar.svelte.d.ts.map +1 -1
- package/dist/vector/index.d.ts +1 -0
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/index.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
VECTOR_EFFECT_MENU,
|
|
4
|
+
getVectorEffectsPanel,
|
|
5
|
+
type VectorEditorController,
|
|
6
|
+
type VectorEffectsPanelItem,
|
|
7
|
+
type VectorEffectType
|
|
8
|
+
} from '@pixerate/editor/vector';
|
|
9
|
+
import { vectorStateOf } from './subscribe.svelte.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The live path effects of the selection: add effects (to every selected node), and for one
|
|
13
|
+
* selected node list its stack (applied top to bottom) to turn on and off, reorder, remove and
|
|
14
|
+
* edit. Slider drags and typing are one undo step each. Expand Appearance bakes the effects and
|
|
15
|
+
* live booleans into plain paths.
|
|
16
|
+
*/
|
|
17
|
+
interface Props {
|
|
18
|
+
controller: VectorEditorController;
|
|
19
|
+
class?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let { controller, class: className = '' }: Props = $props();
|
|
23
|
+
|
|
24
|
+
const store = vectorStateOf(() => controller);
|
|
25
|
+
const view = $derived(store.current);
|
|
26
|
+
const panel = $derived(getVectorEffectsPanel(view));
|
|
27
|
+
|
|
28
|
+
const buttonClass =
|
|
29
|
+
'inline-flex h-7 min-w-7 items-center justify-center rounded-md border border-border bg-background px-1.5 text-xs font-medium text-foreground hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40';
|
|
30
|
+
const numberClass = 'h-7 w-16 rounded border border-border bg-background px-1.5 text-xs';
|
|
31
|
+
const selectClass = 'h-7 min-w-0 flex-1 rounded border border-border bg-background px-1 text-xs';
|
|
32
|
+
/** Parameter names sit on their own line in a narrow panel, the controls below. */
|
|
33
|
+
const labelClass = 'w-full truncate text-[11px] text-muted-foreground';
|
|
34
|
+
|
|
35
|
+
const end = () => controller.endMergedEdit();
|
|
36
|
+
function set(e: VectorEffectsPanelItem, key: string, value: unknown, merge: boolean) {
|
|
37
|
+
if (panel?.nodeId) controller.updateEffect(panel.nodeId, e.id, { params: { [key]: value } }, { merge });
|
|
38
|
+
}
|
|
39
|
+
function setNumber(e: VectorEffectsPanelItem, key: string, raw: string) {
|
|
40
|
+
const n = parseFloat(raw);
|
|
41
|
+
if (Number.isFinite(n)) set(e, key, n, true);
|
|
42
|
+
}
|
|
43
|
+
function setAxis(e: VectorEffectsPanelItem, key: string, axis: 'x' | 'y', raw: string) {
|
|
44
|
+
const n = parseFloat(raw);
|
|
45
|
+
const v = vecOf(e, key);
|
|
46
|
+
if (Number.isFinite(n)) set(e, key, { ...v, [axis]: n }, true);
|
|
47
|
+
}
|
|
48
|
+
const vecOf = (e: VectorEffectsPanelItem, key: string) => (e.params[key] as { x: number; y: number } | undefined) ?? { x: 0, y: 0 };
|
|
49
|
+
const round = (n: number) => Math.round(n * 1000) / 1000;
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
{#if panel}
|
|
53
|
+
<div class="space-y-2 {className}" data-vector-effects="" aria-label="Effects">
|
|
54
|
+
<div class="flex items-center gap-2">
|
|
55
|
+
<span class="w-16 text-[11px] font-medium uppercase tracking-wide text-muted-foreground">Effects</span>
|
|
56
|
+
<select
|
|
57
|
+
aria-label="Add effect"
|
|
58
|
+
class={selectClass}
|
|
59
|
+
value=""
|
|
60
|
+
onchange={(ev) => {
|
|
61
|
+
const type = ev.currentTarget.value;
|
|
62
|
+
ev.currentTarget.value = '';
|
|
63
|
+
if (type) controller.addEffect(type as VectorEffectType);
|
|
64
|
+
}}
|
|
65
|
+
>
|
|
66
|
+
<option value="">Add effect…</option>
|
|
67
|
+
{#each VECTOR_EFFECT_MENU as m (m.type)}<option value={m.type}>{m.label}</option>{/each}
|
|
68
|
+
</select>
|
|
69
|
+
<button type="button" class={buttonClass} title="Expand Appearance" aria-label="Expand Appearance" disabled={!panel.expandable} onclick={() => controller.expandAppearance()}>
|
|
70
|
+
Expand
|
|
71
|
+
</button>
|
|
72
|
+
</div>
|
|
73
|
+
{#if panel.count > 1}<p class="text-[11px] text-muted-foreground">Select one object to edit its effects.</p>{/if}
|
|
74
|
+
{#if panel.nodeId}
|
|
75
|
+
{@const nodeId = panel.nodeId}
|
|
76
|
+
{#each panel.effects as e, i (e.id)}
|
|
77
|
+
<div class="space-y-1 rounded border border-border p-1.5" data-vector-effect={e.id} data-vector-effect-type={e.type}>
|
|
78
|
+
<div class="flex items-center gap-1">
|
|
79
|
+
<label class="flex min-w-0 flex-1 items-center gap-1.5 text-xs font-medium text-foreground">
|
|
80
|
+
<input type="checkbox" aria-label="{e.label} on" checked={e.enabled} onchange={(ev) => controller.updateEffect(nodeId, e.id, { enabled: ev.currentTarget.checked })} />
|
|
81
|
+
<span class="truncate">{e.label}</span>
|
|
82
|
+
</label>
|
|
83
|
+
<button type="button" class={buttonClass} title="Move up" aria-label="Move {e.label} up" disabled={i === 0} onclick={() => controller.moveEffect(nodeId, e.id, i - 1)}>↑</button>
|
|
84
|
+
<button
|
|
85
|
+
type="button"
|
|
86
|
+
class={buttonClass}
|
|
87
|
+
title="Move down"
|
|
88
|
+
aria-label="Move {e.label} down"
|
|
89
|
+
disabled={i === panel.effects.length - 1}
|
|
90
|
+
onclick={() => controller.moveEffect(nodeId, e.id, i + 1)}>↓</button
|
|
91
|
+
>
|
|
92
|
+
<button type="button" class={buttonClass} title="Remove" aria-label="Remove {e.label}" onclick={() => controller.removeEffect(nodeId, e.id)}>×</button>
|
|
93
|
+
</div>
|
|
94
|
+
{#each e.specs as spec (spec.key)}
|
|
95
|
+
{#if spec.kind === 'number'}
|
|
96
|
+
{@const value = Number(e.params[spec.key] ?? 0)}
|
|
97
|
+
<label class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-effect-param={spec.key}>
|
|
98
|
+
<span class={labelClass}>{spec.label}</span>
|
|
99
|
+
{#if spec.slider}
|
|
100
|
+
<input
|
|
101
|
+
type="range"
|
|
102
|
+
min={spec.min}
|
|
103
|
+
max={spec.max}
|
|
104
|
+
step={spec.step}
|
|
105
|
+
aria-label="{e.label} {spec.label} slider"
|
|
106
|
+
class="h-4 min-w-0 flex-1 accent-primary"
|
|
107
|
+
{value}
|
|
108
|
+
oninput={(ev) => setNumber(e, spec.key, ev.currentTarget.value)}
|
|
109
|
+
onpointerup={end}
|
|
110
|
+
onkeyup={end}
|
|
111
|
+
onblur={end}
|
|
112
|
+
/>
|
|
113
|
+
{/if}
|
|
114
|
+
<input
|
|
115
|
+
type="number"
|
|
116
|
+
min={spec.min}
|
|
117
|
+
max={spec.max}
|
|
118
|
+
step={spec.step}
|
|
119
|
+
aria-label="{e.label} {spec.label}"
|
|
120
|
+
class={numberClass}
|
|
121
|
+
value={round(value)}
|
|
122
|
+
oninput={(ev) => setNumber(e, spec.key, ev.currentTarget.value)}
|
|
123
|
+
onblur={end}
|
|
124
|
+
/>
|
|
125
|
+
</label>
|
|
126
|
+
{:else if spec.kind === 'vec2'}
|
|
127
|
+
{@const v = vecOf(e, spec.key)}
|
|
128
|
+
<div class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-effect-param={spec.key}>
|
|
129
|
+
<span class={labelClass}>{spec.label}</span>
|
|
130
|
+
{#each ['x', 'y'] as const as axis (axis)}
|
|
131
|
+
<input
|
|
132
|
+
type="number"
|
|
133
|
+
step={spec.step}
|
|
134
|
+
aria-label="{e.label} {spec.label} {axis}"
|
|
135
|
+
class={numberClass}
|
|
136
|
+
value={round(v[axis])}
|
|
137
|
+
oninput={(ev) => setAxis(e, spec.key, axis, ev.currentTarget.value)}
|
|
138
|
+
onblur={end}
|
|
139
|
+
/>
|
|
140
|
+
{/each}
|
|
141
|
+
</div>
|
|
142
|
+
{:else if spec.kind === 'boolean'}
|
|
143
|
+
<label class="flex items-center gap-2 text-xs text-foreground" data-vector-effect-param={spec.key}>
|
|
144
|
+
<span class="min-w-0 flex-1 truncate">{spec.label}</span>
|
|
145
|
+
<input type="checkbox" aria-label="{e.label} {spec.label}" checked={!!e.params[spec.key]} onchange={(ev) => set(e, spec.key, ev.currentTarget.checked, false)} />
|
|
146
|
+
</label>
|
|
147
|
+
{:else}
|
|
148
|
+
<label class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-effect-param={spec.key}>
|
|
149
|
+
<span class={labelClass}>{spec.label}</span>
|
|
150
|
+
<select aria-label="{e.label} {spec.label}" class={selectClass} value={String(e.params[spec.key] ?? '')} onchange={(ev) => set(e, spec.key, ev.currentTarget.value, false)}>
|
|
151
|
+
{#each spec.options as o (o.value)}<option value={o.value}>{o.label}</option>{/each}
|
|
152
|
+
</select>
|
|
153
|
+
</label>
|
|
154
|
+
{/if}
|
|
155
|
+
{/each}
|
|
156
|
+
</div>
|
|
157
|
+
{/each}
|
|
158
|
+
{/if}
|
|
159
|
+
</div>
|
|
160
|
+
{/if}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type VectorEditorController } from '@pixerate/editor/vector';
|
|
2
|
+
/**
|
|
3
|
+
* The live path effects of the selection: add effects (to every selected node), and for one
|
|
4
|
+
* selected node list its stack (applied top to bottom) to turn on and off, reorder, remove and
|
|
5
|
+
* edit. Slider drags and typing are one undo step each. Expand Appearance bakes the effects and
|
|
6
|
+
* live booleans into plain paths.
|
|
7
|
+
*/
|
|
8
|
+
interface Props {
|
|
9
|
+
controller: VectorEditorController;
|
|
10
|
+
class?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const VectorEffectsPanel: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type VectorEffectsPanel = ReturnType<typeof VectorEffectsPanel>;
|
|
14
|
+
export default VectorEffectsPanel;
|
|
15
|
+
//# sourceMappingURL=VectorEffectsPanel.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorEffectsPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorEffectsPanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,sBAAsB,EAG5B,MAAM,yBAAyB,CAAC;AAIjC;;;;;GAKG;AACH,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0GH,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
} from '@pixerate/editor/vector';
|
|
18
18
|
import { vectorStateOf } from './subscribe.svelte.js';
|
|
19
19
|
import { vectorButtonClass } from './styles.js';
|
|
20
|
+
import VectorEffectsPanel from './VectorEffectsPanel.svelte';
|
|
20
21
|
|
|
21
22
|
interface Props {
|
|
22
23
|
controller: VectorEditorController;
|
|
@@ -217,5 +218,6 @@
|
|
|
217
218
|
oninput={(e) => apply({ opacity: parseFloat(e.currentTarget.value) })}
|
|
218
219
|
/>
|
|
219
220
|
</label>
|
|
221
|
+
<VectorEffectsPanel {controller} />
|
|
220
222
|
{/if}
|
|
221
223
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorStylePanel.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorStylePanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAYH,KAAK,sBAAsB,EAG5B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"VectorStylePanel.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorStylePanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAYH,KAAK,sBAAsB,EAG5B,MAAM,yBAAyB,CAAC;AAMjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2JH,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -50,11 +50,14 @@
|
|
|
50
50
|
const points = $derived(view.tool === 'direct' ? view.selectedAnchors.length : 0);
|
|
51
51
|
const groupSelected = $derived(view.selection.some((id) => controller.getNode(id)?.type === 'group'));
|
|
52
52
|
|
|
53
|
+
// Live booleans keep the operands editable; a lone live group or its operands take the operation too.
|
|
54
|
+
let live = $state(false);
|
|
55
|
+
const booleanDisabled = $derived(live ? count < 1 : count < 2);
|
|
53
56
|
const combine = $derived([
|
|
54
|
-
{ label: '∪', title: 'Union', run: () => controller.booleanOp('union'), disabled:
|
|
55
|
-
{ label: '−', title: 'Subtract', run: () => controller.booleanOp('subtract'), disabled:
|
|
56
|
-
{ label: '∩', title: 'Intersect', run: () => controller.booleanOp('intersect'), disabled:
|
|
57
|
-
{ label: '⊻', title: 'Exclude', run: () => controller.booleanOp('exclude'), disabled:
|
|
57
|
+
{ label: '∪', title: 'Union', run: () => controller.booleanOp('union', { live }), disabled: booleanDisabled },
|
|
58
|
+
{ label: '−', title: 'Subtract', run: () => controller.booleanOp('subtract', { live }), disabled: booleanDisabled },
|
|
59
|
+
{ label: '∩', title: 'Intersect', run: () => controller.booleanOp('intersect', { live }), disabled: booleanDisabled },
|
|
60
|
+
{ label: '⊻', title: 'Exclude', run: () => controller.booleanOp('exclude', { live }), disabled: booleanDisabled },
|
|
58
61
|
{ label: 'G', title: 'Group', run: () => controller.group(), disabled: count < 1 },
|
|
59
62
|
{ label: 'U', title: 'Ungroup', run: () => controller.ungroup(), disabled: !groupSelected }
|
|
60
63
|
]);
|
|
@@ -193,6 +196,17 @@
|
|
|
193
196
|
{/if}
|
|
194
197
|
{#if showArrange}
|
|
195
198
|
<div class="ml-1 flex items-center gap-1" role="group" aria-label="Combine">
|
|
199
|
+
<button
|
|
200
|
+
type="button"
|
|
201
|
+
data-vector-live-boolean=""
|
|
202
|
+
class={vectorButtonClass}
|
|
203
|
+
aria-pressed={live}
|
|
204
|
+
title="Live booleans: keep the shapes editable"
|
|
205
|
+
aria-label="Live booleans"
|
|
206
|
+
onclick={() => (live = !live)}
|
|
207
|
+
>
|
|
208
|
+
Live
|
|
209
|
+
</button>
|
|
196
210
|
{#each combine as item (item.title)}{@render action(item)}{/each}
|
|
197
211
|
</div>
|
|
198
212
|
<div class="ml-1 flex items-center gap-1" role="group" aria-label="Pathfinder">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EASH,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAMjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"VectorToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EASH,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAMjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgIH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
package/dist/vector/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { default as VectorCanvas } from "./VectorCanvas.svelte";
|
|
|
6
6
|
export { default as VectorWidthPointEditor } from "./VectorWidthPointEditor.svelte";
|
|
7
7
|
export { default as VectorToolbar } from "./VectorToolbar.svelte";
|
|
8
8
|
export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
|
|
9
|
+
export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
|
|
9
10
|
export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
|
|
10
11
|
export { default as VectorGradientDefs } from "./VectorGradientDefs.svelte";
|
|
11
12
|
export * from "./createVectorEditor.svelte.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,cAAc,aAAa,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,cAAc,aAAa,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/vector/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { default as VectorCanvas } from "./VectorCanvas.svelte";
|
|
|
3
3
|
export { default as VectorWidthPointEditor } from "./VectorWidthPointEditor.svelte";
|
|
4
4
|
export { default as VectorToolbar } from "./VectorToolbar.svelte";
|
|
5
5
|
export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
|
|
6
|
+
export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
|
|
6
7
|
export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
|
|
7
8
|
export { default as VectorGradientDefs } from "./VectorGradientDefs.svelte";
|
|
8
9
|
export * from "./createVectorEditor.svelte.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixerate/editor-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
|
|
5
5
|
"author": "Pixerate",
|
|
6
6
|
"license": "MIT",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"@tiptap/extension-bubble-menu": "^2.11.5",
|
|
108
108
|
"@tiptap/extension-placeholder": "^2.11.5",
|
|
109
109
|
"@tiptap/starter-kit": "^2.11.5",
|
|
110
|
-
"@pixerate/editor": "0.
|
|
110
|
+
"@pixerate/editor": "0.42.0"
|
|
111
111
|
},
|
|
112
112
|
"peerDependencies": {
|
|
113
113
|
"@dagrejs/dagre": "^1.1.4",
|