@pixerate/editor-svelte 0.24.0 → 0.25.1

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 (60) hide show
  1. package/README.md +3 -1
  2. package/dist/ExportDocxButton.svelte +48 -0
  3. package/dist/ExportDocxButton.svelte.d.ts +13 -0
  4. package/dist/ExportDocxButton.svelte.d.ts.map +1 -0
  5. package/dist/canvas/AnimationTimeline.svelte +217 -0
  6. package/dist/canvas/AnimationTimeline.svelte.d.ts +20 -0
  7. package/dist/canvas/AnimationTimeline.svelte.d.ts.map +1 -0
  8. package/dist/canvas/CanvasComponentsPanel.svelte +73 -0
  9. package/dist/canvas/CanvasComponentsPanel.svelte.d.ts +13 -0
  10. package/dist/canvas/CanvasComponentsPanel.svelte.d.ts.map +1 -0
  11. package/dist/canvas/CanvasInstanceInspector.svelte +136 -0
  12. package/dist/canvas/CanvasInstanceInspector.svelte.d.ts +16 -0
  13. package/dist/canvas/CanvasInstanceInspector.svelte.d.ts.map +1 -0
  14. package/dist/canvas/createCanvasAnimation.svelte.d.ts +98 -0
  15. package/dist/canvas/createCanvasAnimation.svelte.d.ts.map +1 -0
  16. package/dist/canvas/createCanvasAnimation.svelte.js +79 -0
  17. package/dist/canvas/createCanvasArrange.svelte.d.ts.map +1 -1
  18. package/dist/canvas/createCanvasAutoLayout.svelte.d.ts.map +1 -1
  19. package/dist/canvas/createCanvasComponents.svelte.d.ts +68 -0
  20. package/dist/canvas/createCanvasComponents.svelte.d.ts.map +1 -0
  21. package/dist/canvas/createCanvasComponents.svelte.js +31 -0
  22. package/dist/canvas/index.d.ts +7 -0
  23. package/dist/canvas/index.d.ts.map +1 -1
  24. package/dist/canvas/index.js +9 -0
  25. package/dist/docxExport.svelte.d.ts +26 -0
  26. package/dist/docxExport.svelte.d.ts.map +1 -0
  27. package/dist/docxExport.svelte.js +36 -0
  28. package/dist/index.d.ts +5 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -0
  31. package/dist/spreadsheet/SpreadsheetEditor.svelte +77 -7
  32. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts +6 -0
  33. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts.map +1 -1
  34. package/dist/spreadsheet/SpreadsheetGroupRow.svelte +31 -3
  35. package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts +6 -0
  36. package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts.map +1 -1
  37. package/dist/spreadsheet/index.d.ts +1 -0
  38. package/dist/spreadsheet/index.d.ts.map +1 -1
  39. package/dist/spreadsheet/index.js +1 -0
  40. package/dist/spreadsheet/spreadsheet.svelte.d.ts +1 -1
  41. package/dist/spreadsheet/spreadsheet.svelte.d.ts.map +1 -1
  42. package/dist/spreadsheet/viewport.svelte.d.ts +26 -0
  43. package/dist/spreadsheet/viewport.svelte.d.ts.map +1 -0
  44. package/dist/spreadsheet/viewport.svelte.js +93 -0
  45. package/dist/tables/InsertTableGrid.svelte +85 -0
  46. package/dist/tables/InsertTableGrid.svelte.d.ts +21 -0
  47. package/dist/tables/InsertTableGrid.svelte.d.ts.map +1 -0
  48. package/dist/tables/TableBubbleMenu.svelte +43 -0
  49. package/dist/tables/TableBubbleMenu.svelte.d.ts +18 -0
  50. package/dist/tables/TableBubbleMenu.svelte.d.ts.map +1 -0
  51. package/dist/tables/TableToolbar.svelte +81 -0
  52. package/dist/tables/TableToolbar.svelte.d.ts +19 -0
  53. package/dist/tables/TableToolbar.svelte.d.ts.map +1 -0
  54. package/dist/tables/index.d.ts +12 -0
  55. package/dist/tables/index.d.ts.map +1 -0
  56. package/dist/tables/index.js +4 -0
  57. package/dist/tables/tableMenu.svelte.d.ts +21 -0
  58. package/dist/tables/tableMenu.svelte.d.ts.map +1 -0
  59. package/dist/tables/tableMenu.svelte.js +27 -0
  60. package/package.json +2 -2
@@ -0,0 +1,81 @@
1
+ <script lang="ts">
2
+ import type { Editor } from "@tiptap/core";
3
+ import { DEFAULT_TABLE_TOOLBAR, type TableToolbarItem } from "@pixerate/editor";
4
+ import { createTableMenu, type SvelteTableMenu } from "./tableMenu.svelte.js";
5
+
6
+ interface Props {
7
+ editor?: Editor | null;
8
+ /** Buttons to show (default `DEFAULT_TABLE_TOOLBAR`). */
9
+ items?: readonly TableToolbarItem[];
10
+ /** Render (with disabled buttons) when the selection is not in a table. Default `false`. */
11
+ showWhenOutside?: boolean;
12
+ class?: string;
13
+ buttonClass?: string;
14
+ activeButtonClass?: string;
15
+ separatorClass?: string;
16
+ /** Called after a button ran its action. */
17
+ onaction?: (item: TableToolbarItem) => void;
18
+ }
19
+
20
+ let {
21
+ editor = null,
22
+ items = DEFAULT_TABLE_TOOLBAR,
23
+ showWhenOutside = false,
24
+ class: className = "flex flex-wrap items-center gap-1 text-xs",
25
+ buttonClass = "rounded px-2 py-1 text-foreground hover:bg-muted disabled:opacity-40 disabled:hover:bg-transparent",
26
+ activeButtonClass = "bg-primary/10 text-primary",
27
+ separatorClass = "mx-1 h-4 w-px bg-border",
28
+ onaction,
29
+ }: Props = $props();
30
+
31
+ let table = $state.raw<SvelteTableMenu>(createTableMenu(null));
32
+ $effect(() => {
33
+ const menu = createTableMenu(editor);
34
+ table = menu;
35
+ return () => menu.destroy();
36
+ });
37
+
38
+ // Recomputed whenever the table state changes.
39
+ let buttons = $derived.by(() => {
40
+ const state = table.current;
41
+ return items.map((item, index) => {
42
+ const status = table.check(item.action, item.params);
43
+ return {
44
+ item,
45
+ enabled: status === true,
46
+ title: status === true ? item.title : `${item.title}: ${status}`,
47
+ active: item.active ? item.active(state) : undefined,
48
+ separator: index > 0 && items[index - 1].group !== item.group,
49
+ };
50
+ });
51
+ });
52
+
53
+ const keepSelection = (event: MouseEvent) => event.preventDefault();
54
+
55
+ function run(item: TableToolbarItem) {
56
+ if (table.run(item.action, item.params)) onaction?.(item);
57
+ }
58
+ </script>
59
+
60
+ {#if editor && (table.current.inTable || showWhenOutside)}
61
+ <div class={className} role="toolbar" aria-label="Table" data-table-toolbar="">
62
+ {#each buttons as button (button.item.id)}
63
+ {#if button.separator}
64
+ <span class={separatorClass} aria-hidden="true"></span>
65
+ {/if}
66
+ <button
67
+ type="button"
68
+ data-action={button.item.id}
69
+ aria-label={button.item.title}
70
+ title={button.title}
71
+ aria-pressed={button.active === undefined ? undefined : button.active}
72
+ disabled={!button.enabled}
73
+ class={button.active ? `${buttonClass} ${activeButtonClass}` : buttonClass}
74
+ onmousedown={keepSelection}
75
+ onclick={() => run(button.item)}
76
+ >
77
+ {button.item.label}
78
+ </button>
79
+ {/each}
80
+ </div>
81
+ {/if}
@@ -0,0 +1,19 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import { type TableToolbarItem } from "@pixerate/editor";
3
+ interface Props {
4
+ editor?: Editor | null;
5
+ /** Buttons to show (default `DEFAULT_TABLE_TOOLBAR`). */
6
+ items?: readonly TableToolbarItem[];
7
+ /** Render (with disabled buttons) when the selection is not in a table. Default `false`. */
8
+ showWhenOutside?: boolean;
9
+ class?: string;
10
+ buttonClass?: string;
11
+ activeButtonClass?: string;
12
+ separatorClass?: string;
13
+ /** Called after a button ran its action. */
14
+ onaction?: (item: TableToolbarItem) => void;
15
+ }
16
+ declare const TableToolbar: import("svelte").Component<Props, {}, "">;
17
+ type TableToolbar = ReturnType<typeof TableToolbar>;
18
+ export default TableToolbar;
19
+ //# sourceMappingURL=TableToolbar.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/TableToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAI9E,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,4FAA4F;IAC5F,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC7C;AA8DH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ComponentProps } from "svelte";
2
+ import type TableToolbarComponent from "./TableToolbar.svelte";
3
+ import type InsertTableGridComponent from "./InsertTableGrid.svelte";
4
+ import type TableBubbleMenuComponent from "./TableBubbleMenu.svelte";
5
+ export { default as TableToolbar } from "./TableToolbar.svelte";
6
+ export { default as InsertTableGrid } from "./InsertTableGrid.svelte";
7
+ export { default as TableBubbleMenu } from "./TableBubbleMenu.svelte";
8
+ export * from "./tableMenu.svelte.js";
9
+ export type TableToolbarProps = ComponentProps<typeof TableToolbarComponent>;
10
+ export type InsertTableGridProps = ComponentProps<typeof InsertTableGridComponent>;
11
+ export type TableBubbleMenuProps = ComponentProps<typeof TableBubbleMenuComponent>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tables/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,wBAAwB,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,wBAAwB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc,uBAAuB,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACnF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default as TableToolbar } from "./TableToolbar.svelte";
2
+ export { default as InsertTableGrid } from "./InsertTableGrid.svelte";
3
+ export { default as TableBubbleMenu } from "./TableBubbleMenu.svelte";
4
+ export * from "./tableMenu.svelte.js";
@@ -0,0 +1,21 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import { type TableAction, type TableActionParams, type TableState } from "@pixerate/editor";
3
+ export type { TableAction, TableActionParams, TableState } from "@pixerate/editor";
4
+ export interface SvelteTableMenu {
5
+ /** The table state at the selection (replaced only when it changes). */
6
+ readonly current: TableState;
7
+ /** Runs a table action (focusing the editor); `false` when it cannot run. */
8
+ run(action: TableAction, params?: TableActionParams): boolean;
9
+ /** `true`, or why the action cannot run with these params. */
10
+ check(action: TableAction, params?: TableActionParams): true | string;
11
+ destroy(): void;
12
+ }
13
+ /**
14
+ * Reactive table state for Svelte 5 (the counterpart of React's
15
+ * `useTableMenu`): whether the selection is in a table, its size, header
16
+ * state, cell alignment/background and the enablement (with reasons) of every
17
+ * table action. Call `destroy()` when done (or create it inside a
18
+ * component's `$effect`).
19
+ */
20
+ export declare function createTableMenu(editor: Editor | null | undefined): SvelteTableMenu;
21
+ //# sourceMappingURL=tableMenu.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableMenu.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/tableMenu.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,6EAA6E;IAC7E,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC9D,8DAA8D;IAC9D,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAmBlF"}
@@ -0,0 +1,27 @@
1
+ import { createTableStore, getTableActionState, runTableAction, } from "@pixerate/editor";
2
+ /**
3
+ * Reactive table state for Svelte 5 (the counterpart of React's
4
+ * `useTableMenu`): whether the selection is in a table, its size, header
5
+ * state, cell alignment/background and the enablement (with reasons) of every
6
+ * table action. Call `destroy()` when done (or create it inside a
7
+ * component's `$effect`).
8
+ */
9
+ export function createTableMenu(editor) {
10
+ const store = createTableStore(editor);
11
+ let current = $state.raw(store.getSnapshot());
12
+ const unsubscribe = store.subscribe(() => {
13
+ current = store.getSnapshot();
14
+ });
15
+ current = store.getSnapshot();
16
+ return {
17
+ get current() {
18
+ return current;
19
+ },
20
+ run: (action, params) => runTableAction(editor, action, params, { focus: true }),
21
+ check: (action, params) => getTableActionState(editor, action, params),
22
+ destroy() {
23
+ unsubscribe();
24
+ store.destroy();
25
+ },
26
+ };
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.24.0",
3
+ "version": "0.25.1",
4
4
  "description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -91,7 +91,7 @@
91
91
  "@tiptap/extension-bubble-menu": "^2.11.5",
92
92
  "@tiptap/extension-placeholder": "^2.11.5",
93
93
  "@tiptap/starter-kit": "^2.11.5",
94
- "@pixerate/editor": "0.25.0"
94
+ "@pixerate/editor": "0.26.1"
95
95
  },
96
96
  "peerDependencies": {
97
97
  "@dagrejs/dagre": "^1.1.4",