@pixerate/editor-svelte 0.40.0 → 0.41.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.
@@ -189,7 +189,7 @@
189
189
  <path d={overlay.penPreview} stroke={accentColor} stroke-dasharray="4 3" />
190
190
  {/if}
191
191
  {#if box}
192
- <g data-vector-selection="" transform={box.transform || undefined}>
192
+ <g data-vector-selection="" data-free-distort={box.freeDistort || undefined} transform={box.transform || undefined}>
193
193
  <rect x={box.x} y={box.y} width={box.width} height={box.height} stroke={accentColor} />
194
194
  <line x1={box.x + box.width / 2} y1={box.y} x2={box.x + box.width / 2} y2={box.y - 24} stroke={accentColor} />
195
195
  {#each box.handles as h (h.handle)}
@@ -201,6 +201,29 @@
201
201
  {/each}
202
202
  </g>
203
203
  {/if}
204
+ {#if overlay.distort}
205
+ <g data-vector-distort={overlay.distort.mode}>
206
+ <path d={overlay.distort.d} stroke={accentColor} />
207
+ {#each overlay.distort.corners as c, i (i)}
208
+ <rect x={c.x - hs / 2} y={c.y - hs / 2} width={hs} height={hs} fill={THEME.handleFill} stroke={accentColor} />
209
+ {/each}
210
+ </g>
211
+ {/if}
212
+ {#if overlay.envelope}
213
+ <g data-vector-envelope-mesh={overlay.envelope.nodeId}>
214
+ <path data-vector-envelope-grid="" d={overlay.envelope.grid} stroke={accentColor} stroke-opacity="0.8" />
215
+ {#each overlay.envelope.handles as h (h.index)}
216
+ <g data-vector-envelope-handle={h.index}>
217
+ <line x1={h.anchorX} y1={h.anchorY} x2={h.x} y2={h.y} stroke={accentColor} stroke-opacity="0.6" />
218
+ <circle cx={h.x} cy={h.y} r={THEME.handleRadius + (h.hovered || h.active ? 1 : 0)} fill={h.active ? accentColor : THEME.handleFill} stroke={accentColor} />
219
+ </g>
220
+ {/each}
221
+ {#each overlay.envelope.anchors as a (a.index)}
222
+ {@const size = as + (a.hovered || a.active ? 2 : 0)}
223
+ <rect data-vector-envelope-anchor={a.index} x={a.x - size / 2} y={a.y - size / 2} width={size} height={size} fill={a.active ? accentColor : THEME.handleFill} stroke={accentColor} />
224
+ {/each}
225
+ </g>
226
+ {/if}
204
227
  {#each overlay.handles as h (handleKey(h))}
205
228
  <g data-vector-handle={h.ref.handle}>
206
229
  <line x1={h.anchorX} y1={h.anchorY} x2={h.x} y2={h.y} stroke={accentColor} />
@@ -1 +1 @@
1
- {"version":3,"file":"VectorCanvas.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorCanvas.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,EAQH,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AAQjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAuQH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"VectorCanvas.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorCanvas.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,EAQH,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AAQjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA8RH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,179 @@
1
+ <script lang="ts">
2
+ import { VECTOR_ENVELOPE_STYLE_OPTIONS, getVectorEnvelopePanel, type VectorEditorController, type VectorEnvelopeParams } from '@pixerate/editor/vector';
3
+ import { vectorStateOf } from './subscribe.svelte.js';
4
+
5
+ /**
6
+ * Envelope distortion of the selection: Make with Warp, Mesh or Top Object, and for one selected
7
+ * object with an envelope its warp preset, bend, horizontal and vertical distortion, orientation
8
+ * and mesh rows and columns, plus Release and Expand. Edit the mesh on the canvas with the
9
+ * Envelope tool. Slider drags are one undo step each.
10
+ */
11
+ interface Props {
12
+ controller: VectorEditorController;
13
+ class?: string;
14
+ }
15
+
16
+ let { controller, class: className = '' }: Props = $props();
17
+
18
+ const store = vectorStateOf(() => controller);
19
+ const view = $derived(store.current);
20
+ const panel = $derived(getVectorEnvelopePanel(view));
21
+ const env = $derived(panel?.envelope ?? null);
22
+ // The mesh size Make with Mesh uses (an envelope's own size once it has one).
23
+ let size = $state({ rows: 2, columns: 2 });
24
+ const rows = $derived(env?.params.rows ?? size.rows);
25
+ const columns = $derived(env?.params.columns ?? size.columns);
26
+
27
+ const buttonClass =
28
+ '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';
29
+ const numberClass = 'h-7 w-14 rounded border border-border bg-background px-1.5 text-xs';
30
+ const selectClass = 'h-7 min-w-0 flex-1 rounded border border-border bg-background px-1 text-xs';
31
+ const labelClass = 'w-full truncate text-[11px] text-muted-foreground';
32
+
33
+ const SLIDERS: { key: 'bend' | 'horizontal' | 'vertical'; label: string }[] = [
34
+ { key: 'bend', label: 'Bend %' },
35
+ { key: 'horizontal', label: 'Horizontal distortion %' },
36
+ { key: 'vertical', label: 'Vertical distortion %' }
37
+ ];
38
+
39
+ const end = () => controller.endMergedEdit();
40
+ function set(patch: Partial<VectorEnvelopeParams>, merge = false) {
41
+ controller.envelope(patch, { ids: panel?.nodeId ? [panel.nodeId] : undefined, merge });
42
+ }
43
+ function setSlider(key: 'bend' | 'horizontal' | 'vertical', raw: string) {
44
+ const n = parseFloat(raw);
45
+ if (Number.isFinite(n)) set({ [key]: n }, true);
46
+ }
47
+ function setCount(key: 'rows' | 'columns', raw: string) {
48
+ const n = Math.round(parseFloat(raw));
49
+ if (!Number.isFinite(n) || n < 1 || n > 16) return;
50
+ if (env) set({ [key]: n });
51
+ else size = { ...size, [key]: n };
52
+ }
53
+ </script>
54
+
55
+ {#if panel}
56
+ <div class="space-y-2 {className}" data-vector-envelope="" aria-label="Envelope">
57
+ <div class="flex flex-wrap items-center gap-1">
58
+ <span class="w-16 text-[11px] font-medium uppercase tracking-wide text-muted-foreground">Envelope</span>
59
+ <button
60
+ type="button"
61
+ data-vector-envelope-action="warp"
62
+ class={buttonClass}
63
+ title="Make with Warp"
64
+ aria-label="Make with Warp"
65
+ disabled={!panel.canMake || !!env}
66
+ onclick={() => set({ style: 'arc', bend: 50 })}
67
+ >
68
+ Warp
69
+ </button>
70
+ <button
71
+ type="button"
72
+ data-vector-envelope-action="mesh"
73
+ class={buttonClass}
74
+ title="Make with Mesh"
75
+ aria-label="Make with Mesh"
76
+ disabled={!panel.canMake || !!env}
77
+ onclick={() => set({ style: 'mesh', rows: size.rows, columns: size.columns })}
78
+ >
79
+ Mesh
80
+ </button>
81
+ <button
82
+ type="button"
83
+ data-vector-envelope-action="top"
84
+ class={buttonClass}
85
+ title="Make with Top Object"
86
+ aria-label="Make with Top Object"
87
+ disabled={!panel.canMakeWithTopObject}
88
+ onclick={() => controller.makeEnvelopeWithTopObject({ rows: size.rows, columns: size.columns })}
89
+ >
90
+ Top
91
+ </button>
92
+ <button
93
+ type="button"
94
+ data-vector-envelope-action="release"
95
+ class={buttonClass}
96
+ title="Release Envelope"
97
+ aria-label="Release Envelope"
98
+ disabled={!panel.canRelease}
99
+ onclick={() => controller.releaseEnvelope()}
100
+ >
101
+ Release
102
+ </button>
103
+ <button
104
+ type="button"
105
+ data-vector-envelope-action="expand"
106
+ class={buttonClass}
107
+ title="Expand Envelope"
108
+ aria-label="Expand Envelope"
109
+ disabled={!panel.canRelease}
110
+ onclick={() => controller.expandAppearance()}
111
+ >
112
+ Expand
113
+ </button>
114
+ </div>
115
+ {#if env}
116
+ <label class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-envelope-param="style">
117
+ <span class={labelClass}>Warp</span>
118
+ <select
119
+ aria-label="Envelope warp"
120
+ class={selectClass}
121
+ value={env.params.style}
122
+ onchange={(e) => set({ style: e.currentTarget.value as VectorEnvelopeParams['style'] })}
123
+ >
124
+ {#each VECTOR_ENVELOPE_STYLE_OPTIONS as o (o.value)}<option value={o.value}>{o.label}</option>{/each}
125
+ </select>
126
+ </label>
127
+ {#if env.params.style !== 'mesh'}
128
+ {#each SLIDERS as s (s.key)}
129
+ <label class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-envelope-param={s.key}>
130
+ <span class={labelClass}>{s.label}</span>
131
+ <input
132
+ type="range"
133
+ min="-100"
134
+ max="100"
135
+ step="1"
136
+ aria-label="Envelope {s.label} slider"
137
+ class="h-4 min-w-0 flex-1 accent-primary"
138
+ value={env.params[s.key]}
139
+ oninput={(e) => setSlider(s.key, e.currentTarget.value)}
140
+ onpointerup={end}
141
+ onkeyup={end}
142
+ onblur={end}
143
+ />
144
+ <input
145
+ type="number"
146
+ min="-100"
147
+ max="100"
148
+ step="1"
149
+ aria-label="Envelope {s.label}"
150
+ class={numberClass}
151
+ value={env.params[s.key]}
152
+ oninput={(e) => setSlider(s.key, e.currentTarget.value)}
153
+ onblur={end}
154
+ />
155
+ </label>
156
+ {/each}
157
+ <label class="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-foreground" data-vector-envelope-param="orientation">
158
+ <span class={labelClass}>Orientation</span>
159
+ <select
160
+ aria-label="Envelope orientation"
161
+ class={selectClass}
162
+ value={env.params.orientation}
163
+ onchange={(e) => set({ orientation: e.currentTarget.value as 'horizontal' | 'vertical' })}
164
+ >
165
+ <option value="horizontal">Horizontal</option>
166
+ <option value="vertical">Vertical</option>
167
+ </select>
168
+ </label>
169
+ {/if}
170
+ {/if}
171
+ <div class="flex items-center gap-2 text-xs text-foreground" data-vector-envelope-param="mesh">
172
+ <span class="min-w-0 flex-1 truncate text-[11px] text-muted-foreground">Mesh rows × columns</span>
173
+ <input type="number" min="1" max="16" step="1" aria-label="Envelope mesh rows" class={numberClass} value={rows} oninput={(e) => setCount('rows', e.currentTarget.value)} />
174
+ <input type="number" min="1" max="16" step="1" aria-label="Envelope mesh columns" class={numberClass} value={columns} oninput={(e) => setCount('columns', e.currentTarget.value)} />
175
+ </div>
176
+ {#if panel.count > 1 && !panel.canMakeWithTopObject}<p class="text-[11px] text-muted-foreground">Select one object to edit its envelope.</p>{/if}
177
+ {#if env}<p class="text-[11px] text-muted-foreground">Edit the mesh with the Envelope tool (U).</p>{/if}
178
+ </div>
179
+ {/if}
@@ -0,0 +1,15 @@
1
+ import { type VectorEditorController } from '@pixerate/editor/vector';
2
+ /**
3
+ * Envelope distortion of the selection: Make with Warp, Mesh or Top Object, and for one selected
4
+ * object with an envelope its warp preset, bend, horizontal and vertical distortion, orientation
5
+ * and mesh rows and columns, plus Release and Expand. Edit the mesh on the canvas with the
6
+ * Envelope tool. Slider drags are one undo step each.
7
+ */
8
+ interface Props {
9
+ controller: VectorEditorController;
10
+ class?: string;
11
+ }
12
+ declare const VectorEnvelopePanel: import("svelte").Component<Props, {}, "">;
13
+ type VectorEnvelopePanel = ReturnType<typeof VectorEnvelopePanel>;
14
+ export default VectorEnvelopePanel;
15
+ //# sourceMappingURL=VectorEnvelopePanel.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorEnvelopePanel.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorEnvelopePanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyD,KAAK,sBAAsB,EAA6B,MAAM,yBAAyB,CAAC;AAItJ;;;;;GAKG;AACH,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqGH,QAAA,MAAM,mBAAmB,2CAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -18,6 +18,7 @@
18
18
  import { vectorStateOf } from './subscribe.svelte.js';
19
19
  import { vectorButtonClass } from './styles.js';
20
20
  import VectorEffectsPanel from './VectorEffectsPanel.svelte';
21
+ import VectorEnvelopePanel from './VectorEnvelopePanel.svelte';
21
22
  import VectorGradientEditor from './VectorGradientEditor.svelte';
22
23
 
23
24
  interface Props {
@@ -221,5 +222,6 @@
221
222
  />
222
223
  </label>
223
224
  <VectorEffectsPanel {controller} />
225
+ <VectorEnvelopePanel {controller} />
224
226
  {/if}
225
227
  </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;AAOjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6JH,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,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;AAQjC,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+JH,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -36,10 +36,22 @@
36
36
  * spine, Replace Spine, Expand and Release (default `true`).
37
37
  */
38
38
  showBlend?: boolean;
39
+ /** The Free Distort toggle of the selection box (default `true`). */
40
+ showDistort?: boolean;
39
41
  class?: string;
40
42
  }
41
43
 
42
- let { controller, tools = VECTOR_TOOLS, showHistory = true, showArrange = true, showSnap = true, showPathEdit = true, showBlend = true, class: className = '' }: Props = $props();
44
+ let {
45
+ controller,
46
+ tools = VECTOR_TOOLS,
47
+ showHistory = true,
48
+ showArrange = true,
49
+ showSnap = true,
50
+ showPathEdit = true,
51
+ showBlend = true,
52
+ showDistort = true,
53
+ class: className = ''
54
+ }: Props = $props();
43
55
 
44
56
  const snapTitle = 'Snap to objects';
45
57
  const modKey = typeof navigator !== 'undefined' && /Mac|iPhone|iPad/.test(navigator.platform ?? '') ? '⌘' : 'Ctrl';
@@ -191,6 +203,21 @@
191
203
  {/if}
192
204
  </div>
193
205
  {/if}
206
+ {#if showDistort}
207
+ <div class="ml-1 flex items-center gap-1" role="group" aria-label="Distort">
208
+ <button
209
+ type="button"
210
+ data-vector-free-distort=""
211
+ class={vectorButtonClass}
212
+ aria-pressed={view.freeDistort}
213
+ title="Free Distort: drag a corner of the selection box to distort in perspective (Shift+Alt+{modKey}: symmetric perspective; {modKey}-drag a side to skew)"
214
+ aria-label="Free Distort"
215
+ onclick={() => controller.setFreeDistort(!view.freeDistort)}
216
+ >
217
+ Distort
218
+ </button>
219
+ </div>
220
+ {/if}
194
221
  {#if showBlend}
195
222
  <VectorBlendControls {controller} />
196
223
  {/if}
@@ -20,6 +20,8 @@ interface Props {
20
20
  * spine, Replace Spine, Expand and Release (default `true`).
21
21
  */
22
22
  showBlend?: boolean;
23
+ /** The Free Distort toggle of the selection box (default `true`). */
24
+ showDistort?: boolean;
23
25
  class?: string;
24
26
  }
25
27
  declare const VectorToolbar: import("svelte").Component<Props, {}, "">;
@@ -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;AAgIH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
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,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiJH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -7,6 +7,7 @@ export { default as VectorWidthPointEditor } from "./VectorWidthPointEditor.svel
7
7
  export { default as VectorToolbar } from "./VectorToolbar.svelte";
8
8
  export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
9
9
  export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
10
+ export { default as VectorEnvelopePanel } from "./VectorEnvelopePanel.svelte";
10
11
  export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
11
12
  export { default as VectorGradientDefs } from "./VectorGradientDefs.svelte";
12
13
  export { default as VectorGradientAnnotator } from "./VectorGradientAnnotator.svelte";
@@ -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,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,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,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,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,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"}
@@ -4,6 +4,7 @@ export { default as VectorWidthPointEditor } from "./VectorWidthPointEditor.svel
4
4
  export { default as VectorToolbar } from "./VectorToolbar.svelte";
5
5
  export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
6
6
  export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
7
+ export { default as VectorEnvelopePanel } from "./VectorEnvelopePanel.svelte";
7
8
  export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
8
9
  export { default as VectorGradientDefs } from "./VectorGradientDefs.svelte";
9
10
  export { default as VectorGradientAnnotator } from "./VectorGradientAnnotator.svelte";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.40.0",
3
+ "version": "0.41.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.43.0"
110
+ "@pixerate/editor": "0.44.0"
111
111
  },
112
112
  "peerDependencies": {
113
113
  "@dagrejs/dagre": "^1.1.4",