@pixerate/editor-svelte 0.23.0 → 0.25.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 (147) hide show
  1. package/README.md +4 -2
  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/StylesGallery.svelte +169 -0
  6. package/dist/StylesGallery.svelte.d.ts +27 -0
  7. package/dist/StylesGallery.svelte.d.ts.map +1 -0
  8. package/dist/canvas/AnimationTimeline.svelte +217 -0
  9. package/dist/canvas/AnimationTimeline.svelte.d.ts +20 -0
  10. package/dist/canvas/AnimationTimeline.svelte.d.ts.map +1 -0
  11. package/dist/canvas/CanvasComponentsPanel.svelte +73 -0
  12. package/dist/canvas/CanvasComponentsPanel.svelte.d.ts +13 -0
  13. package/dist/canvas/CanvasComponentsPanel.svelte.d.ts.map +1 -0
  14. package/dist/canvas/CanvasInstanceInspector.svelte +136 -0
  15. package/dist/canvas/CanvasInstanceInspector.svelte.d.ts +16 -0
  16. package/dist/canvas/CanvasInstanceInspector.svelte.d.ts.map +1 -0
  17. package/dist/canvas/TokenBindingPicker.svelte +93 -0
  18. package/dist/canvas/TokenBindingPicker.svelte.d.ts +20 -0
  19. package/dist/canvas/TokenBindingPicker.svelte.d.ts.map +1 -0
  20. package/dist/canvas/TokenModeSwitcher.svelte +55 -0
  21. package/dist/canvas/TokenModeSwitcher.svelte.d.ts +18 -0
  22. package/dist/canvas/TokenModeSwitcher.svelte.d.ts.map +1 -0
  23. package/dist/canvas/createCanvasAnimation.svelte.d.ts +98 -0
  24. package/dist/canvas/createCanvasAnimation.svelte.d.ts.map +1 -0
  25. package/dist/canvas/createCanvasAnimation.svelte.js +79 -0
  26. package/dist/canvas/createCanvasArrange.svelte.d.ts +4 -0
  27. package/dist/canvas/createCanvasArrange.svelte.d.ts.map +1 -1
  28. package/dist/canvas/createCanvasAutoLayout.svelte.d.ts.map +1 -1
  29. package/dist/canvas/createCanvasComponents.svelte.d.ts +68 -0
  30. package/dist/canvas/createCanvasComponents.svelte.d.ts.map +1 -0
  31. package/dist/canvas/createCanvasComponents.svelte.js +31 -0
  32. package/dist/canvas/createCanvasTokens.svelte.d.ts +31 -0
  33. package/dist/canvas/createCanvasTokens.svelte.d.ts.map +1 -0
  34. package/dist/canvas/createCanvasTokens.svelte.js +50 -0
  35. package/dist/canvas/index.d.ts +12 -0
  36. package/dist/canvas/index.d.ts.map +1 -1
  37. package/dist/canvas/index.js +16 -0
  38. package/dist/docxExport.svelte.d.ts +26 -0
  39. package/dist/docxExport.svelte.d.ts.map +1 -0
  40. package/dist/docxExport.svelte.js +36 -0
  41. package/dist/fileImport.svelte.d.ts +8 -1
  42. package/dist/fileImport.svelte.d.ts.map +1 -1
  43. package/dist/fileImport.svelte.js +11 -1
  44. package/dist/generation/AssetMentionChips.svelte +130 -0
  45. package/dist/generation/AssetMentionChips.svelte.d.ts +21 -0
  46. package/dist/generation/AssetMentionChips.svelte.d.ts.map +1 -0
  47. package/dist/generation/GenerationHistory.svelte +161 -0
  48. package/dist/generation/GenerationHistory.svelte.d.ts +28 -0
  49. package/dist/generation/GenerationHistory.svelte.d.ts.map +1 -0
  50. package/dist/generation/index.d.ts +7 -0
  51. package/dist/generation/index.d.ts.map +1 -1
  52. package/dist/generation/index.js +3 -0
  53. package/dist/generation/records.svelte.d.ts +18 -0
  54. package/dist/generation/records.svelte.d.ts.map +1 -0
  55. package/dist/generation/records.svelte.js +66 -0
  56. package/dist/image-editor/ImageEditor.svelte +72 -1
  57. package/dist/image-editor/ImageEditor.svelte.d.ts.map +1 -1
  58. package/dist/image-editor/RefineEdgePanel.svelte +180 -0
  59. package/dist/image-editor/RefineEdgePanel.svelte.d.ts +13 -0
  60. package/dist/image-editor/RefineEdgePanel.svelte.d.ts.map +1 -0
  61. package/dist/image-editor/SelectionOptionsBar.svelte +135 -0
  62. package/dist/image-editor/SelectionOptionsBar.svelte.d.ts +15 -0
  63. package/dist/image-editor/SelectionOptionsBar.svelte.d.ts.map +1 -0
  64. package/dist/image-editor/index.d.ts +6 -0
  65. package/dist/image-editor/index.d.ts.map +1 -1
  66. package/dist/image-editor/index.js +2 -0
  67. package/dist/index.d.ts +9 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -0
  70. package/dist/paragraphStyles.svelte.d.ts +30 -0
  71. package/dist/paragraphStyles.svelte.d.ts.map +1 -0
  72. package/dist/paragraphStyles.svelte.js +44 -0
  73. package/dist/review/TrackedChangesList.svelte +67 -0
  74. package/dist/review/TrackedChangesList.svelte.d.ts +13 -0
  75. package/dist/review/TrackedChangesList.svelte.d.ts.map +1 -0
  76. package/dist/review/index.d.ts +3 -0
  77. package/dist/review/index.d.ts.map +1 -1
  78. package/dist/review/index.js +1 -0
  79. package/dist/review/review.svelte.d.ts +6 -0
  80. package/dist/review/review.svelte.d.ts.map +1 -1
  81. package/dist/review/review.svelte.js +3 -0
  82. package/dist/spreadsheet/FormulaBar.svelte +13 -4
  83. package/dist/spreadsheet/FormulaBar.svelte.d.ts.map +1 -1
  84. package/dist/spreadsheet/FormulaHints.svelte +7 -5
  85. package/dist/spreadsheet/FormulaHints.svelte.d.ts +3 -0
  86. package/dist/spreadsheet/FormulaHints.svelte.d.ts.map +1 -1
  87. package/dist/spreadsheet/NameManager.svelte +165 -0
  88. package/dist/spreadsheet/NameManager.svelte.d.ts +11 -0
  89. package/dist/spreadsheet/NameManager.svelte.d.ts.map +1 -0
  90. package/dist/spreadsheet/SheetTabs.svelte +161 -0
  91. package/dist/spreadsheet/SheetTabs.svelte.d.ts +10 -0
  92. package/dist/spreadsheet/SheetTabs.svelte.d.ts.map +1 -0
  93. package/dist/spreadsheet/SpreadsheetConditionalFormatPanel.svelte +184 -0
  94. package/dist/spreadsheet/SpreadsheetConditionalFormatPanel.svelte.d.ts +9 -0
  95. package/dist/spreadsheet/SpreadsheetConditionalFormatPanel.svelte.d.ts.map +1 -0
  96. package/dist/spreadsheet/SpreadsheetContextMenu.svelte +9 -4
  97. package/dist/spreadsheet/SpreadsheetContextMenu.svelte.d.ts +5 -1
  98. package/dist/spreadsheet/SpreadsheetContextMenu.svelte.d.ts.map +1 -1
  99. package/dist/spreadsheet/SpreadsheetDataValidationPanel.svelte +141 -0
  100. package/dist/spreadsheet/SpreadsheetDataValidationPanel.svelte.d.ts +9 -0
  101. package/dist/spreadsheet/SpreadsheetDataValidationPanel.svelte.d.ts.map +1 -0
  102. package/dist/spreadsheet/SpreadsheetEditor.svelte +273 -19
  103. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts +8 -0
  104. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts.map +1 -1
  105. package/dist/spreadsheet/SpreadsheetGroupRow.svelte +31 -3
  106. package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts +6 -0
  107. package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts.map +1 -1
  108. package/dist/spreadsheet/SpreadsheetValidationDialog.svelte +92 -0
  109. package/dist/spreadsheet/SpreadsheetValidationDialog.svelte.d.ts +9 -0
  110. package/dist/spreadsheet/SpreadsheetValidationDialog.svelte.d.ts.map +1 -0
  111. package/dist/spreadsheet/index.d.ts +10 -0
  112. package/dist/spreadsheet/index.d.ts.map +1 -1
  113. package/dist/spreadsheet/index.js +6 -0
  114. package/dist/spreadsheet/spreadsheet.svelte.d.ts +56 -3
  115. package/dist/spreadsheet/spreadsheet.svelte.d.ts.map +1 -1
  116. package/dist/spreadsheet/spreadsheet.svelte.js +105 -6
  117. package/dist/spreadsheet/viewport.svelte.d.ts +26 -0
  118. package/dist/spreadsheet/viewport.svelte.d.ts.map +1 -0
  119. package/dist/spreadsheet/viewport.svelte.js +93 -0
  120. package/dist/tables/InsertTableGrid.svelte +85 -0
  121. package/dist/tables/InsertTableGrid.svelte.d.ts +21 -0
  122. package/dist/tables/InsertTableGrid.svelte.d.ts.map +1 -0
  123. package/dist/tables/TableBubbleMenu.svelte +43 -0
  124. package/dist/tables/TableBubbleMenu.svelte.d.ts +18 -0
  125. package/dist/tables/TableBubbleMenu.svelte.d.ts.map +1 -0
  126. package/dist/tables/TableToolbar.svelte +81 -0
  127. package/dist/tables/TableToolbar.svelte.d.ts +19 -0
  128. package/dist/tables/TableToolbar.svelte.d.ts.map +1 -0
  129. package/dist/tables/index.d.ts +12 -0
  130. package/dist/tables/index.d.ts.map +1 -0
  131. package/dist/tables/index.js +4 -0
  132. package/dist/tables/tableMenu.svelte.d.ts +21 -0
  133. package/dist/tables/tableMenu.svelte.d.ts.map +1 -0
  134. package/dist/tables/tableMenu.svelte.js +27 -0
  135. package/dist/tokens/TokenSwatch.svelte +14 -0
  136. package/dist/tokens/TokenSwatch.svelte.d.ts +8 -0
  137. package/dist/tokens/TokenSwatch.svelte.d.ts.map +1 -0
  138. package/dist/tokens/TokensPanel.svelte +323 -0
  139. package/dist/tokens/TokensPanel.svelte.d.ts +14 -0
  140. package/dist/tokens/TokensPanel.svelte.d.ts.map +1 -0
  141. package/dist/tokens/createTokens.svelte.d.ts +31 -0
  142. package/dist/tokens/createTokens.svelte.d.ts.map +1 -0
  143. package/dist/tokens/createTokens.svelte.js +43 -0
  144. package/dist/tokens/index.d.ts +7 -0
  145. package/dist/tokens/index.d.ts.map +1 -0
  146. package/dist/tokens/index.js +3 -0
  147. package/package.json +10 -2
@@ -0,0 +1,85 @@
1
+ <script lang="ts">
2
+ import type { Editor } from "@tiptap/core";
3
+ import { createTableMenu, type SvelteTableMenu } from "./tableMenu.svelte.js";
4
+
5
+ interface Props {
6
+ editor?: Editor | null;
7
+ /** Grid size offered (default 8 × 8). */
8
+ rows?: number;
9
+ cols?: number;
10
+ /** Insert with a header row (default `true`). */
11
+ withHeaderRow?: boolean;
12
+ class?: string;
13
+ cellClass?: string;
14
+ activeCellClass?: string;
15
+ /** Called after a table was inserted. */
16
+ oninsert?: (size: { rows: number; cols: number }) => void;
17
+ }
18
+
19
+ let {
20
+ editor = null,
21
+ rows = 8,
22
+ cols = 8,
23
+ withHeaderRow = true,
24
+ class: className = "inline-flex flex-col gap-1 rounded-md border border-border bg-background p-2 text-xs shadow-md",
25
+ cellClass = "h-4 w-4 rounded-sm border border-border bg-background disabled:opacity-40",
26
+ activeCellClass = "border-primary bg-primary/20",
27
+ oninsert,
28
+ }: Props = $props();
29
+
30
+ let table = $state.raw<SvelteTableMenu>(createTableMenu(null));
31
+ $effect(() => {
32
+ const menu = createTableMenu(editor);
33
+ table = menu;
34
+ return () => menu.destroy();
35
+ });
36
+
37
+ let hover = $state<{ rows: number; cols: number } | null>(null);
38
+ let status = $derived(table.current.actions.insertTable);
39
+ let disabled = $derived(!editor || !status.enabled);
40
+ let sizes = $derived(
41
+ Array.from({ length: rows * cols }, (_, i) => ({ rows: Math.floor(i / cols) + 1, cols: (i % cols) + 1 })),
42
+ );
43
+
44
+ const keepSelection = (event: MouseEvent) => event.preventDefault();
45
+
46
+ function insert(size: { rows: number; cols: number }) {
47
+ if (table.run("insertTable", { ...size, withHeaderRow })) oninsert?.(size);
48
+ hover = null;
49
+ }
50
+ </script>
51
+
52
+ <div
53
+ class={className}
54
+ role="group"
55
+ aria-label="Insert table"
56
+ title={disabled ? status.reason : undefined}
57
+ data-insert-table-grid=""
58
+ onmouseleave={() => (hover = null)}
59
+ >
60
+ <div
61
+ role="grid"
62
+ aria-label="Table size"
63
+ style="display: grid; grid-template-columns: repeat({cols}, max-content); gap: 2px"
64
+ >
65
+ {#each sizes as size, i (i)}
66
+ {@const active = !!hover && size.rows <= hover.rows && size.cols <= hover.cols}
67
+ <button
68
+ type="button"
69
+ data-rows={size.rows}
70
+ data-cols={size.cols}
71
+ data-active={active}
72
+ aria-label="{size.rows} × {size.cols} table"
73
+ {disabled}
74
+ class={active ? `${cellClass} ${activeCellClass}` : cellClass}
75
+ onmousedown={keepSelection}
76
+ onmouseenter={() => (hover = size)}
77
+ onfocus={() => (hover = size)}
78
+ onclick={() => insert(size)}
79
+ ></button>
80
+ {/each}
81
+ </div>
82
+ <div aria-live="polite" data-testid="insert-table-size">
83
+ {disabled ? status.reason : hover ? `${hover.rows} × ${hover.cols}` : "Insert table"}
84
+ </div>
85
+ </div>
@@ -0,0 +1,21 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ interface Props {
3
+ editor?: Editor | null;
4
+ /** Grid size offered (default 8 × 8). */
5
+ rows?: number;
6
+ cols?: number;
7
+ /** Insert with a header row (default `true`). */
8
+ withHeaderRow?: boolean;
9
+ class?: string;
10
+ cellClass?: string;
11
+ activeCellClass?: string;
12
+ /** Called after a table was inserted. */
13
+ oninsert?: (size: {
14
+ rows: number;
15
+ cols: number;
16
+ }) => void;
17
+ }
18
+ declare const InsertTableGrid: import("svelte").Component<Props, {}, "">;
19
+ type InsertTableGrid = ReturnType<typeof InsertTableGrid>;
20
+ export default InsertTableGrid;
21
+ //# sourceMappingURL=InsertTableGrid.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsertTableGrid.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/InsertTableGrid.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAIzC,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3D;AAqDH,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import type { Editor } from "@tiptap/core";
4
+ import { shouldShowTableBubbleMenu, type TableToolbarItem } from "@pixerate/editor";
5
+ import BubbleMenu from "../BubbleMenu.svelte";
6
+ import TableToolbar from "./TableToolbar.svelte";
7
+
8
+ interface Props {
9
+ editor?: Editor;
10
+ class?: string;
11
+ pluginKey?: any;
12
+ updateDelay?: number;
13
+ tippyOptions?: Record<string, any>;
14
+ /** Buttons of the default toolbar. */
15
+ items?: readonly TableToolbarItem[];
16
+ /** Custom content (default: a `TableToolbar`). */
17
+ children?: Snippet;
18
+ }
19
+
20
+ let {
21
+ editor,
22
+ class: className = "flex h-fit w-fit items-center gap-1 rounded-md border border-gray-200 bg-white p-1 shadow-md",
23
+ pluginKey = "tableBubbleMenu",
24
+ updateDelay = 250,
25
+ tippyOptions = {},
26
+ items,
27
+ children,
28
+ }: Props = $props();
29
+ </script>
30
+
31
+ <!--
32
+ A bubble menu that follows the selection while it is in a table (even a
33
+ collapsed cursor), with the table toolbar or your own children. It uses its
34
+ own plugin key (`tableBubbleMenu`), so it can be combined with the
35
+ formatting `BubbleMenu`.
36
+ -->
37
+ <BubbleMenu {editor} class={className} {pluginKey} {updateDelay} {tippyOptions} shouldShow={shouldShowTableBubbleMenu}>
38
+ {#if children}
39
+ {@render children()}
40
+ {:else}
41
+ <TableToolbar {editor} {...items ? { items } : {}} />
42
+ {/if}
43
+ </BubbleMenu>
@@ -0,0 +1,18 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { Editor } from "@tiptap/core";
3
+ import { type TableToolbarItem } from "@pixerate/editor";
4
+ interface Props {
5
+ editor?: Editor;
6
+ class?: string;
7
+ pluginKey?: any;
8
+ updateDelay?: number;
9
+ tippyOptions?: Record<string, any>;
10
+ /** Buttons of the default toolbar. */
11
+ items?: readonly TableToolbarItem[];
12
+ /** Custom content (default: a `TableToolbar`). */
13
+ children?: Snippet;
14
+ }
15
+ declare const TableBubbleMenu: import("svelte").Component<Props, {}, "">;
16
+ type TableBubbleMenu = ReturnType<typeof TableBubbleMenu>;
17
+ export default TableBubbleMenu;
18
+ //# sourceMappingURL=TableBubbleMenu.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableBubbleMenu.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/TableBubbleMenu.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKlF,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+BH,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -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
+ }
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ color: string;
4
+ class?: string;
5
+ }
6
+ let { color, class: className = '' }: Props = $props();
7
+ </script>
8
+
9
+ <span
10
+ data-token-swatch={color}
11
+ class="inline-block h-4 w-4 shrink-0 rounded border border-border {className}"
12
+ style="background: linear-gradient({color}, {color}), repeating-conic-gradient(#ccc 0 25%, #fff 0 50%) 0 0 / 8px 8px"
13
+ aria-hidden="true"
14
+ ></span>
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ color: string;
3
+ class?: string;
4
+ }
5
+ declare const TokenSwatch: import("svelte").Component<Props, {}, "">;
6
+ type TokenSwatch = ReturnType<typeof TokenSwatch>;
7
+ export default TokenSwatch;
8
+ //# sourceMappingURL=TokenSwatch.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSwatch.svelte.d.ts","sourceRoot":"","sources":["../../src/tokens/TokenSwatch.svelte.ts"],"names":[],"mappings":"AAGE,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUH,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}