@pixerate/editor-svelte 0.81.0 → 0.83.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.
Files changed (42) hide show
  1. package/dist/image-editor/BrushOptionsBar.svelte +59 -4
  2. package/dist/image-editor/BrushOptionsBar.svelte.d.ts.map +1 -1
  3. package/dist/image-editor/ColorProfilePanel.svelte +112 -0
  4. package/dist/image-editor/ColorProfilePanel.svelte.d.ts +9 -0
  5. package/dist/image-editor/ColorProfilePanel.svelte.d.ts.map +1 -0
  6. package/dist/image-editor/ImageEditor.svelte +4 -1
  7. package/dist/image-editor/ImageEditor.svelte.d.ts.map +1 -1
  8. package/dist/image-editor/LayersPanel.svelte +12 -0
  9. package/dist/image-editor/LayersPanel.svelte.d.ts.map +1 -1
  10. package/dist/image-editor/index.d.ts +3 -0
  11. package/dist/image-editor/index.d.ts.map +1 -1
  12. package/dist/image-editor/index.js +1 -0
  13. package/dist/vector/VectorCanvas.svelte +155 -0
  14. package/dist/vector/VectorCanvas.svelte.d.ts.map +1 -1
  15. package/dist/vector/VectorConnectorPanel.svelte +87 -0
  16. package/dist/vector/VectorConnectorPanel.svelte.d.ts +14 -0
  17. package/dist/vector/VectorConnectorPanel.svelte.d.ts.map +1 -0
  18. package/dist/vector/VectorConstraintsPanel.svelte +113 -0
  19. package/dist/vector/VectorConstraintsPanel.svelte.d.ts +14 -0
  20. package/dist/vector/VectorConstraintsPanel.svelte.d.ts.map +1 -0
  21. package/dist/vector/VectorFramePanel.svelte +133 -0
  22. package/dist/vector/VectorFramePanel.svelte.d.ts +14 -0
  23. package/dist/vector/VectorFramePanel.svelte.d.ts.map +1 -0
  24. package/dist/vector/VectorSceneNodes.svelte +4 -1
  25. package/dist/vector/VectorSceneNodes.svelte.d.ts.map +1 -1
  26. package/dist/vector/VectorStylePanel.svelte +27 -0
  27. package/dist/vector/VectorStylePanel.svelte.d.ts.map +1 -1
  28. package/dist/vector/VectorSymbolsPanel.svelte +93 -0
  29. package/dist/vector/VectorSymbolsPanel.svelte.d.ts +14 -0
  30. package/dist/vector/VectorSymbolsPanel.svelte.d.ts.map +1 -0
  31. package/dist/vector/VectorTextElement.svelte +41 -0
  32. package/dist/vector/VectorTextElement.svelte.d.ts +8 -0
  33. package/dist/vector/VectorTextElement.svelte.d.ts.map +1 -0
  34. package/dist/vector/VectorTextPanel.svelte +170 -0
  35. package/dist/vector/VectorTextPanel.svelte.d.ts +16 -0
  36. package/dist/vector/VectorTextPanel.svelte.d.ts.map +1 -0
  37. package/dist/vector/VectorToolbar.svelte +13 -0
  38. package/dist/vector/VectorToolbar.svelte.d.ts.map +1 -1
  39. package/dist/vector/index.d.ts +6 -0
  40. package/dist/vector/index.d.ts.map +1 -1
  41. package/dist/vector/index.js +6 -0
  42. package/package.json +2 -2
@@ -0,0 +1,170 @@
1
+ <script lang="ts">
2
+ import {
3
+ VECTOR_FONT_WEIGHTS,
4
+ VECTOR_TEXT_ALIGN_OPTIONS,
5
+ applyVectorParagraphStyle,
6
+ applyVectorTextStyle,
7
+ getVectorTextPanel,
8
+ type VectorEditorController,
9
+ type VectorTextAlign
10
+ } from '@pixerate/editor/vector';
11
+ import { vectorStateOf } from './subscribe.svelte.js';
12
+
13
+ /**
14
+ * Character and paragraph style of text: family, weight, size, italic, underline, strike-through,
15
+ * tracking, leading, alignment and point / area text. It edits the selected characters while text
16
+ * is being edited, else the selected text, else the defaults for new text. Type on a Path turns a
17
+ * selected path into path text, and Create Outlines turns text into paths (with an outline
18
+ * shaper). Each change is one undo step.
19
+ */
20
+ interface Props {
21
+ controller: VectorEditorController;
22
+ class?: string;
23
+ }
24
+
25
+ let { controller, class: className = '' }: Props = $props();
26
+
27
+ const listId = `vector-fonts-${Math.random().toString(36).slice(2, 10)}`;
28
+ const store = vectorStateOf(() => controller);
29
+ const view = $derived(store.current);
30
+ const panel = $derived(getVectorTextPanel(view));
31
+ const f = $derived(panel?.font);
32
+ const where = $derived(panel?.target === 'range' ? 'Selected characters' : panel?.target === 'nodes' ? 'Selected text' : 'New text');
33
+
34
+ const style = (patch: Record<string, unknown>, merge?: string) => applyVectorTextStyle(controller, patch, merge ? { merge } : {});
35
+ const num = (v: string) => {
36
+ const n = parseFloat(v);
37
+ return Number.isFinite(n) ? n : null;
38
+ };
39
+ function onFamily(e: Event) {
40
+ const v = (e.currentTarget as HTMLInputElement).value.trim();
41
+ if (v && v !== f?.fontFamily) style({ fontFamily: v });
42
+ }
43
+ function typeOnPath() {
44
+ if (!panel?.pathId) return;
45
+ const r = controller.typeOnPath(panel.pathId, { text: 'Text on a path' });
46
+ if (r.ok && r.id) controller.editText(r.id, { anchor: 0, focus: 'Text on a path'.length });
47
+ }
48
+
49
+ const buttonClass =
50
+ '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 aria-pressed:bg-primary aria-pressed:text-primary-foreground';
51
+ const inputClass = 'h-7 min-w-0 flex-1 rounded border border-border bg-background px-1 text-xs';
52
+ const labelClass = 'w-16 text-[11px] font-medium uppercase tracking-wide text-muted-foreground';
53
+ </script>
54
+
55
+ {#if panel && f}
56
+ <div class="space-y-2 {className}" data-vector-text-panel={panel.target} aria-label="Text">
57
+ <div class="flex items-center gap-1">
58
+ <span class={labelClass}>Text</span>
59
+ <span class="text-[11px] text-muted-foreground">{where}</span>
60
+ </div>
61
+ <div class="flex items-center gap-1">
62
+ {#key f.fontFamily}
63
+ <input
64
+ aria-label="Font family"
65
+ class={inputClass}
66
+ list={listId}
67
+ placeholder="Mixed"
68
+ value={f.fontFamily ?? ''}
69
+ onkeydown={(e) => {
70
+ if (e.key === 'Enter') (e.currentTarget as HTMLInputElement).blur();
71
+ }}
72
+ onblur={onFamily}
73
+ />
74
+ {/key}
75
+ <datalist id={listId}>
76
+ {#each panel.families as fam (fam)}
77
+ <option value={fam}></option>
78
+ {/each}
79
+ </datalist>
80
+ </div>
81
+ <div class="flex items-center gap-1">
82
+ <select aria-label="Font weight" class={inputClass} value={f.fontWeight ?? ''} onchange={(e) => style({ fontWeight: Number((e.currentTarget as HTMLSelectElement).value) })}>
83
+ {#if f.fontWeight === null}<option value="">Mixed</option>{/if}
84
+ {#each VECTOR_FONT_WEIGHTS as w (w.value)}
85
+ <option value={w.value}>{w.label}</option>
86
+ {/each}
87
+ {#if f.fontWeight !== null && !VECTOR_FONT_WEIGHTS.some((w) => w.value === f.fontWeight)}<option value={f.fontWeight}>{f.fontWeight}</option>{/if}
88
+ </select>
89
+ <input
90
+ type="number"
91
+ aria-label="Font size"
92
+ title="Font size"
93
+ class="{inputClass} w-14 flex-none"
94
+ min="0.5"
95
+ step="1"
96
+ placeholder="—"
97
+ value={f.fontSize === null ? '' : Math.round(f.fontSize * 100) / 100}
98
+ oninput={(e) => {
99
+ const v = num((e.currentTarget as HTMLInputElement).value);
100
+ if (v !== null && v >= 0.5) style({ fontSize: v }, 'text-size');
101
+ }}
102
+ onblur={() => controller.endMergedEdit()}
103
+ />
104
+ </div>
105
+ <div class="flex flex-wrap items-center gap-1">
106
+ <button type="button" class={buttonClass} aria-label="Bold" aria-pressed={(f.fontWeight ?? 0) >= 600} onclick={() => style({ fontWeight: (f.fontWeight ?? 400) >= 600 ? 400 : 700 })}><b>B</b></button>
107
+ <button type="button" class={buttonClass} aria-label="Italic" aria-pressed={f.italic === true} onclick={() => style({ italic: !f.italic })}><i>I</i></button>
108
+ <button type="button" class={buttonClass} aria-label="Underline" aria-pressed={f.underline === true} onclick={() => style({ underline: !f.underline })}><u>U</u></button>
109
+ <button type="button" class={buttonClass} aria-label="Strike through" aria-pressed={f.strikethrough === true} onclick={() => style({ strikethrough: !f.strikethrough })}><s>S</s></button>
110
+ </div>
111
+ <div class="flex items-center gap-1">
112
+ <label class="flex flex-1 items-center gap-1 text-xs text-foreground" title="Tracking (1/1000 em)">
113
+ <span class="text-[11px] text-muted-foreground">VA</span>
114
+ <input
115
+ type="number"
116
+ aria-label="Tracking"
117
+ class={inputClass}
118
+ step="10"
119
+ placeholder="—"
120
+ value={f.tracking ?? ''}
121
+ oninput={(e) => style({ tracking: num((e.currentTarget as HTMLInputElement).value) ?? 0 }, 'text-tracking')}
122
+ onblur={() => controller.endMergedEdit()}
123
+ />
124
+ </label>
125
+ <label class="flex flex-1 items-center gap-1 text-xs text-foreground" title="Leading (empty: auto)">
126
+ <span class="text-[11px] text-muted-foreground">↕</span>
127
+ <input
128
+ type="number"
129
+ aria-label="Leading"
130
+ class={inputClass}
131
+ min="0"
132
+ step="1"
133
+ placeholder="Auto"
134
+ value={f.leading ?? ''}
135
+ oninput={(e) => style({ leading: num((e.currentTarget as HTMLInputElement).value) }, 'text-leading')}
136
+ onblur={() => controller.endMergedEdit()}
137
+ />
138
+ </label>
139
+ </div>
140
+ <div class="flex flex-wrap items-center gap-1" role="group" aria-label="Alignment">
141
+ {#each VECTOR_TEXT_ALIGN_OPTIONS as o (o.value)}
142
+ <button type="button" class={buttonClass} aria-label="Align {o.label}" aria-pressed={panel.align === o.value} onclick={() => applyVectorParagraphStyle(controller, { align: o.value as VectorTextAlign })}>{o.label}</button>
143
+ {/each}
144
+ </div>
145
+ {#if panel.target !== 'defaults' && panel.ids.length === 1}
146
+ <div class="flex flex-wrap items-center gap-1">
147
+ <button type="button" class={buttonClass} aria-pressed={panel.frame === 'point'} title="Point text: no wrapping" onclick={() => controller.setTextFrame(panel.ids[0], { kind: 'point' })}>Point</button>
148
+ <button type="button" class={buttonClass} aria-pressed={panel.frame === 'area'} title="Area text: wraps in a box" onclick={() => controller.setTextFrame(panel.ids[0], { kind: 'area' })}>Area</button>
149
+ </div>
150
+ {/if}
151
+ <div class="flex flex-wrap items-center gap-1">
152
+ <button
153
+ type="button"
154
+ class={buttonClass}
155
+ data-vector-text-action="type-on-path"
156
+ disabled={!panel.pathId}
157
+ title={panel.pathId ? 'Type on a Path: set text along the selected path' : 'Select a path to set text along it'}
158
+ onclick={typeOnPath}>Type on path</button
159
+ >
160
+ <button
161
+ type="button"
162
+ class={buttonClass}
163
+ data-vector-text-action="create-outlines"
164
+ disabled={panel.target !== 'nodes' || !panel.outlines}
165
+ title={panel.outlines ? 'Create Outlines: turn the text into paths' : 'Create Outlines needs a font with outlines (load one)'}
166
+ onclick={() => controller.createOutlines({ ids: panel.ids })}>Create outlines</button
167
+ >
168
+ </div>
169
+ </div>
170
+ {/if}
@@ -0,0 +1,16 @@
1
+ import { type VectorEditorController } from '@pixerate/editor/vector';
2
+ /**
3
+ * Character and paragraph style of text: family, weight, size, italic, underline, strike-through,
4
+ * tracking, leading, alignment and point / area text. It edits the selected characters while text
5
+ * is being edited, else the selected text, else the defaults for new text. Type on a Path turns a
6
+ * selected path into path text, and Create Outlines turns text into paths (with an outline
7
+ * shaper). Each change is one undo step.
8
+ */
9
+ interface Props {
10
+ controller: VectorEditorController;
11
+ class?: string;
12
+ }
13
+ declare const VectorTextPanel: import("svelte").Component<Props, {}, "">;
14
+ type VectorTextPanel = ReturnType<typeof VectorTextPanel>;
15
+ export default VectorTextPanel;
16
+ //# sourceMappingURL=VectorTextPanel.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorTextPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorTextPanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAMH,KAAK,sBAAsB,EAE5B,MAAM,yBAAyB,CAAC;AAIjC;;;;;;GAMG;AACH,UAAU,KAAK;IACb,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuGH,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -9,6 +9,8 @@
9
9
  VECTOR_FILL_GAP,
10
10
  vectorToolLabel,
11
11
  isVectorMaskGroup,
12
+ vectorPolarAngles,
13
+ vectorPolarIncrementOf,
12
14
  type VectorEditorController,
13
15
  type VectorTool
14
16
  } from '@pixerate/editor/vector';
@@ -130,6 +132,17 @@
130
132
  >
131
133
  Snap
132
134
  </button>
135
+ <select
136
+ data-vector-polar=""
137
+ aria-label="Polar tracking increment"
138
+ title="Polar tracking: the angles drawn points snap to from where they leave"
139
+ class="h-8 rounded-md border border-border bg-background px-1 text-xs"
140
+ value={String(vectorPolarIncrementOf(view.snap.angles) ?? '')}
141
+ onchange={(e) => controller.setSnap({ angles: vectorPolarAngles(Number(e.currentTarget.value)) })}
142
+ >
143
+ {#if vectorPolarIncrementOf(view.snap.angles) === null}<option value="">Custom</option>{/if}
144
+ {#each [90, 45, 30, 15] as n (n)}<option value={String(n)}>{n}°</option>{/each}
145
+ </select>
133
146
  </div>
134
147
  {/if}
135
148
  {#if showPathEdit}
@@ -1 +1 @@
1
- {"version":3,"file":"VectorToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/vector/VectorToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAUH,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;AAoJH,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,EAYH,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;AAwJH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -9,6 +9,12 @@ export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
9
9
  export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
10
10
  export { default as VectorEnvelopePanel } from "./VectorEnvelopePanel.svelte";
11
11
  export { default as VectorMaskPanel } from "./VectorMaskPanel.svelte";
12
+ export { default as VectorTextPanel } from "./VectorTextPanel.svelte";
13
+ export { default as VectorSymbolsPanel } from "./VectorSymbolsPanel.svelte";
14
+ export { default as VectorConstraintsPanel } from "./VectorConstraintsPanel.svelte";
15
+ export { default as VectorFramePanel } from "./VectorFramePanel.svelte";
16
+ export { default as VectorConnectorPanel } from "./VectorConnectorPanel.svelte";
17
+ export { default as VectorTextElement } from "./VectorTextElement.svelte";
12
18
  export { default as VectorMaskedNodes } from "./VectorMaskedNodes.svelte";
13
19
  export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
14
20
  export { default as VectorGradientDefs } from "./VectorGradientDefs.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,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,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,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,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,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,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,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,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"}
@@ -6,6 +6,12 @@ export { default as VectorStylePanel } from "./VectorStylePanel.svelte";
6
6
  export { default as VectorEffectsPanel } from "./VectorEffectsPanel.svelte";
7
7
  export { default as VectorEnvelopePanel } from "./VectorEnvelopePanel.svelte";
8
8
  export { default as VectorMaskPanel } from "./VectorMaskPanel.svelte";
9
+ export { default as VectorTextPanel } from "./VectorTextPanel.svelte";
10
+ export { default as VectorSymbolsPanel } from "./VectorSymbolsPanel.svelte";
11
+ export { default as VectorConstraintsPanel } from "./VectorConstraintsPanel.svelte";
12
+ export { default as VectorFramePanel } from "./VectorFramePanel.svelte";
13
+ export { default as VectorConnectorPanel } from "./VectorConnectorPanel.svelte";
14
+ export { default as VectorTextElement } from "./VectorTextElement.svelte";
9
15
  export { default as VectorMaskedNodes } from "./VectorMaskedNodes.svelte";
10
16
  export { default as VectorSceneNodes } from "./VectorSceneNodes.svelte";
11
17
  export { default as VectorGradientDefs } from "./VectorGradientDefs.svelte";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.81.0",
3
+ "version": "0.83.0",
4
4
  "description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -139,7 +139,7 @@
139
139
  "@tiptap/extension-bubble-menu": "^2.11.5",
140
140
  "@tiptap/extension-placeholder": "^2.11.5",
141
141
  "@tiptap/starter-kit": "^2.11.5",
142
- "@pixerate/editor": "0.112.0"
142
+ "@pixerate/editor": "0.114.0"
143
143
  },
144
144
  "peerDependencies": {
145
145
  "@dagrejs/dagre": "^1.1.4",