@pixerate/editor-svelte 0.18.0 → 0.20.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.
- package/README.md +26 -2
- package/dist/EditableTextNodeEditor.svelte +19 -3
- package/dist/EditableTextNodeEditor.svelte.d.ts +5 -1
- package/dist/EditableTextNodeEditor.svelte.d.ts.map +1 -1
- package/dist/OutlinePanel.svelte +85 -0
- package/dist/OutlinePanel.svelte.d.ts +25 -0
- package/dist/OutlinePanel.svelte.d.ts.map +1 -0
- package/dist/TemplateRenderer.svelte +54 -7
- package/dist/TemplateRenderer.svelte.d.ts +8 -1
- package/dist/TemplateRenderer.svelte.d.ts.map +1 -1
- package/dist/VariableForm.svelte +86 -0
- package/dist/VariableForm.svelte.d.ts +21 -0
- package/dist/VariableForm.svelte.d.ts.map +1 -0
- package/dist/agentTools.svelte.d.ts +12 -0
- package/dist/agentTools.svelte.d.ts.map +1 -0
- package/dist/agentTools.svelte.js +17 -0
- package/dist/canvas/CanvasGuidesLayer.svelte +52 -0
- package/dist/canvas/CanvasGuidesLayer.svelte.d.ts +16 -0
- package/dist/canvas/CanvasGuidesLayer.svelte.d.ts.map +1 -0
- package/dist/canvas/createCanvasArrange.svelte.d.ts +63 -0
- package/dist/canvas/createCanvasArrange.svelte.d.ts.map +1 -0
- package/dist/canvas/createCanvasArrange.svelte.js +60 -0
- package/dist/canvas/createCanvasScenes.svelte.d.ts +51 -0
- package/dist/canvas/createCanvasScenes.svelte.d.ts.map +1 -0
- package/dist/canvas/createCanvasScenes.svelte.js +62 -0
- package/dist/canvas/index.d.ts +4 -0
- package/dist/canvas/index.d.ts.map +1 -1
- package/dist/canvas/index.js +5 -0
- package/dist/fileImport.svelte.d.ts +25 -0
- package/dist/fileImport.svelte.d.ts.map +1 -0
- package/dist/fileImport.svelte.js +40 -0
- package/dist/history/createHistoryShortcuts.d.ts +1 -1
- package/dist/history/createHistoryShortcuts.d.ts.map +1 -1
- package/dist/history/history.svelte.d.ts +1 -1
- package/dist/history/history.svelte.d.ts.map +1 -1
- package/dist/history/history.svelte.js +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/outline.svelte.d.ts +18 -0
- package/dist/outline.svelte.d.ts.map +1 -0
- package/dist/outline.svelte.js +27 -0
- package/dist/review/CommentButton.svelte +32 -0
- package/dist/review/CommentButton.svelte.d.ts +10 -0
- package/dist/review/CommentButton.svelte.d.ts.map +1 -0
- package/dist/review/CommentsPanel.svelte +226 -0
- package/dist/review/CommentsPanel.svelte.d.ts +18 -0
- package/dist/review/CommentsPanel.svelte.d.ts.map +1 -0
- package/dist/review/ReviewToolbar.svelte +86 -0
- package/dist/review/ReviewToolbar.svelte.d.ts +9 -0
- package/dist/review/ReviewToolbar.svelte.d.ts.map +1 -0
- package/dist/review/index.d.ts +12 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +4 -0
- package/dist/review/review.svelte.d.ts +40 -0
- package/dist/review/review.svelte.d.ts.map +1 -0
- package/dist/review/review.svelte.js +104 -0
- package/dist/spreadsheet/FormulaBar.svelte +14 -6
- package/dist/spreadsheet/FormulaBar.svelte.d.ts.map +1 -1
- package/dist/spreadsheet/FormulaHints.svelte +149 -0
- package/dist/spreadsheet/FormulaHints.svelte.d.ts +14 -0
- package/dist/spreadsheet/FormulaHints.svelte.d.ts.map +1 -0
- package/dist/spreadsheet/SpreadsheetContextMenu.svelte +60 -0
- package/dist/spreadsheet/SpreadsheetContextMenu.svelte.d.ts +11 -0
- package/dist/spreadsheet/SpreadsheetContextMenu.svelte.d.ts.map +1 -0
- package/dist/spreadsheet/SpreadsheetEditor.svelte +172 -19
- package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts +1 -1
- package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts.map +1 -1
- package/dist/spreadsheet/SpreadsheetGroupRow.svelte +55 -0
- package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts +14 -0
- package/dist/spreadsheet/SpreadsheetGroupRow.svelte.d.ts.map +1 -0
- package/dist/spreadsheet/index.d.ts +6 -0
- package/dist/spreadsheet/index.d.ts.map +1 -1
- package/dist/spreadsheet/index.js +4 -0
- package/dist/spreadsheet/spreadsheet.svelte.d.ts +43 -5
- package/dist/spreadsheet/spreadsheet.svelte.d.ts.map +1 -1
- package/dist/spreadsheet/spreadsheet.svelte.js +16 -2
- package/dist/spreadsheet/tableInteractions.d.ts +28 -0
- package/dist/spreadsheet/tableInteractions.d.ts.map +1 -0
- package/dist/spreadsheet/tableInteractions.js +61 -0
- package/package.json +15 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type ArrangeShortcutBinding, type CanvasArrangeAction, type CanvasArrangeControllerOptions, type GuideLine } from '@pixerate/editor/canvas';
|
|
2
|
+
import type { CanvasNode } from './types.js';
|
|
3
|
+
type CoreOptions = CanvasArrangeControllerOptions<any>;
|
|
4
|
+
export interface CreateCanvasArrangeOptions<TNode extends CanvasNode = CanvasNode> extends Omit<CoreOptions, 'getNodes' | 'setNodes' | 'onGuidesChange'> {
|
|
5
|
+
getNodes: () => TNode[];
|
|
6
|
+
setNodes: (nodes: TNode[]) => void;
|
|
7
|
+
onGuidesChange?: (guides: GuideLine[]) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Headless Svelte 5 rune for Freeform-style arrangement: align, distribute, make same size,
|
|
11
|
+
* lock / unlock, layer order and smart guides with snap-to-shape while dragging.
|
|
12
|
+
*
|
|
13
|
+
* Actions act on `getSelectedIds()` (default: selected nodes) when called without ids and
|
|
14
|
+
* are recorded as single undoable steps when a `HistoryManager` is passed as `history`.
|
|
15
|
+
*
|
|
16
|
+
* Wire snapping to SvelteFlow with `onnodedragstart={() => arrange.beginDrag()}`,
|
|
17
|
+
* `onnodedrag={({ nodes }) => arrange.drag(nodes.map((n) => n.id))}` and
|
|
18
|
+
* `onnodedragstop={() => arrange.endDrag()}`, and render `arrange.guides` with
|
|
19
|
+
* `<CanvasGuidesLayer>`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createCanvasArrange<TNode extends CanvasNode = CanvasNode>(options: CreateCanvasArrangeOptions<TNode>): {
|
|
22
|
+
guides: GuideLine[];
|
|
23
|
+
apply: (name: string, updates: import("@pixerate/editor/canvas").CanvasNodeUpdate[]) => import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
24
|
+
align(edge: import("@pixerate/editor/canvas").AlignEdge, ids?: Iterable<string>, alignOptions?: import("@pixerate/editor/canvas").AlignNodesOptions): import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
25
|
+
distribute(axis: import("@pixerate/editor/canvas").DistributeAxis, mode?: import("@pixerate/editor/canvas").DistributeMode, ids?: Iterable<string>, distributeOptions?: import("@pixerate/editor/canvas").DistributeNodesOptions): import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
26
|
+
matchSize(dimension: import("@pixerate/editor/canvas").SizeDimension, ids?: Iterable<string>, sizeOptions?: import("@pixerate/editor/canvas").MatchSizeOptions): import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
27
|
+
reorder(operation: import("@pixerate/editor/canvas").ZOrderOperation, ids?: Iterable<string>): import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
28
|
+
bringForward: (ids?: Iterable<string>) => import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
29
|
+
sendBackward: (ids?: Iterable<string>) => import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
30
|
+
bringToFront: (ids?: Iterable<string>) => import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
31
|
+
sendToBack: (ids?: Iterable<string>) => import("@pixerate/editor/canvas").CanvasNodeUpdate[];
|
|
32
|
+
lock: (ids?: Iterable<string>) => string[];
|
|
33
|
+
unlock: (ids?: Iterable<string>) => string[];
|
|
34
|
+
toggleLock(ids?: Iterable<string>): string[];
|
|
35
|
+
isLocked: (id: string) => boolean;
|
|
36
|
+
runAction(action: CanvasArrangeAction): boolean;
|
|
37
|
+
beginDrag(ids?: Iterable<string>): void;
|
|
38
|
+
drag(ids?: Iterable<string>): import("@pixerate/editor/canvas").SnapNodeDragResult | null;
|
|
39
|
+
snapPositionChanges<TChange extends import("@pixerate/editor/canvas").PositionChangeLike>(changes: TChange[]): TChange[];
|
|
40
|
+
endDrag(): void;
|
|
41
|
+
};
|
|
42
|
+
export type CanvasArrange<TNode extends CanvasNode = CanvasNode> = ReturnType<typeof createCanvasArrange<TNode>>;
|
|
43
|
+
export interface CanvasArrangeShortcutsOptions {
|
|
44
|
+
arrange: {
|
|
45
|
+
runAction: (action: CanvasArrangeAction) => boolean;
|
|
46
|
+
};
|
|
47
|
+
/** Scenes controller for PageDown / PageUp (next / previous scene). */
|
|
48
|
+
scenes?: {
|
|
49
|
+
next: () => unknown;
|
|
50
|
+
previous: () => unknown;
|
|
51
|
+
};
|
|
52
|
+
targetElement?: HTMLElement | Window;
|
|
53
|
+
bindings?: readonly ArrangeShortcutBinding[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Attaches the arrange keyboard shortcuts (see `DEFAULT_ARRANGE_SHORTCUTS`). Shortcuts are
|
|
57
|
+
* ignored while typing in inputs, textareas, contenteditable or ProseMirror editors.
|
|
58
|
+
*
|
|
59
|
+
* @returns A cleanup function removing the listener.
|
|
60
|
+
*/
|
|
61
|
+
export declare function createCanvasArrangeShortcuts(options: CanvasArrangeShortcutsOptions): () => void;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=createCanvasArrange.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCanvasArrange.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasArrange.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,SAAS,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CAChF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACrE,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACxE,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC;;;;;;;sBA2D65iC,CAAC;sBAAiE,CAAC;sBAAiE,CAAC;oBAA+D,CAAC;cAAyD,CAAC;gBAAiD,CAAC;;;;;;;;EAxCxvjC;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjH,MAAM,WAAW,6BAA6B;IAC7C,OAAO,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAA;KAAE,CAAC;IACjE,uEAAuE;IACvE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;IAC1D,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,IAAI,CAqB/F"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createCanvasArrangeController, matchArrangeShortcut } from '@pixerate/editor/canvas';
|
|
2
|
+
/**
|
|
3
|
+
* Headless Svelte 5 rune for Freeform-style arrangement: align, distribute, make same size,
|
|
4
|
+
* lock / unlock, layer order and smart guides with snap-to-shape while dragging.
|
|
5
|
+
*
|
|
6
|
+
* Actions act on `getSelectedIds()` (default: selected nodes) when called without ids and
|
|
7
|
+
* are recorded as single undoable steps when a `HistoryManager` is passed as `history`.
|
|
8
|
+
*
|
|
9
|
+
* Wire snapping to SvelteFlow with `onnodedragstart={() => arrange.beginDrag()}`,
|
|
10
|
+
* `onnodedrag={({ nodes }) => arrange.drag(nodes.map((n) => n.id))}` and
|
|
11
|
+
* `onnodedragstop={() => arrange.endDrag()}`, and render `arrange.guides` with
|
|
12
|
+
* `<CanvasGuidesLayer>`.
|
|
13
|
+
*/
|
|
14
|
+
export function createCanvasArrange(options) {
|
|
15
|
+
let guides = $state.raw([]);
|
|
16
|
+
const controller = createCanvasArrangeController({
|
|
17
|
+
...options,
|
|
18
|
+
onGuidesChange: (next) => {
|
|
19
|
+
guides = next;
|
|
20
|
+
options.onGuidesChange?.(next);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
...controller,
|
|
25
|
+
/** Guide segments (flow coordinates) for the active drag; empty otherwise. */
|
|
26
|
+
get guides() {
|
|
27
|
+
return guides;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Attaches the arrange keyboard shortcuts (see `DEFAULT_ARRANGE_SHORTCUTS`). Shortcuts are
|
|
33
|
+
* ignored while typing in inputs, textareas, contenteditable or ProseMirror editors.
|
|
34
|
+
*
|
|
35
|
+
* @returns A cleanup function removing the listener.
|
|
36
|
+
*/
|
|
37
|
+
export function createCanvasArrangeShortcuts(options) {
|
|
38
|
+
const target = options.targetElement ?? (typeof window !== 'undefined' ? window : null);
|
|
39
|
+
if (!target)
|
|
40
|
+
return () => { };
|
|
41
|
+
function handleKeyDown(event) {
|
|
42
|
+
const action = matchArrangeShortcut(event, options.bindings);
|
|
43
|
+
if (!action)
|
|
44
|
+
return;
|
|
45
|
+
let handled = false;
|
|
46
|
+
if (action === 'nextScene' || action === 'previousScene') {
|
|
47
|
+
if (options.scenes) {
|
|
48
|
+
options.scenes[action === 'nextScene' ? 'next' : 'previous']();
|
|
49
|
+
handled = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
handled = options.arrange.runAction(action);
|
|
54
|
+
}
|
|
55
|
+
if (handled)
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
}
|
|
58
|
+
target.addEventListener('keydown', handleKeyDown);
|
|
59
|
+
return () => target.removeEventListener('keydown', handleKeyDown);
|
|
60
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CanvasScenesStore, type CanvasScene, type CanvasScenesOptions, type CanvasViewport, type FitViewportOptions } from '@pixerate/editor/canvas';
|
|
2
|
+
import type { CanvasNode } from './types.js';
|
|
3
|
+
export interface CreateCanvasScenesOptions extends CanvasScenesOptions {
|
|
4
|
+
/** Reads the live viewport, used by `capture` / `recapture` (e.g. `useSvelteFlow().getViewport`). */
|
|
5
|
+
getViewport?: () => CanvasViewport;
|
|
6
|
+
/** Moves the canvas to a scene (e.g. `useSvelteFlow().setViewport`). */
|
|
7
|
+
setViewport?: (viewport: CanvasViewport, options?: {
|
|
8
|
+
duration?: number;
|
|
9
|
+
}) => void;
|
|
10
|
+
/** Transition duration passed to `setViewport` when showing a scene (default 300ms). */
|
|
11
|
+
duration?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Headless Svelte 5 rune for Freeform-style Scenes: named saved viewports with
|
|
15
|
+
* show next / previous, reorder, rename and JSON persistence. Wraps the framework-agnostic
|
|
16
|
+
* `CanvasScenesStore` from `@pixerate/editor/canvas`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createCanvasScenes(options?: CreateCanvasScenesOptions): {
|
|
19
|
+
store: CanvasScenesStore;
|
|
20
|
+
readonly scenes: readonly CanvasScene[];
|
|
21
|
+
readonly currentId: string | null;
|
|
22
|
+
readonly currentIndex: number;
|
|
23
|
+
readonly current: CanvasScene | null;
|
|
24
|
+
/** Saves the current viewport (or `viewport`) as a new scene. */
|
|
25
|
+
capture(name?: string, extra?: {
|
|
26
|
+
viewport?: CanvasViewport;
|
|
27
|
+
nodeIds?: string[];
|
|
28
|
+
index?: number;
|
|
29
|
+
}): CanvasScene;
|
|
30
|
+
/** Saves a scene framing the given nodes in a container of `size`. */
|
|
31
|
+
captureNodes(nodes: CanvasNode[], ids: string[], size: {
|
|
32
|
+
width: number;
|
|
33
|
+
height: number;
|
|
34
|
+
}, name?: string, fit?: FitViewportOptions): CanvasScene | undefined;
|
|
35
|
+
/** Replaces a scene's viewport with the live one. */
|
|
36
|
+
recapture(id: string): CanvasScene | undefined;
|
|
37
|
+
update: (id: string, patch: Partial<Omit<CanvasScene, "id">>) => CanvasScene | undefined;
|
|
38
|
+
rename: (id: string, name: string) => CanvasScene | undefined;
|
|
39
|
+
move: (id: string, toIndex: number) => void;
|
|
40
|
+
reorder: (ids: string[]) => void;
|
|
41
|
+
remove: (id: string) => void;
|
|
42
|
+
clear: () => void;
|
|
43
|
+
goTo: (id: string) => CanvasScene | undefined;
|
|
44
|
+
next: () => CanvasScene | undefined;
|
|
45
|
+
previous: () => CanvasScene | undefined;
|
|
46
|
+
toJSON: () => import("@pixerate/editor/canvas").SerializedCanvasScenes;
|
|
47
|
+
serialize: () => string;
|
|
48
|
+
load: (input: string | unknown) => void;
|
|
49
|
+
};
|
|
50
|
+
export type CanvasScenes = ReturnType<typeof createCanvasScenes>;
|
|
51
|
+
//# sourceMappingURL=createCanvasScenes.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCanvasScenes.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasScenes.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAEjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACrE,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,cAAc,CAAC;IACnC,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B;;;;;;IA0BxE,iEAAiE;mBAClD,MAAM,UAAS;QAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAK/F,sEAAsE;wBAE9D,UAAU,EAAE,OACd,MAAM,EAAE,QACP;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,SAChC,MAAM,QACP,kBAAkB;IAKzB,qDAAqD;kBACvC,MAAM;iBAIP,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC/C,MAAM,QAAQ,MAAM;eACtB,MAAM,WAAW,MAAM;mBACnB,MAAM,EAAE;iBACV,MAAM;;eAER,MAAM;;;;;kBAKH,MAAM,GAAG,OAAO;EAE/B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CanvasScenesStore, fitViewportToNodes } from '@pixerate/editor/canvas';
|
|
2
|
+
/**
|
|
3
|
+
* Headless Svelte 5 rune for Freeform-style Scenes: named saved viewports with
|
|
4
|
+
* show next / previous, reorder, rename and JSON persistence. Wraps the framework-agnostic
|
|
5
|
+
* `CanvasScenesStore` from `@pixerate/editor/canvas`.
|
|
6
|
+
*/
|
|
7
|
+
export function createCanvasScenes(options = {}) {
|
|
8
|
+
const store = new CanvasScenesStore(options);
|
|
9
|
+
let state = $state.raw(store.getState());
|
|
10
|
+
store.subscribe((next) => {
|
|
11
|
+
state = next;
|
|
12
|
+
});
|
|
13
|
+
const show = (scene) => {
|
|
14
|
+
if (scene)
|
|
15
|
+
options.setViewport?.(scene.viewport, { duration: options.duration ?? 300 });
|
|
16
|
+
return scene;
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
store,
|
|
20
|
+
get scenes() {
|
|
21
|
+
return state.scenes;
|
|
22
|
+
},
|
|
23
|
+
get currentId() {
|
|
24
|
+
return state.currentId;
|
|
25
|
+
},
|
|
26
|
+
get currentIndex() {
|
|
27
|
+
return state.currentIndex;
|
|
28
|
+
},
|
|
29
|
+
get current() {
|
|
30
|
+
return state.currentIndex === -1 ? null : state.scenes[state.currentIndex];
|
|
31
|
+
},
|
|
32
|
+
/** Saves the current viewport (or `viewport`) as a new scene. */
|
|
33
|
+
capture(name, extra = {}) {
|
|
34
|
+
const viewport = extra.viewport ?? options.getViewport?.();
|
|
35
|
+
if (!viewport)
|
|
36
|
+
throw new Error('[createCanvasScenes] capture() needs a viewport or a getViewport option.');
|
|
37
|
+
return store.add({ viewport, name, nodeIds: extra.nodeIds }, extra.index);
|
|
38
|
+
},
|
|
39
|
+
/** Saves a scene framing the given nodes in a container of `size`. */
|
|
40
|
+
captureNodes(nodes, ids, size, name, fit) {
|
|
41
|
+
const viewport = fitViewportToNodes(nodes, size, ids, fit);
|
|
42
|
+
return viewport ? store.add({ viewport, name, nodeIds: ids }) : undefined;
|
|
43
|
+
},
|
|
44
|
+
/** Replaces a scene's viewport with the live one. */
|
|
45
|
+
recapture(id) {
|
|
46
|
+
const viewport = options.getViewport?.();
|
|
47
|
+
return viewport ? store.update(id, { viewport }) : undefined;
|
|
48
|
+
},
|
|
49
|
+
update: (id, patch) => store.update(id, patch),
|
|
50
|
+
rename: (id, name) => store.rename(id, name),
|
|
51
|
+
move: (id, toIndex) => store.move(id, toIndex),
|
|
52
|
+
reorder: (ids) => store.reorder(ids),
|
|
53
|
+
remove: (id) => store.remove(id),
|
|
54
|
+
clear: () => store.clear(),
|
|
55
|
+
goTo: (id) => show(store.goTo(id)),
|
|
56
|
+
next: () => show(store.next()),
|
|
57
|
+
previous: () => show(store.previous()),
|
|
58
|
+
toJSON: () => store.toJSON(),
|
|
59
|
+
serialize: () => store.serialize(),
|
|
60
|
+
load: (input) => store.load(input)
|
|
61
|
+
};
|
|
62
|
+
}
|
package/dist/canvas/index.d.ts
CHANGED
|
@@ -14,5 +14,9 @@ export { getMarqueeSelectionPreset, handleDeselectOnEscape, type CanvasSelection
|
|
|
14
14
|
export { default as FloatingHorizontalScrollbar } from './FloatingHorizontalScrollbar.svelte';
|
|
15
15
|
export { default as AgentPresenceLayer } from './AgentPresenceLayer.svelte';
|
|
16
16
|
export { createStreamingCanvas, type CreateStreamingCanvasOptions } from './createStreamingCanvas.svelte.js';
|
|
17
|
+
export { createCanvasArrange, createCanvasArrangeShortcuts, type CanvasArrange, type CreateCanvasArrangeOptions, type CanvasArrangeShortcutsOptions } from './createCanvasArrange.svelte.js';
|
|
18
|
+
export { createCanvasScenes, type CanvasScenes, type CreateCanvasScenesOptions } from './createCanvasScenes.svelte.js';
|
|
19
|
+
export { default as CanvasGuidesLayer } from './CanvasGuidesLayer.svelte';
|
|
20
|
+
export { alignNodes, distributeNodes, matchSize, reorderNodes, applyNodeUpdates, invertNodeUpdates, lockNodes, unlockNodes, toggleLockNodes, isLocked, getNodeSize, getNodeRect, getAbsolutePosition, readStyleSize, withStyleSize, computeSnapGuides, createGuideIndex, createNodeGuideIndex, snapNodeDrag, findConnectorSnap, nearestHandlePositions, handlePoint, positionToSide, sideToPosition, oppositePosition, CONNECTION_LINE_TYPES, CanvasScenesStore, createCanvasScenesStore, parseCanvasScenes, fitViewportToRect, fitViewportToNodes, matchArrangeShortcut, DEFAULT_ARRANGE_SHORTCUTS, type AlignEdge, type DistributeAxis, type DistributeMode, type SizeDimension, type ZOrderOperation, type CanvasNodeUpdate, type GuideLine, type GuideIndex, type SnapGuidesOptions, type SnapResult, type ConnectorSnap, type ConnectorSnapTarget, type CanvasConnectionLineType, type CanvasScene, type CanvasScenesState, type CanvasViewport, type CanvasArrangeAction, type ArrangeShortcutBinding } from '@pixerate/editor/canvas';
|
|
17
21
|
export { realClock, ManualClock, layoutBounds, canvasHeight, estimateCanvasHeight, blendLayout, connectedOnly, type Clock, type CanvasHeightOptions } from '@pixerate/editor/canvas';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EACN,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACN,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,KAAK,4BAA4B,EACjC,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACN,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACN,qBAAqB,EACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACN,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,+BAA+B,EACpC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACN,uBAAuB,EACvB,gCAAgC,EAChC,2BAA2B,EAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACN,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACN,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACN,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAG9F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EACN,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACN,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"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"}
|
package/dist/canvas/index.js
CHANGED
|
@@ -30,5 +30,10 @@ export { default as FloatingHorizontalScrollbar } from './FloatingHorizontalScro
|
|
|
30
30
|
export { default as AgentPresenceLayer } from './AgentPresenceLayer.svelte';
|
|
31
31
|
// Streaming canvas rune
|
|
32
32
|
export { createStreamingCanvas } from './createStreamingCanvas.svelte.js';
|
|
33
|
+
// Arrangement (align / distribute / size / lock / z-order), smart guides and scenes
|
|
34
|
+
export { createCanvasArrange, createCanvasArrangeShortcuts } from './createCanvasArrange.svelte.js';
|
|
35
|
+
export { createCanvasScenes } from './createCanvasScenes.svelte.js';
|
|
36
|
+
export { default as CanvasGuidesLayer } from './CanvasGuidesLayer.svelte';
|
|
37
|
+
export { alignNodes, distributeNodes, matchSize, reorderNodes, applyNodeUpdates, invertNodeUpdates, lockNodes, unlockNodes, toggleLockNodes, isLocked, getNodeSize, getNodeRect, getAbsolutePosition, readStyleSize, withStyleSize, computeSnapGuides, createGuideIndex, createNodeGuideIndex, snapNodeDrag, findConnectorSnap, nearestHandlePositions, handlePoint, positionToSide, sideToPosition, oppositePosition, CONNECTION_LINE_TYPES, CanvasScenesStore, createCanvasScenesStore, parseCanvasScenes, fitViewportToRect, fitViewportToNodes, matchArrangeShortcut, DEFAULT_ARRANGE_SHORTCUTS } from '@pixerate/editor/canvas';
|
|
33
38
|
// Clock and view helpers from core
|
|
34
39
|
export { realClock, ManualClock, layoutBounds, canvasHeight, estimateCanvasHeight, blendLayout, connectedOnly } from '@pixerate/editor/canvas';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/core";
|
|
2
|
+
import { type FileImportControllerOptions } from "@pixerate/editor";
|
|
3
|
+
/**
|
|
4
|
+
* Imports markdown, HTML, plain-text and RTF files (or anything registered
|
|
5
|
+
* with `registerImportAdapter` for the `document` target) into an editor,
|
|
6
|
+
* with reactive `isImporting` / `error` state. Pair it with
|
|
7
|
+
* `<EditableTextNodeEditor fileImport />` to also accept dropped files.
|
|
8
|
+
*
|
|
9
|
+
* `getEditor` is read on every import, so pass `() => editor` for a
|
|
10
|
+
* `bind:editor` value.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createFileImport(getEditor: () => Editor | null | undefined, options?: FileImportControllerOptions): {
|
|
13
|
+
readonly isImporting: boolean;
|
|
14
|
+
readonly error: Error | null;
|
|
15
|
+
readonly lastOutcomes: import("@pixerate/editor").ImportOutcome<import("@pixerate/editor").DocumentImport>[];
|
|
16
|
+
/** Value for `<input type="file" accept={…}>`. */
|
|
17
|
+
readonly accept: string;
|
|
18
|
+
/** Opens the browser file picker and imports the chosen files at the selection. */
|
|
19
|
+
openFilePicker: () => Promise<import("@pixerate/editor").ImportOutcome<import("@pixerate/editor").DocumentImport>[]>;
|
|
20
|
+
/** Imports files (e.g. from your own `<input>` or drop zone) at `at` or the selection. */
|
|
21
|
+
importFiles: (files: Iterable<import("@pixerate/editor").FileLike> | ArrayLike<import("@pixerate/editor").FileLike>, at?: number) => Promise<import("@pixerate/editor").ImportOutcome<import("@pixerate/editor").DocumentImport>[]>;
|
|
22
|
+
setOptions: (next: FileImportControllerOptions) => void;
|
|
23
|
+
};
|
|
24
|
+
export type FileImportHandle = ReturnType<typeof createFileImport>;
|
|
25
|
+
//# sourceMappingURL=fileImport.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileImport.svelte.d.ts","sourceRoot":"","sources":["../src/fileImport.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAEL,KAAK,2BAA2B,EAEjC,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,OAAO,GAAE,2BAAgC;;;;IAqBvC,kDAAkD;;IAIlD,mFAAmF;;IAEnF,0FAA0F;;uBAEvE,2BAA2B;EAEjD;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FileImportController, } from "@pixerate/editor";
|
|
2
|
+
/**
|
|
3
|
+
* Imports markdown, HTML, plain-text and RTF files (or anything registered
|
|
4
|
+
* with `registerImportAdapter` for the `document` target) into an editor,
|
|
5
|
+
* with reactive `isImporting` / `error` state. Pair it with
|
|
6
|
+
* `<EditableTextNodeEditor fileImport />` to also accept dropped files.
|
|
7
|
+
*
|
|
8
|
+
* `getEditor` is read on every import, so pass `() => editor` for a
|
|
9
|
+
* `bind:editor` value.
|
|
10
|
+
*/
|
|
11
|
+
export function createFileImport(getEditor, options = {}) {
|
|
12
|
+
const controller = new FileImportController(() => {
|
|
13
|
+
const editor = getEditor();
|
|
14
|
+
return editor && !editor.isDestroyed ? editor : null;
|
|
15
|
+
}, options);
|
|
16
|
+
let state = $state(controller.getState());
|
|
17
|
+
controller.subscribe((next) => {
|
|
18
|
+
state = next;
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
get isImporting() {
|
|
22
|
+
return state.isImporting;
|
|
23
|
+
},
|
|
24
|
+
get error() {
|
|
25
|
+
return state.error;
|
|
26
|
+
},
|
|
27
|
+
get lastOutcomes() {
|
|
28
|
+
return state.lastOutcomes;
|
|
29
|
+
},
|
|
30
|
+
/** Value for `<input type="file" accept={…}>`. */
|
|
31
|
+
get accept() {
|
|
32
|
+
return controller.accept;
|
|
33
|
+
},
|
|
34
|
+
/** Opens the browser file picker and imports the chosen files at the selection. */
|
|
35
|
+
openFilePicker: controller.openFilePicker,
|
|
36
|
+
/** Imports files (e.g. from your own `<input>` or drop zone) at `at` or the selection. */
|
|
37
|
+
importFiles: controller.importFiles,
|
|
38
|
+
setOptions: (next) => controller.setOptions(next),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHistoryShortcuts.d.ts","sourceRoot":"","sources":["../../src/history/createHistoryShortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createHistoryShortcuts.d.ts","sourceRoot":"","sources":["../../src/history/createHistoryShortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,uBAA4B,GACpC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAqEzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HistoryManager, HistoryState, Command, HistoryManagerOptions } from "@pixerate/editor";
|
|
1
|
+
import { HistoryManager, HistoryState, Command, HistoryManagerOptions } from "@pixerate/editor/history";
|
|
2
2
|
export interface SvelteHistory extends HistoryState {
|
|
3
3
|
readonly manager: HistoryManager;
|
|
4
4
|
undo(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.svelte.d.ts","sourceRoot":"","sources":["../../src/history/history.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,OAAO,EAEP,qBAAqB,EACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"history.svelte.d.ts","sourceRoot":"","sources":["../../src/history/history.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,OAAO,EAEP,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,OAAO,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,CAAC,EAAE,cAAc,GAAG,qBAAqB,GACxD,aAAa,CA2Cf"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,19 +2,30 @@ import type { ComponentProps } from "svelte";
|
|
|
2
2
|
import type EditableTextNodeEditorComponent from "./EditableTextNodeEditor.svelte";
|
|
3
3
|
import type BubbleMenuComponent from "./BubbleMenu.svelte";
|
|
4
4
|
import type TemplateRendererComponent from "./TemplateRenderer.svelte";
|
|
5
|
+
import type VariableFormComponent from "./VariableForm.svelte";
|
|
6
|
+
import type OutlinePanelComponent from "./OutlinePanel.svelte";
|
|
5
7
|
export * from "./editor.svelte.js";
|
|
6
8
|
export * from "./navigationGuard.js";
|
|
7
9
|
export * from "./createNavigationGuard.svelte.js";
|
|
8
10
|
export * from "./history/index.js";
|
|
11
|
+
export * from "./fileImport.svelte.js";
|
|
12
|
+
export * from "./agentTools.svelte.js";
|
|
13
|
+
export * from "./outline.svelte.js";
|
|
9
14
|
export { DirtyTracker, createDirtyTracker, defaultIsEqual, HistoryManager, createHistoryManager, } from "@pixerate/editor";
|
|
10
15
|
export type { DirtyTrackerOptions, Command, HistoryState, HistoryManagerOptions, } from "@pixerate/editor";
|
|
11
16
|
export type EditableTextNodeEditorProps = ComponentProps<typeof EditableTextNodeEditorComponent>;
|
|
12
17
|
export type BubbleMenuProps = ComponentProps<typeof BubbleMenuComponent>;
|
|
13
18
|
export type TemplateRendererProps = ComponentProps<typeof TemplateRendererComponent>;
|
|
19
|
+
export type VariableFormProps = ComponentProps<typeof VariableFormComponent>;
|
|
14
20
|
export { default as EditableTextNodeEditor } from "./EditableTextNodeEditor.svelte";
|
|
15
21
|
export { default as BubbleMenu } from "./BubbleMenu.svelte";
|
|
16
22
|
export { default as TemplateRenderer } from "./TemplateRenderer.svelte";
|
|
23
|
+
export { default as VariableForm } from "./VariableForm.svelte";
|
|
24
|
+
export type OutlinePanelProps = ComponentProps<typeof OutlinePanelComponent>;
|
|
25
|
+
export { default as OutlinePanel } from "./OutlinePanel.svelte";
|
|
17
26
|
export type { Template, TemplateVersion, Token, TokenType, ColorGradient, RichTextPresetOptions, ImageOptions, } from "@pixerate/editor";
|
|
27
|
+
export type { PromptValues, PromptDiagnostic, VariableFormField, } from "@pixerate/editor";
|
|
18
28
|
export * from "./spreadsheet/index.js";
|
|
19
29
|
export * from "./image-editor/index.js";
|
|
30
|
+
export * from "./review/index.js";
|
|
20
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,KAAK,+BAA+B,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,KAAK,+BAA+B,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAE/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,2BAA2B,GAAG,cAAc,CACtD,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAChD,OAAO,yBAAyB,CACjC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhE,YAAY,EACV,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,9 +2,15 @@ export * from "./editor.svelte.js";
|
|
|
2
2
|
export * from "./navigationGuard.js";
|
|
3
3
|
export * from "./createNavigationGuard.svelte.js";
|
|
4
4
|
export * from "./history/index.js";
|
|
5
|
+
export * from "./fileImport.svelte.js";
|
|
6
|
+
export * from "./agentTools.svelte.js";
|
|
7
|
+
export * from "./outline.svelte.js";
|
|
5
8
|
export { DirtyTracker, createDirtyTracker, defaultIsEqual, HistoryManager, createHistoryManager, } from "@pixerate/editor";
|
|
6
9
|
export { default as EditableTextNodeEditor } from "./EditableTextNodeEditor.svelte";
|
|
7
10
|
export { default as BubbleMenu } from "./BubbleMenu.svelte";
|
|
8
11
|
export { default as TemplateRenderer } from "./TemplateRenderer.svelte";
|
|
12
|
+
export { default as VariableForm } from "./VariableForm.svelte";
|
|
13
|
+
export { default as OutlinePanel } from "./OutlinePanel.svelte";
|
|
9
14
|
export * from "./spreadsheet/index.js";
|
|
10
15
|
export * from "./image-editor/index.js";
|
|
16
|
+
export * from "./review/index.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/core";
|
|
2
|
+
import { type OutlineSnapshot } from "@pixerate/editor";
|
|
3
|
+
export type { OutlineHeading, OutlineSnapshot, OutlineTreeItem } from "@pixerate/editor";
|
|
4
|
+
/**
|
|
5
|
+
* Reactive heading outline for Svelte 5 (the counterpart of React's
|
|
6
|
+
* `useOutline`). `current` holds the headings (flat and nested) and the id of
|
|
7
|
+
* the heading whose section contains the selection; it is replaced only when
|
|
8
|
+
* those change. Call `destroy()` when done (or create it inside a component,
|
|
9
|
+
* where it is cleaned up with the component's effects).
|
|
10
|
+
*
|
|
11
|
+
* Install the `Outline` extension (`richTextOptions: { outline: true }`) for
|
|
12
|
+
* stable heading ids; without it, headings are still listed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createOutline(editor: Editor | null | undefined): {
|
|
15
|
+
readonly current: OutlineSnapshot;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=outline.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline.svelte.d.ts","sourceRoot":"","sources":["../src/outline.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;;;EAgB9D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createOutlineStore } from "@pixerate/editor";
|
|
2
|
+
/**
|
|
3
|
+
* Reactive heading outline for Svelte 5 (the counterpart of React's
|
|
4
|
+
* `useOutline`). `current` holds the headings (flat and nested) and the id of
|
|
5
|
+
* the heading whose section contains the selection; it is replaced only when
|
|
6
|
+
* those change. Call `destroy()` when done (or create it inside a component,
|
|
7
|
+
* where it is cleaned up with the component's effects).
|
|
8
|
+
*
|
|
9
|
+
* Install the `Outline` extension (`richTextOptions: { outline: true }`) for
|
|
10
|
+
* stable heading ids; without it, headings are still listed.
|
|
11
|
+
*/
|
|
12
|
+
export function createOutline(editor) {
|
|
13
|
+
const store = createOutlineStore(editor);
|
|
14
|
+
let current = $state.raw(store.getSnapshot());
|
|
15
|
+
const unsubscribe = store.subscribe(() => {
|
|
16
|
+
current = store.getSnapshot();
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
get current() {
|
|
20
|
+
return current;
|
|
21
|
+
},
|
|
22
|
+
destroy() {
|
|
23
|
+
unsubscribe();
|
|
24
|
+
store.destroy();
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Editor } from "@tiptap/core";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
editor?: Editor | null;
|
|
6
|
+
class?: string;
|
|
7
|
+
children?: import("svelte").Snippet;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
editor = null,
|
|
12
|
+
class: className = "rounded px-2 py-1 text-xs text-popover-foreground hover:bg-muted",
|
|
13
|
+
children,
|
|
14
|
+
}: Props = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<!--
|
|
18
|
+
Adds a draft comment on the selection; drop it into a `BubbleMenu`. The
|
|
19
|
+
draft is completed in `CommentsPanel`.
|
|
20
|
+
-->
|
|
21
|
+
<button
|
|
22
|
+
type="button"
|
|
23
|
+
class={className}
|
|
24
|
+
disabled={!editor}
|
|
25
|
+
onclick={() => editor?.chain().focus().addComment().run()}
|
|
26
|
+
>
|
|
27
|
+
{#if children}
|
|
28
|
+
{@render children()}
|
|
29
|
+
{:else}
|
|
30
|
+
Comment
|
|
31
|
+
{/if}
|
|
32
|
+
</button>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/core";
|
|
2
|
+
interface Props {
|
|
3
|
+
editor?: Editor | null;
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: import("svelte").Snippet;
|
|
6
|
+
}
|
|
7
|
+
declare const CommentButton: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type CommentButton = ReturnType<typeof CommentButton>;
|
|
9
|
+
export default CommentButton;
|
|
10
|
+
//# sourceMappingURL=CommentButton.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentButton.svelte.d.ts","sourceRoot":"","sources":["../../src/review/CommentButton.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGzC,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;CACrC;AAqBH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|