@pixerate/editor-svelte 0.15.3 → 0.16.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 (150) hide show
  1. package/README.md +83 -0
  2. package/dist/BubbleMenu.svelte.d.ts +14 -0
  3. package/dist/BubbleMenu.svelte.d.ts.map +1 -0
  4. package/{src → dist}/EditableTextNodeEditor.svelte +1 -1
  5. package/dist/EditableTextNodeEditor.svelte.d.ts +26 -0
  6. package/dist/EditableTextNodeEditor.svelte.d.ts.map +1 -0
  7. package/dist/TemplateRenderer.svelte.d.ts +14 -0
  8. package/dist/TemplateRenderer.svelte.d.ts.map +1 -0
  9. package/dist/canvas/AgentPresenceLayer.svelte.d.ts +9 -0
  10. package/dist/canvas/AgentPresenceLayer.svelte.d.ts.map +1 -0
  11. package/dist/canvas/FloatingHorizontalScrollbar.svelte.d.ts +9 -0
  12. package/dist/canvas/FloatingHorizontalScrollbar.svelte.d.ts.map +1 -0
  13. package/dist/canvas/createCanvasClipboard.svelte.d.ts +32 -0
  14. package/dist/canvas/createCanvasClipboard.svelte.d.ts.map +1 -0
  15. package/dist/canvas/createCanvasClipboard.svelte.js +171 -0
  16. package/dist/canvas/createCanvasDisplacement.d.ts +32 -0
  17. package/dist/canvas/createCanvasDisplacement.d.ts.map +1 -0
  18. package/dist/canvas/createCanvasDisplacement.js +170 -0
  19. package/dist/canvas/createCanvasDocking.svelte.d.ts +56 -0
  20. package/dist/canvas/createCanvasDocking.svelte.d.ts.map +1 -0
  21. package/dist/canvas/createCanvasDocking.svelte.js +227 -0
  22. package/dist/canvas/createCanvasExplosion.svelte.d.ts +31 -0
  23. package/dist/canvas/createCanvasExplosion.svelte.d.ts.map +1 -0
  24. package/dist/canvas/createCanvasExplosion.svelte.js +346 -0
  25. package/dist/canvas/createCanvasGraph.svelte.d.ts +62 -0
  26. package/dist/canvas/createCanvasGraph.svelte.d.ts.map +1 -0
  27. package/dist/canvas/createCanvasGraph.svelte.js +223 -0
  28. package/dist/canvas/createCanvasInteractions.svelte.d.ts +28 -0
  29. package/dist/canvas/createCanvasInteractions.svelte.d.ts.map +1 -0
  30. package/dist/canvas/createCanvasInteractions.svelte.js +95 -0
  31. package/dist/canvas/createCanvasLayout.d.ts +22 -0
  32. package/dist/canvas/createCanvasLayout.d.ts.map +1 -0
  33. package/dist/canvas/createCanvasLayout.js +76 -0
  34. package/dist/canvas/createCanvasMultiDrag.svelte.d.ts +61 -0
  35. package/dist/canvas/createCanvasMultiDrag.svelte.d.ts.map +1 -0
  36. package/dist/canvas/createCanvasMultiDrag.svelte.js +105 -0
  37. package/dist/canvas/createCanvasNodeSync.svelte.d.ts +58 -0
  38. package/dist/canvas/createCanvasNodeSync.svelte.d.ts.map +1 -0
  39. package/dist/canvas/createCanvasNodeSync.svelte.js +82 -0
  40. package/dist/canvas/createCanvasSelection.svelte.d.ts +26 -0
  41. package/dist/canvas/createCanvasSelection.svelte.d.ts.map +1 -0
  42. package/dist/canvas/createCanvasSelection.svelte.js +26 -0
  43. package/dist/canvas/createCanvasShortcuts.d.ts +9 -0
  44. package/dist/canvas/createCanvasShortcuts.d.ts.map +1 -0
  45. package/dist/canvas/createCanvasShortcuts.js +97 -0
  46. package/dist/canvas/createCanvasTrajectory.d.ts +31 -0
  47. package/dist/canvas/createCanvasTrajectory.d.ts.map +1 -0
  48. package/dist/canvas/createCanvasTrajectory.js +141 -0
  49. package/dist/canvas/createStreamingCanvas.svelte.d.ts +19 -0
  50. package/dist/canvas/createStreamingCanvas.svelte.d.ts.map +1 -0
  51. package/dist/canvas/createStreamingCanvas.svelte.js +32 -0
  52. package/dist/canvas/index.d.ts +18 -688
  53. package/dist/canvas/index.d.ts.map +1 -0
  54. package/dist/canvas/index.js +34 -1839
  55. package/dist/canvas/types.d.ts +183 -0
  56. package/dist/canvas/types.d.ts.map +1 -0
  57. package/dist/canvas/types.js +1 -0
  58. package/dist/createNavigationGuard.svelte.d.ts +24 -0
  59. package/dist/createNavigationGuard.svelte.d.ts.map +1 -0
  60. package/dist/createNavigationGuard.svelte.js +65 -0
  61. package/dist/editor.svelte.d.ts +23 -0
  62. package/dist/editor.svelte.d.ts.map +1 -0
  63. package/dist/editor.svelte.js +41 -0
  64. package/dist/history/createHistoryShortcuts.d.ts +24 -0
  65. package/dist/history/createHistoryShortcuts.d.ts.map +1 -0
  66. package/dist/history/createHistoryShortcuts.js +57 -0
  67. package/dist/history/history.svelte.d.ts +18 -0
  68. package/dist/history/history.svelte.d.ts.map +1 -0
  69. package/dist/history/history.svelte.js +43 -0
  70. package/dist/history/index.d.ts +3 -0
  71. package/dist/history/index.d.ts.map +1 -0
  72. package/dist/history/index.js +2 -0
  73. package/{src → dist}/image-editor/ImageEditor.svelte +1 -1
  74. package/dist/image-editor/ImageEditor.svelte.d.ts +17 -0
  75. package/dist/image-editor/ImageEditor.svelte.d.ts.map +1 -0
  76. package/dist/image-editor/imageEditorState.svelte.d.ts +50 -0
  77. package/dist/image-editor/imageEditorState.svelte.d.ts.map +1 -0
  78. package/dist/image-editor/imageEditorState.svelte.js +132 -0
  79. package/dist/image-editor/index.d.ts +6 -16
  80. package/dist/image-editor/index.d.ts.map +1 -0
  81. package/dist/image-editor/index.js +2 -9
  82. package/dist/index.d.ts +20 -249
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +10 -1119
  85. package/dist/navigationGuard.d.ts +21 -0
  86. package/dist/navigationGuard.d.ts.map +1 -0
  87. package/dist/navigationGuard.js +59 -0
  88. package/{src → dist}/spreadsheet/FormulaBar.svelte +1 -1
  89. package/dist/spreadsheet/FormulaBar.svelte.d.ts +17 -0
  90. package/dist/spreadsheet/FormulaBar.svelte.d.ts.map +1 -0
  91. package/{src → dist}/spreadsheet/SpreadsheetEditor.svelte +1 -1
  92. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts +22 -0
  93. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts.map +1 -0
  94. package/dist/spreadsheet/index.d.ts +9 -0
  95. package/dist/spreadsheet/index.d.ts.map +1 -0
  96. package/{src/spreadsheet/index.ts → dist/spreadsheet/index.js} +1 -1
  97. package/dist/spreadsheet/spreadsheet.svelte.d.ts +33 -0
  98. package/dist/spreadsheet/spreadsheet.svelte.d.ts.map +1 -0
  99. package/dist/spreadsheet/spreadsheet.svelte.js +160 -0
  100. package/package.json +14 -16
  101. package/dist/canvas/index.js.map +0 -1
  102. package/dist/chunk-HEOI4UNF.js +0 -1191
  103. package/dist/chunk-HEOI4UNF.js.map +0 -1
  104. package/dist/image-editor/index.js.map +0 -1
  105. package/dist/index.css +0 -50
  106. package/dist/index.css.map +0 -1
  107. package/dist/index.js.map +0 -1
  108. package/src/canvas/__tests__/canvas-clipboard.test.ts +0 -154
  109. package/src/canvas/__tests__/canvas-docking.test.ts +0 -288
  110. package/src/canvas/__tests__/canvas-explosion.test.ts +0 -634
  111. package/src/canvas/__tests__/canvas-graph.test.ts +0 -159
  112. package/src/canvas/__tests__/canvas-interactions.test.ts +0 -86
  113. package/src/canvas/__tests__/canvas-layout.test.ts +0 -75
  114. package/src/canvas/__tests__/canvas-multi-drag.test.ts +0 -112
  115. package/src/canvas/__tests__/canvas-node-sync.svelte.test.ts +0 -104
  116. package/src/canvas/__tests__/canvas-shortcuts.test.ts +0 -59
  117. package/src/canvas/createCanvasClipboard.svelte.ts +0 -219
  118. package/src/canvas/createCanvasDisplacement.ts +0 -253
  119. package/src/canvas/createCanvasDocking.svelte.ts +0 -355
  120. package/src/canvas/createCanvasExplosion.svelte.ts +0 -457
  121. package/src/canvas/createCanvasGraph.svelte.ts +0 -330
  122. package/src/canvas/createCanvasInteractions.svelte.ts +0 -112
  123. package/src/canvas/createCanvasLayout.ts +0 -129
  124. package/src/canvas/createCanvasMultiDrag.svelte.ts +0 -175
  125. package/src/canvas/createCanvasNodeSync.svelte.ts +0 -150
  126. package/src/canvas/createCanvasSelection.svelte.ts +0 -51
  127. package/src/canvas/createCanvasShortcuts.ts +0 -99
  128. package/src/canvas/createCanvasTrajectory.ts +0 -207
  129. package/src/canvas/createStreamingCanvas.svelte.ts +0 -56
  130. package/src/canvas/index.d.ts +0 -688
  131. package/src/canvas/index.ts +0 -126
  132. package/src/canvas/types.ts +0 -223
  133. package/src/createNavigationGuard.svelte.ts +0 -97
  134. package/src/editor.svelte.ts +0 -65
  135. package/src/history/createHistoryShortcuts.ts +0 -95
  136. package/src/history/history.svelte.ts +0 -68
  137. package/src/history/index.ts +0 -2
  138. package/src/image-editor/imageEditorState.svelte.ts +0 -151
  139. package/src/image-editor/index.d.ts +0 -16
  140. package/src/image-editor/index.ts +0 -2
  141. package/src/index.d.ts +0 -249
  142. package/src/index.ts +0 -89
  143. package/src/navigationGuard.ts +0 -82
  144. package/src/spreadsheet/spreadsheet.svelte.ts +0 -176
  145. package/src/svelte.d.ts +0 -5
  146. /package/{src → dist}/BubbleMenu.svelte +0 -0
  147. /package/{src → dist}/TemplateRenderer.svelte +0 -0
  148. /package/{src → dist}/canvas/AgentPresenceLayer.svelte +0 -0
  149. /package/{src → dist}/canvas/FloatingHorizontalScrollbar.svelte +0 -0
  150. /package/{src → dist}/canvas/README.md +0 -0
@@ -0,0 +1,21 @@
1
+ export interface NavigationGuardOptions {
2
+ /** Whether the current form or editor has unsaved changes */
3
+ isDirty: boolean;
4
+ /** Whether guarding is enabled (defaults to true) */
5
+ enabled?: boolean;
6
+ /** Callback fired when an internal navigation attempt is intercepted */
7
+ onBlocked?: (url: string) => void;
8
+ }
9
+ export interface NavigationGuardActionReturn {
10
+ update(newOptions: NavigationGuardOptions): void;
11
+ destroy(): void;
12
+ }
13
+ /**
14
+ * Svelte action to guard against navigation when there are unsaved changes.
15
+ * Attaches beforeunload to window and intercepts internal anchor clicks on the element.
16
+ *
17
+ * Usage:
18
+ * <div use:navigationGuard={{ isDirty, onBlocked: (url) => { pendingUrl = url; showConfirm = true; } }}>
19
+ */
20
+ export declare function navigationGuard(node: HTMLElement, options: NavigationGuardOptions): NavigationGuardActionReturn;
21
+ //# sourceMappingURL=navigationGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigationGuard.d.ts","sourceRoot":"","sources":["../src/navigationGuard.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,sBAAsB,GAC9B,2BAA2B,CAyD7B"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Svelte action to guard against navigation when there are unsaved changes.
3
+ * Attaches beforeunload to window and intercepts internal anchor clicks on the element.
4
+ *
5
+ * Usage:
6
+ * <div use:navigationGuard={{ isDirty, onBlocked: (url) => { pendingUrl = url; showConfirm = true; } }}>
7
+ */
8
+ export function navigationGuard(node, options) {
9
+ let isDirty = options.isDirty;
10
+ let enabled = options.enabled ?? true;
11
+ let onBlocked = options.onBlocked;
12
+ function handleBeforeUnload(e) {
13
+ if (!enabled || !isDirty)
14
+ return;
15
+ e.preventDefault();
16
+ e.returnValue = "";
17
+ }
18
+ function handleClick(e) {
19
+ if (!enabled || !isDirty)
20
+ return;
21
+ const target = e.target;
22
+ const anchor = target?.closest?.("a");
23
+ if (!anchor)
24
+ return;
25
+ if (anchor.target === "_blank")
26
+ return;
27
+ // Check if link is internal
28
+ if (typeof window !== "undefined") {
29
+ const isInternal = anchor.host === window.location.host;
30
+ if (!isInternal)
31
+ return;
32
+ if (anchor.pathname === window.location.pathname &&
33
+ anchor.search === window.location.search) {
34
+ return;
35
+ }
36
+ }
37
+ e.preventDefault();
38
+ e.stopPropagation();
39
+ const href = anchor.href;
40
+ onBlocked?.(href);
41
+ }
42
+ if (typeof window !== "undefined") {
43
+ window.addEventListener("beforeunload", handleBeforeUnload);
44
+ }
45
+ node.addEventListener("click", handleClick, { capture: true });
46
+ return {
47
+ update(newOptions) {
48
+ isDirty = newOptions.isDirty;
49
+ enabled = newOptions.enabled ?? true;
50
+ onBlocked = newOptions.onBlocked;
51
+ },
52
+ destroy() {
53
+ if (typeof window !== "undefined") {
54
+ window.removeEventListener("beforeunload", handleBeforeUnload);
55
+ }
56
+ node.removeEventListener("click", handleClick, { capture: true });
57
+ },
58
+ };
59
+ }
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { indexToColName } from '@pixerate/editor';
3
- import type { createReactiveSpreadsheet } from './spreadsheet.svelte';
3
+ import type { createReactiveSpreadsheet } from './spreadsheet.svelte.js';
4
4
 
5
5
  interface Props {
6
6
  sheetState?: ReturnType<typeof createReactiveSpreadsheet>;
@@ -0,0 +1,17 @@
1
+ import type { createReactiveSpreadsheet } from './spreadsheet.svelte.js';
2
+ interface Props {
3
+ sheetState?: ReturnType<typeof createReactiveSpreadsheet>;
4
+ activeCoord?: {
5
+ row: number;
6
+ col: number;
7
+ } | null;
8
+ value?: string;
9
+ onChange?: (val: string) => void;
10
+ onCommit?: (val: string) => void;
11
+ onCancel?: () => void;
12
+ class?: string;
13
+ }
14
+ declare const FormulaBar: import("svelte").Component<Props, {}, "value">;
15
+ type FormulaBar = ReturnType<typeof FormulaBar>;
16
+ export default FormulaBar;
17
+ //# sourceMappingURL=FormulaBar.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormulaBar.svelte.d.ts","sourceRoot":"","sources":["../../src/spreadsheet/FormulaBar.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGvE,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsFH,QAAA,MAAM,UAAU,gDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import type { Snippet } from 'svelte';
3
3
  import { indexToColName, type SpreadsheetColumn, type SpreadsheetRow, type CellData } from '@pixerate/editor';
4
4
  import FormulaBar from './FormulaBar.svelte';
5
- import { createReactiveSpreadsheet } from './spreadsheet.svelte';
5
+ import { createReactiveSpreadsheet } from './spreadsheet.svelte.js';
6
6
 
7
7
  interface Props {
8
8
  sheetState?: ReturnType<typeof createReactiveSpreadsheet>;
@@ -0,0 +1,22 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type SpreadsheetColumn, type SpreadsheetRow, type CellData } from '@pixerate/editor';
3
+ import { createReactiveSpreadsheet } from './spreadsheet.svelte.js';
4
+ interface Props {
5
+ sheetState?: ReturnType<typeof createReactiveSpreadsheet>;
6
+ readOnly?: boolean;
7
+ readonly?: boolean;
8
+ showFormulaBar?: boolean;
9
+ class?: string;
10
+ customCellRenderer?: Snippet<[CellData, SpreadsheetColumn, SpreadsheetRow]> | Snippet<[{
11
+ row: SpreadsheetRow;
12
+ col: SpreadsheetColumn;
13
+ cell: CellData;
14
+ }]>;
15
+ onAddColumnClick?: () => void;
16
+ onColumnHeaderClick?: (col: SpreadsheetColumn) => void;
17
+ onColumnResize?: (colId: string, width: number) => void;
18
+ }
19
+ declare const SpreadsheetEditor: import("svelte").Component<Props, {}, "">;
20
+ type SpreadsheetEditor = ReturnType<typeof SpreadsheetEditor>;
21
+ export default SpreadsheetEditor;
22
+ //# sourceMappingURL=SpreadsheetEditor.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpreadsheetEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/spreadsheet/SpreadsheetEditor.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAkB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9G,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EACf,OAAO,CAAC,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC,GACtD,OAAO,CAAC,CAAC;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,GAAG,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC,CAAC;IAC/E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAuYH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ComponentProps } from "svelte";
2
+ import type SpreadsheetEditorComponent from "./SpreadsheetEditor.svelte";
3
+ import type FormulaBarComponent from "./FormulaBar.svelte";
4
+ export { default as SpreadsheetEditor } from './SpreadsheetEditor.svelte';
5
+ export { default as FormulaBar } from './FormulaBar.svelte';
6
+ export * from './spreadsheet.svelte.js';
7
+ export type SpreadsheetEditorProps = ComponentProps<typeof SpreadsheetEditorComponent>;
8
+ export type FormulaBarProps = ComponentProps<typeof FormulaBarComponent>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spreadsheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,0BAA0B,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,cAAc,yBAAyB,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACvF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { default as SpreadsheetEditor } from './SpreadsheetEditor.svelte';
2
2
  export { default as FormulaBar } from './FormulaBar.svelte';
3
- export * from './spreadsheet.svelte';
3
+ export * from './spreadsheet.svelte.js';
@@ -0,0 +1,33 @@
1
+ import { SpreadsheetController, type SpreadsheetControllerOptions, type SpreadsheetDocument, type CellCoordinate, type CellRange, type CellData, type SpreadsheetColumn, type SpreadsheetRow, type SpreadsheetDataSource } from '@pixerate/editor';
2
+ export declare function createReactiveSpreadsheet(options?: SpreadsheetControllerOptions): {
3
+ readonly document: SpreadsheetDocument;
4
+ readonly activeCell: CellCoordinate | null;
5
+ readonly selectedRange: CellRange | null;
6
+ readonly editingCell: CellCoordinate | null;
7
+ draftValue: string;
8
+ controller: SpreadsheetController;
9
+ getCell(rowId: string, colId: string): CellData;
10
+ setCellValue(rowId: string, colId: string, raw: string): void;
11
+ selectCell(row: number, col: number, extendSelection?: boolean): void;
12
+ selectRange(range: CellRange): void;
13
+ startEditing(row?: number, col?: number, initialVal?: string): void;
14
+ commitEditing(val?: string): void;
15
+ cancelEditing(): void;
16
+ moveCursor(dir: "up" | "down" | "left" | "right", extend?: boolean): void;
17
+ insertColumn(index: number, config?: Partial<SpreadsheetColumn>): void;
18
+ deleteColumn(colId: string): void;
19
+ insertRow(index: number, config?: Partial<SpreadsheetRow>): void;
20
+ deleteRow(rowId: string): void;
21
+ setColumnWidth(colId: string, width: number): void;
22
+ autoFitColumnWidth(colId: string, customWidth?: number): void;
23
+ loadDocument(document: SpreadsheetDocument): void;
24
+ syncWithDataSource(): void;
25
+ registerDataSource(ds: SpreadsheetDataSource): void;
26
+ setPrimaryDataSource(id: string | undefined): void;
27
+ recalculateAll(): void;
28
+ exportToTsv(): string;
29
+ importFromTsv(data: string): void;
30
+ undo(): void;
31
+ redo(): void;
32
+ };
33
+ //# sourceMappingURL=spreadsheet.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spreadsheet.svelte.d.ts","sourceRoot":"","sources":["../../src/spreadsheet/spreadsheet.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,4BAAiC;;;;;gBAsD5D,MAAM;;mBAMX,MAAM,SAAS,MAAM,GAAG,QAAQ;wBAG3B,MAAM,SAAS,MAAM,OAAO,MAAM;oBAItC,MAAM,OAAO,MAAM;uBAKhB,SAAS;uBAIT,MAAM,QAAQ,MAAM,eAAe,MAAM;wBAMxC,MAAM;;oBAWV,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;wBAK5B,MAAM,WAAW,OAAO,CAAC,iBAAiB,CAAC;wBAI3C,MAAM;qBAIT,MAAM,WAAW,OAAO,CAAC,cAAc,CAAC;qBAIxC,MAAM;0BAID,MAAM,SAAS,MAAM;8BAIjB,MAAM,gBAAgB,MAAM;2BAI/B,mBAAmB;;2BAanB,qBAAqB;6BAInB,MAAM,GAAG,SAAS;;;wBAWvB,MAAM;;;EAa7B"}
@@ -0,0 +1,160 @@
1
+ import { SpreadsheetController } from '@pixerate/editor';
2
+ export function createReactiveSpreadsheet(options = {}) {
3
+ let doc = $state({
4
+ id: options.document?.id || `sheet_${Date.now()}`,
5
+ name: options.document?.name || 'Sheet 1',
6
+ columns: options.document?.columns || [],
7
+ rows: options.document?.rows || [],
8
+ cells: options.document?.cells || {},
9
+ createdAt: options.document?.createdAt || Date.now(),
10
+ updatedAt: options.document?.updatedAt || Date.now()
11
+ });
12
+ let activeCell = $state(null);
13
+ let selectedRange = $state(null);
14
+ let editingCell = $state(null);
15
+ let draftValue = $state('');
16
+ const controller = new SpreadsheetController({
17
+ ...options,
18
+ document: options.document,
19
+ onDocumentChange: (updated) => {
20
+ doc = { ...updated };
21
+ options.onDocumentChange?.(updated);
22
+ },
23
+ onSelectionChange: (active, range) => {
24
+ activeCell = active;
25
+ selectedRange = range;
26
+ options.onSelectionChange?.(active, range);
27
+ },
28
+ onCellCommit: (rowId, colId, raw, value) => {
29
+ options.onCellCommit?.(rowId, colId, raw, value);
30
+ }
31
+ });
32
+ // Keep initial states aligned
33
+ doc = { ...controller.document };
34
+ activeCell = controller.activeCell;
35
+ selectedRange = controller.selectedRange;
36
+ return {
37
+ get document() {
38
+ return doc;
39
+ },
40
+ get activeCell() {
41
+ return activeCell;
42
+ },
43
+ get selectedRange() {
44
+ return selectedRange;
45
+ },
46
+ get editingCell() {
47
+ return editingCell;
48
+ },
49
+ get draftValue() {
50
+ return draftValue;
51
+ },
52
+ set draftValue(val) {
53
+ draftValue = val;
54
+ controller.draftValue = val;
55
+ },
56
+ controller,
57
+ getCell(rowId, colId) {
58
+ return controller.getCell(rowId, colId);
59
+ },
60
+ setCellValue(rowId, colId, raw) {
61
+ controller.setCellValue(rowId, colId, raw);
62
+ doc = { ...controller.document };
63
+ },
64
+ selectCell(row, col, extendSelection = false) {
65
+ controller.selectCell(row, col, extendSelection);
66
+ activeCell = controller.activeCell;
67
+ selectedRange = controller.selectedRange;
68
+ },
69
+ selectRange(range) {
70
+ controller.selectRange(range);
71
+ selectedRange = controller.selectedRange;
72
+ },
73
+ startEditing(row, col, initialVal) {
74
+ controller.startEditing(row, col, initialVal);
75
+ activeCell = controller.activeCell;
76
+ editingCell = controller.editingCell;
77
+ draftValue = controller.draftValue;
78
+ },
79
+ commitEditing(val) {
80
+ controller.commitEditing(val);
81
+ editingCell = null;
82
+ draftValue = '';
83
+ doc = { ...controller.document };
84
+ },
85
+ cancelEditing() {
86
+ controller.cancelEditing();
87
+ editingCell = null;
88
+ draftValue = '';
89
+ },
90
+ moveCursor(dir, extend = false) {
91
+ controller.moveCursor(dir, extend);
92
+ activeCell = controller.activeCell;
93
+ selectedRange = controller.selectedRange;
94
+ },
95
+ insertColumn(index, config) {
96
+ controller.insertColumn(index, config);
97
+ doc = { ...controller.document };
98
+ },
99
+ deleteColumn(colId) {
100
+ controller.deleteColumn(colId);
101
+ doc = { ...controller.document };
102
+ },
103
+ insertRow(index, config) {
104
+ controller.insertRow(index, config);
105
+ doc = { ...controller.document };
106
+ },
107
+ deleteRow(rowId) {
108
+ controller.deleteRow(rowId);
109
+ doc = { ...controller.document };
110
+ },
111
+ setColumnWidth(colId, width) {
112
+ controller.setColumnWidth(colId, width);
113
+ doc = { ...controller.document };
114
+ },
115
+ autoFitColumnWidth(colId, customWidth) {
116
+ controller.autoFitColumnWidth(colId, customWidth);
117
+ doc = { ...controller.document };
118
+ },
119
+ loadDocument(document) {
120
+ controller.loadDocument(document);
121
+ doc = { ...controller.document };
122
+ activeCell = controller.activeCell;
123
+ selectedRange = controller.selectedRange;
124
+ editingCell = controller.editingCell;
125
+ draftValue = controller.draftValue;
126
+ },
127
+ syncWithDataSource() {
128
+ controller.syncWithDataSource();
129
+ controller.recalculateAll();
130
+ doc = { ...controller.document };
131
+ },
132
+ registerDataSource(ds) {
133
+ controller.registerDataSource(ds);
134
+ doc = { ...controller.document };
135
+ },
136
+ setPrimaryDataSource(id) {
137
+ controller.setPrimaryDataSource(id);
138
+ doc = { ...controller.document };
139
+ },
140
+ recalculateAll() {
141
+ controller.recalculateAll();
142
+ doc = { ...controller.document };
143
+ },
144
+ exportToTsv() {
145
+ return controller.exportToTsv();
146
+ },
147
+ importFromTsv(data) {
148
+ controller.importFromTsv(data);
149
+ doc = { ...controller.document };
150
+ },
151
+ undo() {
152
+ controller.undo();
153
+ doc = { ...controller.document };
154
+ },
155
+ redo() {
156
+ controller.redo();
157
+ doc = { ...controller.document };
158
+ }
159
+ };
160
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.15.3",
3
+ "version": "0.16.1",
4
4
  "description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -10,29 +10,25 @@
10
10
  "directory": "packages/svelte"
11
11
  },
12
12
  "type": "module",
13
- "main": "./dist/index.js",
14
- "module": "./dist/index.js",
15
- "types": "./dist/index.d.ts",
16
13
  "svelte": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
17
15
  "exports": {
18
16
  ".": {
19
17
  "types": "./dist/index.d.ts",
20
18
  "svelte": "./dist/index.js",
21
- "import": "./dist/index.js",
22
19
  "default": "./dist/index.js"
23
20
  },
24
21
  "./canvas": {
25
22
  "types": "./dist/canvas/index.d.ts",
26
23
  "svelte": "./dist/canvas/index.js",
27
- "import": "./dist/canvas/index.js",
28
24
  "default": "./dist/canvas/index.js"
29
25
  },
30
26
  "./image-editor": {
31
27
  "types": "./dist/image-editor/index.d.ts",
32
28
  "svelte": "./dist/image-editor/index.js",
33
- "import": "./dist/image-editor/index.js",
34
29
  "default": "./dist/image-editor/index.js"
35
- }
30
+ },
31
+ "./package.json": "./package.json"
36
32
  },
37
33
  "typesVersions": {
38
34
  "*": {
@@ -46,7 +42,10 @@
46
42
  },
47
43
  "files": [
48
44
  "dist",
49
- "src"
45
+ "!dist/**/*.test.*"
46
+ ],
47
+ "sideEffects": [
48
+ "**/*.css"
50
49
  ],
51
50
  "dependencies": {
52
51
  "@dagrejs/dagre": "^1.1.4",
@@ -55,11 +54,11 @@
55
54
  "@tiptap/extension-placeholder": "^2.11.5",
56
55
  "@tiptap/pm": "^2.11.5",
57
56
  "@tiptap/starter-kit": "^2.11.5",
58
- "@pixerate/editor": "0.14.2"
57
+ "@pixerate/editor": "0.14.3"
59
58
  },
60
59
  "peerDependencies": {
61
60
  "@xyflow/svelte": "^1.6.0",
62
- "svelte": "^4.0.0 || ^5.0.0"
61
+ "svelte": "^5.0.0"
63
62
  },
64
63
  "peerDependenciesMeta": {
65
64
  "@xyflow/svelte": {
@@ -67,19 +66,18 @@
67
66
  }
68
67
  },
69
68
  "devDependencies": {
69
+ "@sveltejs/package": "^2.5.8",
70
70
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
71
71
  "@types/dagre": "^0.7.52",
72
72
  "@xyflow/svelte": "^1.6.6",
73
- "esbuild-svelte": "^0.9.5",
74
73
  "svelte": "^5.0.0",
75
- "svelte-preprocess": "^6.0.5",
76
- "tsup": "^8.4.0",
74
+ "svelte-check": "^4.7.6",
77
75
  "typescript": "^5.7.3",
78
76
  "vitest": "^4.1.11"
79
77
  },
80
78
  "scripts": {
81
- "build": "tsup",
82
- "typecheck": "tsc --noEmit",
79
+ "build": "svelte-package -i src -o dist",
80
+ "typecheck": "svelte-check --tsconfig ./tsconfig.json --fail-on-warnings=false",
83
81
  "test": "vitest run"
84
82
  }
85
83
  }